Focus On Oracle

Installing, Backup & Recovery, Performance Tuning,
Troubleshooting, Upgrading, Patching

Oracle Engineered System


当前位置: 首页 » 技术文章 » Oracle 12c+

保障业务连续性的神器

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

Notification:FAN是隐藏计划内或计划外故障的第一步。当发生中断时,它会通知客户端并中断他们当前的网络等待。这样可以避免应用程序因长时间的网络等待而暂停。
Recovery:在通知客户端后,AC或TAC会重新建立到新的可用实例的连接(在RAC情况下,可能是同一个或另一个实例,或者是DataGuard的备用站点),并在可能的情况下重播正在进行中(未提交)的工作,应用程序通常可以在不知道发生任何故障的情况下继续执行。

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


配置应用高可用

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

  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)

数据库环境

测试应用高可用

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

swingbench测试

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

java应用测试

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

验证备库,并做主备切换

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

sqlplus测试

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

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


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/


关键词:swingbench ac tac 12c oracle 

相关文章

Oracle Database 20c之SQL宏
关于max_string_size
Java beginner for Oracle DBA
在Oracle数据库中使用JSON
Oracle Database 20c之区块链表
Oracle Database 20c的一些微妙变化
关于Oracle的Sequence,你需要知道的
Oracle数据库优化方面资料
Oracle Database 19c在优化方面有哪些新特性
Oracle Database 20c云端预览版发布了
Oracle 19c新特性之RAC Automatic Failback Service
Install Oracle RAC Database 19c Step by Step
Top