使用 Service 服务配置 Oracle 19c RAC TAF 透明应用程序故障转移

d1c2432bc2e77937520f220707a6c35c.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle 11g OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看使用 Service 服务配置 Oracle 19c RAC TAF 透明应用程序故障转移欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

前  言

再开始正文前,先插播一条重磅福利,各位看官,走过路过的进来看一看,瞧一瞧,保证不吃亏,免费抽奖送书,抽完奖的也可以帮忙点进来增加一下阅读量,600 以上阅读才能免费抽取 3 本《DBA实战手记》,快点下方红字进来参与吧。

DBA圈号主大联合免费抽奖送《DBA实战手记》https://mp.weixin.qq.com/s/gGF7SM5_zDekQTuroCGw-g

机械工业出版社联合 7 位 DBA 圈的博主,准备的送书活动,7 个活动可以同时参加,免费参加抽奖,价值 100 多块的彩印书籍,不来白嫖一下吗?又没什么损失。你好我好大家好的事儿,快来点上方红字进来参与吧。

故障转移

故障转移配置:如果用户端 tnsnames.ora 文件中配置了多个地址,则用户在发起连接请求时,会先尝试连接地址表中的第一个地址,如果这个连接失败,则继续尝试连接第二个地址,直至连接成功或遍历完所有的地址。这种故障转移方式只有在发起连接时才会去感知节点故障,如果节点没有反应,则自动尝试连接地址列表中的下一个地址。连接建立之后,即使节点出现故障也不会进行处理,会话中断,应用必须重新建立连接。这种故障转移方式在 tnsnames.ora 文件中添加 FAILOVER=ON 即可实现,默认是启用的,不添加该条目也可以使用该功能。

示例:

JiekeXu =
  (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.11-vip1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.13-vip2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = JiekeXu)
    )
  )

423b301a15ca7573cd40a3f04cb5c563.png

TAF(Transparent Application Failover) 透明应用程序故障转移指建立连接后,如果某个实例发生故障,则连接到该实例上的会话会自动迁移到其他正常的实例上。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入。TAF 的配置也很简单,只需要在客户端的 tnsnames.ora 文件中添加 FAILOVER_MODE 配置项,再配置以下 4 个参数。

METHOD:用户定义何时创建到其他实例的连接,有 BASIC 和PRECONNECT 两个可选值。
● BASIC:在感知到节点故障时,创建到其他实例的连接。
● PRECONNECT:在最初建立连接时就建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。BASIC 方式在故障转移时会有时间延迟,但节省资源,并且 RAC 出现故障的概率较小,所以一般选择BASIC方式。

TYPE:用于定义发生故障时对完成的SQL 语句的处理,有三种处理方式,即session、select和 none(默认值)。前面两种方式对未提交的事务都会自动回滚,区别在于对 select 语句的处理。对于 select 方式,用户正在执行的 select 语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则被抛弃。为了实现 select 方式,Oracle 必须为每个会话保存更多的内容,包括游标、用户上下文等,用资源换时间。

DELAY:重新连接的时间间隔。

RETRIES:重新连接的次数。

--连接示例:


JiekeXu =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.84-vip1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.85-vip2)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER=DEDICATED)
      (SERVICE_NAME = JiekeXu)
    (FAILOVER_MODE=
      (TYPE=session)
      (METHOD=basic)
      (RETRIES=180)
      (DeLAY=5)
     )
    )
  )




--JDBC 连接串
jdbc:Oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.84)(PORT = 1521))(ADDRESS = (PROTOCOL = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值