Focus On Oracle

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

Oracle Engineered System


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

Oracle事务卫士(Transaction Guard)和应用连续性(Application Continuity)

Oracle的高可用有很多种架构和技术,涉及到的知识点还有RAC、ADG、ONS、TAF、FAN、FCF、AC、TG、TAC等。下面我们从连接数据库的三要素(IP地址、端口、服务名)之一的服务名来看,如何正确的配置服务,才能从客户端或服务器端实现负载均衡和故障转移。这个是实现应用连续性的要素之一,在后面我们会用到这些知识。


Oracle高可用特性架构
Java Programming with Oracle Database 12c RAC and Active Data Guard该书册介绍了如果在RAC和DG环境中如何启用FAN、ONS、FCF、TG、AC等特性,对开发高可用的Java程序非常使用。下面让我们熟悉一下这些名词和架构
  Universal Connection Pool (UCP)
  Fast Application Notification (FAN)
  Oracle Notification Service (ONS)
  Fast Connection Failover (FCF)
  Logical Transaction ID (LTXID)
  Database Request(用于区分事务的边界)
  Recoverable Errors(可恢复错误是由外部系统故障引起的错误,与正在执行的应用程序会话逻辑无关,比如因实例、节点、存储、网络,或任何其他相关组件引起的)。相反如果是由于应用程序逻辑引起的,比如主键冲突,那么就标识为不可恢复的事务
  Mutable Functions(可变函数,比如SEQUENCE,SYSDATE,SYS_GUID等)
  Transaction Guard (TG,设置COMMIT_OUTCOME为TRUE,将启用该特性)

  Application Continuity (AC,设置FAILOVER_TYPE为TRANSACTION,将启用该特性)


Transaction Guard

Transaction Guard即事务卫士。对于事务来说,在异常情况下,比如最常见的宕机,由于应用程序无法感知事务的当前状态,很容易发生重复提交等情况,造成数据逻辑上的错误,事务卫士就是干这个事情的。Oracle 12c Transaction Guard是TAF的拓展,它涵盖了TAF的一些限制,比如使用OCI等。Transaction Guard为应用程序提供了一个通用协议或者说是工具,在发生计划内和计划外停机,或者有重复提交时用于“最多执行一次”,进而保持事务一致性,是通过逻辑事务ID(LTXID)来确定停机后数据库会话中打开的最后一个事务的结果。


Application Continuity
Application Continuity 即应用连续性 ,是 Oracle Real Application Clusters (RAC)、Oracle RAC One Node 和 Oracle Active Data Guard 选件的一个特性,事务中断后,通过恢复正在进行的数据库会话,对最终用户和应用程序屏蔽中断,使其不被最终用户和应用所觉察。这样,在应用看来中断只是一次稍有延迟的执行。 增强了使用 Oracle 数据库的系统和应用的容错性。
从Oracle database 12.1开始,开始支持基于Java thin的应用程序
从Oracle database 12.2.0.1开始,开始支持基于OCI和ODP.NET的应用程序
Transparent Application Continuity
从Oracle Database 18c开始,Transparent Application Continuity (TAC)透明地跟踪和记录会话和事务状态,以便在可恢复的中断之后恢复数据库会话。应用程序透明性和故障转移是通过使用状态跟踪信息来实现的,这些信息在应用程序发出用户调用时捕获并分类会话状态使用情况。
https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/ensuring-application-continuity.html
12c之后业务不中断的体验

借助Application Continuity,可以屏蔽许多计划内和计划外的停机,而无需应用程序开发人员尝试恢复请求,从而改善了最终用户的体验。没有Application Continuity,几乎不可能以安全可靠的方式屏蔽应用程序的停机。


AC和TAC的区别

启用Transaction Guard

事务卫士是应用连续性的基础。要启用AC/TAC,必须要先启用事务防护

启用应用连续性

创建数据库服务、配置连接数据库服务的字符串,最后配置下应用程序,启用高可用基本上就搞定了

Connect Using Oracle Services
  创建数据库服务,不要使用默认的数据库服务
Configure TNS/URL for High Availability
  配置连接数据库服务的TNS或者URL
Use Fast Application Notification (FAN)
  启用FAN,配置ONS,FCF等
Use recommended application practices that allow draining
  配置应用程序,以支持AC或TAC

支持的应用程序

点击此处下载事务卫士和应用连续性的文档


Reference
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/options/clustering/applicationcontinuity/learnmore/ac-applicationguidelines-5440853.pdf
https://www.oracle.com/technetwork/database/application-development/12c-ha-concepts-2408080.pdf


关键词:tg ac tac 19c adg 12c rac 

相关文章

关于max_string_size
Oracle Database 19c with UCP(Universal Connection Pool)
在Oracle数据库中使用JSON
19c中新增dbms_xplan.compare_plans
Oracle 19c新特性之Automatic Flashback
Oracle 19c新特性之RAC Automatic Failback Service
19c新特性之ADG DML重定向功能
Install Oracle RAC Database 19c Step by Step
19c新特性之Automatic In-memory
19c新特性之SQL语句隔离
19c新特性之实时统计信息收集
19c新特性之自动索引
Top