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 

相关文章

基于PDB的Active Data Guard(Oracle 21.7+)
在Oracle数据库中使用REST
OGG from MySQL to Oracle
Oracle数据库容灾之两地三中心实践
低代码开发用Oracle Apex,看这篇就够了
Oracle Database 20c之SQL宏
关于max_string_size
Java beginner for Oracle DBA
在Oracle数据库19c中使用JSON
Oracle Database 20c之区块链表
Oracle Database 20c的一些微妙变化
关于Oracle的Sequence,你需要知道的
Top