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:@,可以配置tnsnames.ora然后使用TNSName别名,tnsnames.ora配置并不是必须的,不使用TNSNAME别名的情况下连接串写法如下(以某生产库为例):
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的配置: