oracle 12c transaction guard,保障业务连续性的神器

为了提高应用程序的高可用性,Oracle提供了一系列的技术来实现。一个是在出问题的时候,能够快速的通知,并做出反应,另一个出现问题后能够快速恢复,并重新开始。为了将对客户的影响降至最低,Oracle引入了Transaction Guard和Application Continuity。下面让我们先熟悉几个关键名词。

Notification:FAN是隐藏计划内或计划外故障的第一步。当发生中断时,它会通知客户端并中断他们当前的网络等待。这样可以避免应用程序因长时间的网络等待而暂停。

Recovery:在通知客户端后,AC或TAC会重新建立到新的可用实例的连接(在RAC情况下,可能是同一个或另一个实例,或者是DataGuard的备用站点),并在可能的情况下重播正在进行中(未提交)的工作,应用程序通常可以在不知道发生任何故障的情况下继续执行。

Drain:放空或排空。在停机之前通常会有一个等待时间,等待该实例上的会话结束,我们也称为放空或排空。

eb244629403f42f6cecbefec886a5a8e.png

配置应用高可用

这个也很简单,参照官方文档,主要有以下的步骤:

Connect Using Oracle Services(创建数据库服务)

Configure TNS/URL for High Availability(配置连接服务的TNS或者URL)

Use Fast Application Notification (FAN)(启用FAN)

Use recommended application practices that allow draining(使用推荐的应用程序实践放空)

Enable Application Continuity or Transparent Application Continuity(启用AC或者TAC)

数据库环境

7fc7bc22b213289d8d833cc239a226e5.png

测试应用高可用

下面我们用三种不同的方式做测试,swingbench,java应用,sqlplus三种方式。通过测试,我们发现真的可以做到应用不中断,即使在过程中做了主库的switchover。真的是太神奇了。

swingbench测试

swingbench是Oracle数据库产品经理开发的工具,是开源免费产品。本次测试,模拟两个用户测试,做了停止第一个节点,启动第一个节点,停止第二个节点,启动第二个节点的操作。观察swingbench事务等操作,中间业务没有中断。在swingbench中配置使用AppContinuityDriver的驱动。如果不使用这个驱动,测试不会成功,这个就是应用连续性的驱动。该测试只使用了主库,没有使用备库。

3fe1d69c496a08debee063bb70420a8b.png

java应用测试

运行测试java程序,模拟测试,我们能看到当前连接的是主库的实例pgold2

4e043baf8a5ea334f1051ded568fe8fe.png

验证备库,并做主备切换

9de054f88771334f67971ac6a26e321d.png

程序运行结束,中间没有中断,运行结束后,我们发现连接的是新主库pgoldadg1(就是之前的备库)

c5bcc1b3e1a69561473cfbe187103fe8.png

sqlplus测试

用sqlplus -ac连接数据库,插入一条数据。在新窗口中查询当前insert操作所在的实例。然后关闭insert操作所在的实例。然后做commit。我们发现成功了,插入并没有中断。不带-ac连接测试也没有问题。

244c7f86896e3e383534be82c4ef747d.png

第一条是insert后commit之前的连接的实例信息,第二条是commit之后连接的实例信息

276e55ab22a4fc8b4d5ebce4f05fe80d.png

Reference

https://www.oracle.com/technetwork/database/options/clustering/applicationcontinuity/learnmore/ac-applicationguidelines-5440853.pdf

https://www.oracle.com/technetwork/database/options/clustering/applicationcontinuity/adb-continuousavailability-5169724.pdf

https://www.oracle.com/technetwork/database/options/clustering/transaction-guard-wp-5305738.pdf

https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/ensuring-application-continuity.html

https://www.oracle.com/technetwork/cn/database/options/clustering/ac-overview-1967264-zhs.html

https://www.oracle.com/technetwork/cn/database/database-cloud/private/application-continuity-wp-12c-1966213-zhs.pdf

https://www.oracle.com/technetwork/database/options/clustering/ac-with-oracle-database-5303807.pdf

https://blogs.oracle.com/dev2dev/write-recovery-code-with-transaction-guard

https://www.oracle.com/technetwork/database/options/clustering/applicationcontinuity/learnmore/fastapplicationnotification12c-2538999.pdf

https://www.oracle.com/technetwork/database/application-development/12c-ha-concepts-2408080.pdf

http://docs.oracle.com/cd/E16655_01/appdev.121/e17663/oracle/jdbc/replay/ReplayableConnection.html

https://www.oracle.com/technetwork/database/application-development/12c-ha-concepts-2408080.pdf

https://laurent-leturgez.com/2015/06/01/oracle-12c-application-continuity-and-its-resources-usage/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值