1)JDBC连接的配置方式
,既然数据库本身已经支持了RAC,那么只要在JDBC连接字符串中将RAC的配置加上去即可, 根据资料和目前的业务需求,我们的针对HOST=10.87.25.37这台主机的数据库实例的JDBC连接字符串应该这样配置
URL="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.37)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.38)(PORT=1521))
(HOST=10.87.25.39)(PORT=1521))
(FAILOVER=on)(LOAD_BALANCE=off))
(CONNECT_DATA= (SERVICE_NAME=bidwb)))"
这个连接配置表示只支持failover,不支持loadbalance.根据蓝色字符串可以表示.即按照顺序,使用该JDBC字符串获取的连接,将根据配置的主机的先后顺序,依次进行failover
即如果在10.87.25.37数据库实例不能被访问,那么就转到10.87.25.38执行,如果10.87.25.38也数据库实例不能被访问,那么就转到10.87.25.39执行
同理
对于HOST=10.87.25.38这台主机的数据库实例的JDBC连接字符串应该这样配置
URL="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.38)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.39)(PORT=1521))
(HOST=10.87.25.37)(PORT=1521))
(FAILOVER=on)(LOAD_BALANCE=off))
(CONNECT_DATA= (SERVICE_NAME=bidwb)))"
对于HOST=10.87.25.39这台主机的数据库实例的JDBC连接字符串应该这样配置
URL="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.39)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)
(HOST=10.87.25.37)(PORT=1521))
(HOST=10.87.25.38)(PORT=1521))
(FAILOVER=on)(LOAD_BALANCE=off))
(CONNECT_DATA= (SERVICE_NAME=bidwb)))"
即只是各个Host的顺序不同
2)本地服务名连接的配置方式
对于HOST=10.87.25.37这台主机的数据库实例的本地服务名应该这样配置
37bidwb =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.37)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.38)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.39)(PORT = 1521))
(FAILOVER = on)
(LOAD_BALANCE = off)
)
(CONNECT_DATA= (SERVICE_NAME = bidwb))
)
对于HOST=10.87.25.38这台主机的数据库实例的本地服务名应该这样配置
37bidwb =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.38)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.39)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.37)(PORT = 1521))
(FAILOVER = on)
(LOAD_BALANCE =off)
)
(CONNECT_DATA= (SERVICE_NAME = bidwb))
)
对于HOST=10.87.25.39这台主机的数据库实例的本地服务名应该这样配置
37bidwb =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.39)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.37)(PORT = 1521))
(ADDRESS= (PROTOCOL = TCP)(HOST = 10.87.25.38)(PORT = 1521))
(FAILOVER = on)
(LOAD_BALANCE = off)
)
(CONNECT_DATA= (SERVICE_NAME =bidwb))
)
配置方式与JDBC连接字符串大同小异
配置也表示只支持failover,不支持loadbalance.根据蓝色字符串可以表示.即按照顺序,使用该JDBC字符串获取的连接,将根据配置的主机的先后顺序,依次进行failover.
测试方式也应该分为两种,一种是测试JDBC连接字符串,一种是测试本地服务名.
测试JDBC连接字符串可以通过存储过程任务来执行,这也是我们最初的测试目标.
我们可以通过关闭数据库监听的方式,看是否能够自动地failover.,例如一个存储过程本来是
在37 Oracle上执行,现在关闭37 Oracle的监听,测试该存储过程仍否能够正常执行.
一种是测试本地连接字符串,这种应该没问题,因为是oracle本身的客户端来支持,可以通过
OCI抽取或Oracle装载来测试,测试方式与上类似