数据库管理-第220期 Oracle的高可用-03(20240715)

数据库管理-第220期 Oracle的高可用-03(20240715)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

其实吧这一期的内容才是我写Oracle高可用系列主要想写的,前面通过MAA架构介绍了Oracle的各种基于物理复制或逻辑复制的高可用架构,而在系列第二期中介绍了GDS。虽然对业务是透明的,但是GDS运行在数据库架构之外如果出现异常影响较大,同时GDS本身需要一定的学习和维护成本。

1 AC/TAC

AC,Application Continuity,可译作业务连续性,是Oracle 12c引入的的一项功能,是Oracle Real Application Clusters (RAC)、Oracle RAC One Node 和 Oracle Active Data Guard 选件的一个特性。仅需进行极少的配置变更,无需修改业务应用代码即可实现在计划内维护和计划外事件发生事务中断后,通过恢复正在进行的数据库会话,对最终用户和应用程序屏蔽数据库级别的中断,提高了依赖Oracle数据库的应用程序的容错能力。这样,在应用看来中断只是一次稍有延迟的执行。通过AC,在补丁滚动升级、参数变更重启甚至是数据出现崩溃时,应用程序也不受影响。
TAC,Transparent Application Continuity,透明应用连续性,是TAF(Transparent Application Failover,透明应用程序故障转移,可以重放/继续查询)的延续。会透明地跟踪和记录会话和事务状态,以便在出现可恢复的中断之后恢复数据库会话。在TAF仅支持SELECT的基础上,扩展支持INSERT、UPDATE、DELETE操作。在不需要修改应用程序代码的情况下,允许为您的应用程序启用透明的应用程序连续性。应用程序透明性和故障转移是通过使用状态跟踪信息来实现的,这些信息在应用程序发出用户调用时被捕获。能够为数据库的日常维护提供方便,有效消除应用服务的停机时间顾虑能够有效应对数据库实例的机器、网卡、系统等突发异常事件;甚至能够让应用端透明地实现数据中心灾备冗余架构下的主备中心切换。

2 配置Service

下面是AC和TAC的在Service配置上的区别:
image.png
这里以TAC为例按照下面的RAC集群参考进行Service配置:
image.png

srvctl add service -db dbaas -pdb PDB1 -service tac_srv -preferred dbaas1,dbaas2 -available dbaas3,dbaas4 -failover_restore AUTO -failoverretry 30 -failoverdelay 10 -commit_outcome TRUE -failovertype AUTO -replay_init_time 1800 -retention 86400 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATE

srvctl start service -db dbaas -service tac_srv

Service配置完成后pdb1对应的服务tac_srv会在dbaas1和dbaas2上运行,当dbaas1或dbaas2出现异常时,会根据节点负载情况从dbaas3或dbaas4启动对应服务,以满足配置的节点数量要求,避免出现性能问题。

3 用户权限

有些数据库函数在每次调用的时候都会返回新的值,这些函数称为可变函数,包括sysdate、systimestamp、local_timestamp、current_timestamp、sys_guid、sequence.nextval。
如果一个未完成的事务是由PL/SQL语句块组成,并且语句块中用到了可变函数,那么当 TAC在可用实例上尝试重放这个事务时,可变函数的返回值是变化了的,那么这个重放就会被拒绝。为 了在重放时能够使用原来的返回值,需要在数据库端对可变函数或对象赋KEEP权限:

GRANT KEEP DATE TIME TO [db user];
GRANT KEEP SYSGUID To [db_user];
ALTER SEQUENCE [sequence_name] KEEP;
--如果sequence还被其他数据库用户使用 ,  需要给这些用户赋与KEEP权限
GRANT KEEP SEQUENCE ON [db_user.sequence_name]TO [other_user];

4 端口开放

由于在srvctl创建服务时,添加了-notification TRUE参数,开启了FAN通知功能,在开通防火墙策略的时候,除了开放一般Oracle Net Listener标准监听(默认为1521/tcp)对应的端口以外,还需要开启Oracle Notification Services (ONS)服务(默认为6200/tcp)的端口。以确保应用程序能正确、及时的接受到来自于FAN (Fast Application Notification)的关于集群情况(如节点维护、故障、负载等)事件的通知。

总结

本期讲解了在RAC集群上配置TAC的操作及相关事项,下一期将讲解应用侧配置相关内容。
老规矩,知道写了些啥。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 05:44:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 05:44:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 05:44:01       45 阅读
  4. Python语言-面向对象

    2024-07-16 05:44:01       55 阅读

热门阅读

  1. Python小工具—txt转excel和word

    2024-07-16 05:44:01       18 阅读
  2. Matplotlib库学习之mpl_toolkits.mplot3d.Axes3D函数

    2024-07-16 05:44:01       23 阅读
  3. uniapp 如何实现路由拦截,路由守卫

    2024-07-16 05:44:01       19 阅读
  4. 健康管理平台的元宇宙革新

    2024-07-16 05:44:01       15 阅读
  5. Spring Batch批量处理数据

    2024-07-16 05:44:01       21 阅读
  6. lua package.path

    2024-07-16 05:44:01       21 阅读
  7. 【AI原理解析】—支持向量机原理

    2024-07-16 05:44:01       22 阅读
  8. C++面试

    C++面试

    2024-07-16 05:44:01      18 阅读
  9. 【Flask项目】文件分享系统(一)

    2024-07-16 05:44:01       24 阅读
  10. Barabási–Albert模型详解与Python代码示例

    2024-07-16 05:44:01       22 阅读
  11. Android12 禁用adb

    2024-07-16 05:44:01       18 阅读
  12. 深度学习多任务学习笔记

    2024-07-16 05:44:01       22 阅读
  13. [C/C++入门][变量和运算]8、鸡兔同笼

    2024-07-16 05:44:01       19 阅读