最近负责的项目要迁数据库,遇到了oracle数据库双结点配置的问题,将涉及到的TNS和RAC集群相关的问题总结了一下。
一、oracle数据库双结点配置:
xml配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- oracle -->
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ip1)(PORT = 端口号))(ADDRESS = (PROTOCOL = TCP)(HOST = ip2)(PORT = 端口号))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = 服务名)))"/>
<property name="user" value="jnetcms"></property>
<property name="password" value="tiger"></property>
<property name="maxPoolSize" value="50"></property>
<property name="minPoolSize" value="10"></property>
<property name="initialPoolSize" value="10"></property>
<property name="acquireIncrement" value="5"></property>
<property name="maxIdleTime" value="30"></property>
<property name="checkoutTimeout" value="30000"></property>
<property name="idleConnectionTestPeriod" value="30"></property>
<property name="maxStatements" value="3000"></property>
</bean>
</beans>
properties属性文件配置示例:jdbc.url=jdbc\:oracle\:thin\:@(DESCRIPTION\=(ADDRESS\=(PROTOCOL\=\TCP)(HOST\=\ip1)(PORT\=端口号))(ADDRESS\=(PROTOCOL\=TCP)(HOST\=ip2)(PORT\=端口号))(CONNECT_DATA\=(SERVER\=DEDICATED)(SERVICE_NAME\=服务名)))
jdbc.username=jnetcms
jdbc.password=tiger
dbcp.maxIdle=30
dbcp.maxActive=50
dbcp.maxWait=60000
dbcp.removeAbandonedTimeout =180
dbcp.removeAbandoned =true
二、JDBC使用TNS连接多结点oracle:--TNS串
jdbc:oracle:thin:@
(description=
(ADDRESS_LIST =
(address=(protocol=tcp)(host=ip1)(port=端口号))
(address=(protocol=tcp)(host=ip2)(port=端口号))
(address=(protocol=tcp)(host=ip3)(port=端口号))
(load_balance=yes)//表示是否负载均衡
)
(connect_data =
//(server = dedicated)//该参数表示专用服务器模式
(service_name=ORACMS)//要操作数据库的服务名
(failover_mode =//连接失败后处理的方式
(type=session)//TYPE =SESSION表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL 需要重新执行。
(method=basic)//表示初始连接就连接一个接点
(retries=5)//连接失败后重试连接的次数
(delay=15)//连接失败后重试的延迟时间(以秒为单位)
)
)
)
-- 要点说明
1、load_balance该参数值为yes就是采用负载均衡模式连接,为no就是采用非负载均衡模式
2、method该参数值为basic就是表示初始连接只有一个连接节点,为preconnect就是表示初始连接所有的rac接点
3、server 参数值 dedicated表示专用服务器模式,没什么实际用处,可以去掉。
版权声明:本文为lmb55原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。