我们开发的一个系统,用JDBC方式连接Oracle9i数据库. 并且存在两个oracle数据库(分别安装再两台服务器上,可以认为是完全独立的两个oracle数据库).其中一个为Primary database,另一个为secondary database. 再正常情况下,当请求到来时,系统会去访问primary database完成处理.只有当primary db出现故障(比如primary db所在机器网线被拔掉等),系统才会去访问secondary db进行处理.有点类似于"首选DNS,备选DNS"的方式. 现在遇到的问题是:例如我在将primary db所在机器网线被拔掉后,JDBC连接过了很长时间才超时,此时对请求的处理已经没有什么意义了.我们希望在这种情况下,很快能够捕捉到primary db的错误,从而在较短的时间内去访问secondary db.请问有什么样的方式可以做到. 知道的朋友希望能够给出详细的设置步骤和参数以及调用的api. 谢谢
客户端tnsnames.ora配置如下
RAC =
(DESCRIPTION =
(enable=broken)
(LOAD_BALANCE=ON)
(FAILOVER=ON)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(failover_mode=(type=select)(method=basic)(retries=20)(delay=10))
)
)
说实在的,RAC不太好做,比较麻烦.
程序里起个线程实时监测到Promary database的网络,
Runtime.getRuntime().exec ("cmd /c start tnsping ..."),用inputStream取得返回值.
后面的就不说了...