我读过,我可以设置JDBC瘦客户端连接字符串,以便我的Java程序将尝试连接到第一个数据库,然后,如果有问题,它将尝试连接到第二个数据库。JDBC Oracle瘦客户端故障转移到第二个数据库
但是这在实践中没有发生。
如果我用下面的字符串:
jdbc:oracle:thin:@(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = site1)
(PORT = 1521)
)
(ADDRESS =
(PROTOCOL = TCP)
(HOST = site2)
(PORT = 1521)
)
)
(FAILOVER=ON)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
(RETRIES=20)
(DELAY=3)
)
(LOAD_BALANCE = OFF)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYDB)
)
)
现在我知道了site1
是下来site2
到了。如果我在我的列表中指定了site2
第一个,那么我会得到一个连接(就像我期望的那样,如果我只是试图连接到site2
)。然而,当我把site1
首先我得到同样的错误,如果我试图直接连接到site1
- 这就是:
java.util.concurrent.ExecutionException:
java.lang.RuntimeException:
java.sql.SQLException:
ORA-01033: ORACLE initialization or shutdown in progress
是否Oracle瘦客户要求的第一个数据库将在连接时,只有故障转移如果有什么工作连接过程中出现错误?我想要的是,如果与第一台服务器的连接失败(我可以使用try { ... } catch { ... }
应用程序逻辑,但希望驱动程序为我处理细节),应用程序可以尝试下一台服务器。