共计 1242 个字符,预计需要花费 4 分钟才能阅读完成。
传统企业比如银行业和电信业的数据库大多采用 Oracle rac+dataguard 的高可用架构,在 rac 项目实施过程中,由于业务连续性的苛刻要求,高可用的实施和测试工作显得尤为重要。
Oracle 在新版本 12cR2 的 rac 官方文档里单独列了一章叫 Ensuring application Continuity, 重视程度可见一斑。在以前的 Oracle10g 以及 11g 的版本中,client 为实现 RAC failover(故障转移)特性,各类应用 app 以及 db 需要作各种配置调整工作,随着 Oracle 的 12cR2 新版本的到来,这些配置步骤变得更简化。
下面简要总结 Oracle11gR2 环境下的 failover 配置。
首先根据是否使用了事先已经存在的连接(如连接池中的连接)将客户端的连接分为 Connect Time Connection Failover 和 Runtime Connection Failover,runtime 前缀指连接已经存在的情况,比如使用了连接池。
1、Connect Time Connection Failover
客户端的 tnsnames.ora 中配置 scan ip 和 service 就可以实现连接数据库时的 Failover;
2、Runtime Connection Failover
Oracle 通过两种手段来实现 Runtime Connection Failover,分别为 TAF(Transparent Application Failover)和 FCF(Fast Connection Failover)。
首先是 TAF:
它可以在 client 端的 tnsnames.ora 中的连接串里定义,也可以在 server 端的 service 中定 义。TAF 仅对使用 OCI 连接的客户端和连接池有效,这里的 OCI 连接可以是在 OCI 连接上的封装,比如 JDBC-OCI driver 就支持 TAF,但 JDBC thin driver 就不支持 TAF(因为 JDBC thin driver 不是基于 OCI 的)。
其次是 FCF:
Fast Connection Failover,它实际上是客户端通过订阅 FAN HA events 来实现的。
因为 JDBC thin 连接不是基于 OCI 的,所以这种情况下的 Runtime Connection Failover 不能使用 TAF,只能用 FCF。
如果想让应用 app 具备 TAF 属性,可进行简单 app 改造:首先在 app 的 client 环境安装 Oracle 客户端程序,然后将 jdbc thin 连接调整为 jdbc oci 的连接方式。
在 Oracle 12c R2 的版本中,failover 可基于事务,且 replay dml 语句,相对于 11g 基于会话,failover 功能又大大提升了。
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/144387.htm