首页 > 解决方案 > 在 Oracle jdbc 驱动程序中为透明应用程序故障转移注册回调

问题描述

在我的应用程序中,我通过在创建连接时在数据库字符串 url 中提供两个数据库服务器名称来创建连接。据我了解,如果主数据库发生故障,将建立与辅助数据库的连接(透明)。这是否称为透明应用程序故障转移 (TAF)?

基本上故障转移是在单个连接级别处理的,对吧?

如何注册回调以在发生故障转移时获得通知?

我正在寻找 OracleDataSource 级别或 OracleConnection 级别的特定 API。有人可以提供几行示例代码吗?

DB 版本 12c、jdbc8 和 oracle 瘦驱动程序。

标签: javaoraclejdbcoracle12cojdbc

解决方案


有几种方法可以处理故障转移。此外,这取决于您是只想处理计划内维护还是计划外停机。(a) 您可以使用通用连接池 (UCP) 来处理计划内和计划外的中断。查看此白皮书。(b) 如果您想构建自己的逻辑,那么您可以使用simplefan.jar在数据库实例 UP/DOWN 事件发生时获取通知。

如果您正在寻找注册 TAF 回调的 API,请点击此处。请注意,这些仅与 OCI 和 JDBC-OCI 驱动程序一起使用。

oracle.jdbc.OracleConnection --
    public void registerTAFCallback(oracle.jdbc.OracleOCIFailover cbk, Object obj)

推荐阅读