Oracle数据库多结点相关配置

最近负责的项目要迁数据库,遇到了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版权协议,转载请附上原文出处链接和本声明。