【问题标题】:Oracle FAN with Oracle Data Guard but without using Oracle Grid/ RAC带有 Oracle Data Guard 但不使用 Oracle Grid/RAC 的 Oracle FAN
【发布时间】:2019-01-14 17:39:06
【问题描述】:

SWITCHOVER 从主数据库发生到辅助数据库时,JDBC 应用程序是否可以从 Oracle Data Guard 代理接收快速应用程序通知 (FAN),以便应用程序可以在没有 Oracle RAC/集群的情况下重新连接?也就是说,我在主站点上有一个单实例数据库,在辅助站点上有一个类似的设置,我希望我的基于 Java 的应用程序能够检测并重新连接FAILOVER/SWITCHOVER

根据我对 FAN 的了解,它依赖于 Oracle Notification Service,这间接意味着 Oracle RAC/Grid。这种理解正确吗? Oracle Data Guard 本身不需要 Oracle RAC 或 Oracle Grid。

如果 FAN 不可用,应用程序有哪些选项可以在无需重启的情况下连接到新的主节点?

【问题讨论】:

    标签: jdbc oracle12c dataguard


    【解决方案1】:

    您需要 Oracle Grid 或 Oracle RAC。它无法通过设置为单实例非 RAC 数据库的简单 Oracle Data Guard 进行配置。

    客户端故障转移

    对于客户端故障转移,我们需要考虑两件事:

    1. 检测数据库故障转移
    2. 重新连接新的主节点

    检测数据库故障转移

    FAN 主要帮助解决第一点。如果没有 FAN,应用程序将不得不依靠数据库连接错误来检测数据库是否出现故障(或不再是主数据库)。这可能以三种不同的方式发生:

    1. 在建立新连接时,应用程序将无法与失败的数据库建立连接。如果它是SWITCHOVER,应用程序也将无法与具有(普通)Oracle Data Guard 的备用数据库建立连接。对于 Active Oracle Data Guard,除非它处于只读模式,否则它将无法打开连接。

    2. 已经从数据库端关闭的现有连接会引发错误。应用程序需要捕获此错误并做出相应的响应。

    3. 如果连接仍然有效(出于某种原因),并且数据库不再可用于响应(因为它已失败),则应用程序必须依赖 TCP/IP 超时和操作系统级别的套接字处理.为此,Oracle 建议您在内核级别调整超时。

    一旦您检测到连接失败,您的应用程序应该能够创建到数据库的新连接。应该与新的主节点建立此连接,如下所述。

    重新连接新的主节点

    无论您是否使用 FAN,您都可以在连接字符串中指定一个地址列表(而不是单个数据库)。这允许您对多个数据库使用单个连接字符串,并且还可以帮助您处理 Oracle Data Guard 故障转移方案。下面给出了具有多个地址的 JDBC 连接字符串示例:

    jdbc:oracle:thin:<userid>/<pwd>@(DESCRIPTION_LIST=
    (LOAD_BALANCE=off)(FAILOVER=on)
    (DESCRIPTION=
       (CONNECT_TIMEOUT=6)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=2)
       (ADDRESS_LIST=   
          (LOAD_BALANCE=on)
          (ADDRESS=(PROTOCOL=TCP)(HOST=<primary-host-name>)(PORT=<port>))
       )
       (CONNECT_DATA=(SERVICE_NAME=<dbServiceNameOnPrimary>))
    )
    (DESCRIPTION=
       (CONNECT_TIMEOUT=6)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=2)
       (ADDRESS_LIST=
       (LOAD_BALANCE=on)
          (ADDRESS=(PROTOCOL=TCP)(HOST=<standby-host-name>)(PORT=<port>))
       )
       (CONNECT_DATA=(SERVICE_NAME=<dbServiceNameOnStandby>))
    ))
    

    来源:Client Failover Best Practices for Highly Available Oracle Databases (pdf)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2017-11-05
      • 2015-02-21
      • 2015-07-25
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多