Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍线上的生产环境远程连接Oracle数据库的方法和注意事项,并通过示例来说明,接下来我们就开始介绍。
Oracle数据库常见连接方式主要有如下两类:
1、Oracle TNS:TNS(transparence Network Substrate透明网络底层)是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,如果通过TNS连接Oracle,那么客户端必须安装Oracle client程序。
2、JDBC:是一种针对Java语言的数据库连接,全称Java Database Connectivity。主要是用来规范客户端如何访问数据库的应用程序接口,并支持增删改查等API接口。如果通过JDBC连接Oracle,需要安装Java JDK环境及ojdbcX.jar驱动包。不依赖Oracle client程序。
JDBC连接串配置一般有如下三种方式:
使用service_name,配置方式:jdbc:oracle:thin:@//
使用SID,配置方式:jdbc:oracle:thin:@
使用SID,配置方式:jdbc:oracle:thin:@
LDAP是轻量目录访问协议,英文全称是LightweightDirectory AccessProtocol,目录服务是一种特殊的数据库系统,以树状的层次结构来存储数据,适用于多读少写场景。LDAP本身并不支持连接数据库,而是用来访问解析存储在LDAP中的数据库连接配置信息。使用LDAP的优点是:针对数量不断增加的目录信息实现统一管理,操作简单易于维护,支持在任何计算机平台上都很容易访问LDAP目录。
针对生产环境特点,梳理应用连接oracle数据库的规范要求如下:
不推荐配置使用scan_ip,原因是scan_ip会根据节点连接数和负载情况动态解析分配会话连接的节点,可能会导致GC争用,影响数据库性能。
统一要求使用虚IP连接数据库。
推荐使用FAILOVER故障转移配置。
Java程序可以通过OCI和Thin两种方式访问ORACLE数据库。
1、OCI是一种胖客户端的连接方式,客户端通过原生java方法调用clibrary(即OCI),一般而言采用这种方式需要安装和配置oracle客户端环境。
配置说明:
(1)url=jdbc:oracle:oci:@
url=jdbc:oracle:oci:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
(2)JDBC-OCI支持TAF,采用这种方式可以实现failover,当前连接的节点宕机时,连接的会话会自动进行故障转移而不会断开。
推荐配置样例:
程序中使用连接串样例:
配置文件:
配置文件中连接串的配置示例:
优先连节点1的配置:
url=jdbc:oracle:oci:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
优先连节点2的配置:
url=jdbc:oracle:oci:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
2、JDBCThin驱动程序方式连接oracle数据库时,是纯java实现tcp/ip的c/s通信,不需要完整安装Oracle客户端软件,以linux.x64+oracle11g为例,只需要下载instantclient-basic-linux.x64-11.2.0.4.0.zip并使用其中的ojdbc6.jar等驱动文件,同时安装JDK(建议1.6以上)。
配置说明:
(1)url=jdbc:oracle:thin:@
url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
(2)oracle数据库10.2.0.1版本开始支持TNSName,尽管JDBC-THIN不支持TAF,但这种写法使用很方便,当前连接的节点宕机时,客户端程序重启或客户端程序自动重连时能很快连到另外一个节点。
推荐配置样例:
程序中使用连接串样例:
配置文件:
配置文件中连接串的配置示例:
优先连节点1的配置:
url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
优先连节点2的配置:
url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(LOAD_BALANCE = off)(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.31)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.30)(PORT = 1521)) )(CONNECT_DATA = (service_name = dbsnc) (FAILOVER_MODE =(type = session) (method = basic)(retries = 60)(delay = 5)))) |
Weblogic连接oracle数据库可以只依赖JDBC+oracle驱动包,此配置不需要安装oracle客户端。推荐使用Weblogic多数据源方式来实现failover,与Weblogic多数据源配置样例(具体前台配置可参考多数据源+LDAP):
1.先配置2个单数据源,jdbc连接串推荐使用数据库的虚IP
数据源1- dbsnc1:jdbc:oracle:thin@192.168.21.30/dbsnc 数据源2- dbsnc2:jdbc:oracle:thin@192.168.21.31/dbsnc |
2、配置多数据源dbsnc,选中dbsnc1和dbsnc2两个一般数据源。
Weblogic连接oracle数据库可以只依赖JDBC+oracle驱动包,此配置不需要安装oracle客户端。推荐使用Weblogic多数据源方式来实现failover,与Weblogic多数据源配置样例:
1.先配置2个单数据源,jdbc连接串推荐使用LDAP
jdbc:oracle:thin:@ldap://192.125.50.245:3060/dbsnc1,cn=OracleContext,dc=chinashsnc,dc=com ldap://192.125.50.246:3060/dbsnc1,cn=OracleContext,dc=chinashsnc,dc=com |
jdbc:oracle:thin:@ldap://192.125.50.245:3060/dbsnc2,cn=OracleContext,dc=chinashsnc,dc=com ldap://192.125.50.246:3060/dbsnc2,cn=OracleContext,dc=chinashsnc,dc=com |
2.配置多数据源,选中前面配置的2个单数据源:
通过tuxedo中间件连接oracle数据库可以使用TNS方式,需要安装oracle客户端。
以某线上生产库为例:
(1)、如下在oracle客户端中sqlnet.ora配置优先使用TNS:
在oracle客户端中sqlnet.ora配置优先使用TNS NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME,ONAMES) |
(2)、在$ORACLE_HOME/network/admin/tnsnames.ora文件中添加对应TNS串配置:
优先连节点1的配置(dbsnc1_failover):
dbsnc1_failover = |
优先连节点2的配置(dbsnc2_failover):
dbsnc2_failover = ) |
(3)、使用tnsping命令测试数据库连接,可以看到使用TNS解析并连接成功。
(4)、使用tmloadcf命令更新tuxedo数据源配置,注意将SqlNet参数值修改为TNS中已配置好的数据源名称,如下:
OPENINFO="Oracle_XA:Oracle_XA+acc=P/USERNAME/PASSWORD+SesTm=150+LogDir=.+SqlNet=dbsnc1_failover+Loose_Coupling=true" |
通过tuxedo中间件连接oracle数据库时,如有搭建LDAP服务器,推荐使用LDAP进行域名解析。
以某线上生产库为例:
(1)、如下在oracle客户端中sqlnet.ora配置优先使用ldap:
在oracle客户端中sqlnet.ora配置优先使用TNS NAMES.DIRECTORY_PATH=(LDAP,TNSNAMES,HOSTNAME,ONAMES) |
同时创建ldap.ora文件并添加LDAP服务器配置
(2)、在LDAP服务器(192.125.50.245,192.125.50.246)中添加对应LDAP连接串配置:
优先连节点1的配置(dbsnc1_failover):
# dbsnc1_failover, OracleContext, chinashsnc.com dn: cn=dbsnc1_failover,cn=OracleContext,dc=chinashsnc,dc=com cn: dbsnc1_failover objectclass: top objectclass: orclNetService orclnetdescstring: (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.30)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.31)(PORT=1521)))(CONNECT_DATA=(service_name=dbsnc)(FAILOVER_MODE=(type=session)(method=basic)(retries=180)(delay=5)))) |
优先连节点2的配置(dbsnc2_failover):
# dbsnc2_failover, OracleContext, chinashsnc.com dn: cn=dbsnc2_failover,cn=OracleContext,dc=chinashsnc,dc=com cn: dbsnc2_failover objectclass: top objectclass: orclNetService orclnetdescstring: (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.31)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.30)(PORT=1521)))(CONNECT_DATA=(service_name=dbsnc)(FAILOVER_MODE=(type=session)(method=basic)(retries=180)(delay=5)))) |
(3)、使用tnsping命令测试数据库连接,可以看到使用LDAP解析并连接成功。
(4)、使用tmloadcf命令更新tuxedo数据源配置,注意将SqlNet参数值修改为LDAP中已配置好的数据源名称,如下:
OPENINFO="Oracle_XA:Oracle_XA+acc=P/USERNAME/PASSWORD+SesTm=150+LogDir=.+SqlNet=dbsnc1_failover+Loose_Coupling=true" |
(5)、使用tmadm-g命令可以查看当前tuxedo已配置的服务。
Shell脚本连接oracle数据库一般可通过oracle数据库自带的sqlplus工具,使用灵活方便,需要依赖于客户端上已安装oracle客户端。
1,配置说明:
(1)安装配置oracle客户端,设置环境变量;
(2)oracle客户端tnsnames.ora文件中连接串配置为failover方式,tnsnames位置:$ORACLE_HOME/network/admin/tnsnames.ora
(3)sqlplus用户名/密码@“tnsname中的别名”的方式进行连接时,客户端需要配置tnsname中的别名。
2,推荐配置样例:
Shell脚本中连接实例(数据库用户名,密码,tnsname中的别名根据实际情况填写):
tnsnames.ora文件中连接串的配置示例(failover):
优先连节点1的配置(dbsnc1_failover):
dbsnc1_failover = |
优先连节点2的配置(dbsnc2_failover):
dbsnc2_failover = |
注:tnsnames.ora配置并不是必须的,不使用TNSNAME别名的情况下写法如下:
sqlplus dbauser/********@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.30)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.31)(PORT=1521)))(CONNECT_DATA=(service_name=dbsnc)(FAILOVER_MODE=(type=session)(method=basic)(retries=180)(delay=5)))) |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130034.html
摘要:响应行由协议,状态码,状态码的文本描述组成,他们之间使用空格隔开。状态码的文本描述状态码描述说明表示客户端请求成功。 简介 在1990年,HTTP就成为WWW的支撑协议。当时由其创始人WWW之父蒂姆·贝纳斯·李(TimBemers—Lee)提出,随后WWW联盟(WWW Consortium)成立,组织了IETE(Internet Engineering Task Force)小组进一步...
摘要:学编程真的不是一件容易的事不管你多喜欢或是多会编程,在学习和解决问题上总会碰到障碍。熟练掌握核心内容,特别是和多线程初步具备面向对象设计和编程的能力掌握基本的优化策略。 学Java编程真的不是一件容易的事,不管你多喜欢或是多会Java编程,在学习和解决问题上总会碰到障碍。工作的时间越久就越能明白这个道理。不过这倒是一个让人进步的机会,因为你要一直不断的学习才能很好的解决你面前的难题...
摘要:的运行状态是指什么运行是指整个负载均衡的状态,只要后端服务器有一台存活,负载均衡还是运行状态。需注意的是,后端状态由负载均衡健康检查确定。轮询算法能否使所有服务节点请求数均衡负载均衡的轮询算法是针对连接的。ULB的会话保持是如何实现的?请求代理请求代理模式下(HTTP、HTTPS),会话保持功能是利用cookie实现的。ULB会向源端写cookie,并根据请求带有的cookie信息,直接将请...
摘要:今天,我们就离大厂更近一点,共同学习阿里这份阿里巴巴集团安全测试规范阿里巴巴集团安全测试规范阿里巴巴集团安全测试规范背景简介为了规避安全风险规范代码的安全开发,以及如何系统的进行安全性测试,目前缺少相应的理论和方法支撑。 很多人都知道,在学校学的技术,初创公司的技术,外包公司的技术,自研公司...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4099·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3594·2023-01-11 13:20