更新日期:2024年09月11日
事务管理器支持两阶段落实和回滚。例如,如果数据库是 GBase 8s,记帐系统是
Oracle,而汇款系统是 Sybase,那么可以使用事务管理器在不同数据库之间通信。 您还
可以使用事务管理器通过使用分布式事务而非 Enterprise Replication 或高可用性数据复
制,确保 GBase 8s 或非 GBase 8s 数据库之间的数据一致性。
TP/XA 库(带事务管理器)
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 485 -
全局事务是一种在查询中涉及多个数据库服务器的分布式查询。 全局事务环境具有以下
部件:
•
客户机应用程序
•
资源管理器(GBase 8s 数据库服务器)
•
事务管理器(供应商软件)
TP/XA 是一个函数库,使数据库服务器可充当 X/Open DTP 环境中的资源管理器。将
TP/XA 库作为 GBase 8s ESQL/C 的一部分安装可启用第三方事务管理器和数据库服务器
之间的通信。X/Open 环境支持大型的高性能 OLTP 应用程序。
当您的数据库具有以下特征时,请使用 TP/XA:
•
数据分发在多供应商数据库中
•
事务包括 GBase 8s 和非 GBase 8s 数据
Microsoft Transaction Server (MTS/XA)
数据库服务器支持 Microsoft™ Transaction Server (MTS/XA) 在 XA 环境中充当事务管理
器。 要使用 MTS/XA,请安装 GBase 8s Client Software Development Kit、最新版本的
GBase 8s ODBC Driver 以及 MTS/XA。 有关更多信息,请联系 GBase 8s 技术支持,并
参阅 GBase 8s 客户机产品安装指南 和 MTS/XA 文档。
GBase 8s 事务对符合 XA 的外部数据源的支持
GBase 8s 事务管理器 GBase 8s 的主体部分,而不是单独模块,用于识别符合 XA 的外部
数据源。这些数据源可参与两阶段落实事务。
对于参与特殊事务事件(例如,准备、落实或回滚)的分布式事务每个符合 XA 的外部
数据源,事务管理器都会对其运行支持例程。该交互符合 X/Open 接口标准。
符合 XA 的外部数据源的事务支持(也称为资源管理器)使您能够执行以下操作:
•
创建符合 XA 的外部数据源类型及其实例。
•
创建或修改用户定义的例程 (UDR)、虚拟表接口或虚拟索引接口以启用符合 XA
的数据源来为来自符合 XA 的数据源的外部数据提供数据访问机制。
•
将符合 XA 的外部数据源注册到 GBase 8s。
•
注销符合 XA 的外部数据源。
•
在同一个全局事务中使用多个符合 XA 的外部数据源。
事务与符合 XA 的外部数据源的协调仅在以 GBase 8s 登录的数据库和符合 ANSI 标准的
数据库中受支持,因为这些数据库都支持事务。事务与符合 XA 的外部数据源的协调在
未登录的数据库中不受支持。
可使用以下 DDL 语句,它们是用于管理 XA 数据源类型和数据源的 SQL 语句的扩
展:
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 486 -
语句
描述
CREATE XADATASOURCE TYPE 创建符合 XA 的外部数据源类型
CREATE XADATASOURCE
创建符合 XA 的外部数据源实例
DROP XADATASOURCE
删除符合 XA 的外部数据源实例
DROP XADATASOURCE TYPE
删除符合 XA 的外部数据源类型
有关这些语句的更多信息,请参阅《GBase 8s SQL 指南:语法》 。
GBase 8s 和符合 XA 的外部数据源之间的交互通过一组用户定义且支持 XA 的例程(例
如,xa_open、xa_end、 xa_commit 和 xa_prepare)执行。可在使用 CREATE
XADATASOURCE TYPE 语句之前创建这些支持例程。
在创建了符合 XA 的外部数据源之后,可使用 mi_xa_register_xadatasource()
(或 ax_reg())和 mi_xa_unregister_xadatasource()(或ax_unreg())函数将该数据源注册到
当前事务和注销该数据源。在分布式环境中,必须在本地协调者服务器上注册数据源。注
册是瞬态的,持续时间仅仅是该事务的持续时间。
使用以下 onstat 选项可显示有关包含符合 XA 的数据源的事务的信息:
onstat 选项
此命令显示的符合 XA 的数据源信息
onstat -x
显示有关事务中的 XA 参与者的信息。
onstat -G
显示有关全局事务中的 XA 参与者的信息。
onstat -g
ses session id
显示会话信息,包括有关参与事务的 XA 数据源的信息。
高可用性集群中的 XA
X/Open 分布式事务处理 (DTP) 模型允许高可用性集群中的可更新辅助服务器在分布式事
务中充当资源管理器。
任何 XA 全局事务中的参与者有三种:
•
应用程序 (AP):定义事务界限,并指定构成事务分支的操作。
•
资源管理器 (RM):提供对资源(如数据库)的访问。
•
事务管理器 (TM):为事务分支指定标识 (XID),监视事务进度,以及协调事务分
支以完成操作和实现故障恢复。
在高可用性集群中,会话可以从集群中的任何服务器创建事务分支或附加到事务分支。例
如,可从 server_2 附加已从 server_1 分离的事务分支。应用程序可在不跟踪启动事务的
服务器的情况下,使用连接管理器连接到集群。事务管理器也可以使用连接管理器连接到
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 487 -
集群,以完成 XA 事务,方法是对松散和紧密耦合的事务均执行落实、回滚或忽视(请
参阅松耦合与紧耦合方式)。
所有从辅助服务器启动的全局事务分支都将使用现有代理接口重定向到主服务器。 主服
务器启动和维护所有事务分支,并执行与分支关联的所有请求工作。
在可更新辅助服务器上启动了 XA 事务时,主服务器上也将启动相应的 XA 事务。主服
务器上的 XA 事务执行 XA 事务的整个生命周期(启动、结束、准备以及落实或回
滚)。 辅助服务器上的 XA 事务用于支持未重定向到主服务器的查询。发出
对 xa_end() 函数的调用时,系统将释放 XA 事务,并将用户会话从 XA 事务分离。所有
XA 事务请求和 XA 事务内发出的所有写操作都将重定向到主服务器。
以下功能特定于GBase 8s XA 实施:
•
所有 XA 接口请求在可更新的辅助服务器上均可用(请参阅辅助服务器上的数据
库更新)。
•
支持从可更新的辅助服务器启动、准备以及落实或回滚 XA 事务。
•
支持 xa_recover() 函数,该函数用于从资源管理器获取已就绪事务分支的列表。
•
支持在高可用性集群服务器中执行 XA 事务分支迁移。集群中的任何服务器均可
附加到 XA 事务分支,而不考虑事务分支是否源自该服务器。
•
XA 客户机和事务管理器可使用连接管理器连接到任何高可用性集群服务器(请
参阅连接管理)。
•
支持将 XA 请求从辅助服务器重定向到主服务器。
•
支持对 XA 事务执行事务挽救(请参阅在集群故障转移期间完成事务)。
•
如果运行已重定向的 XA 事务的辅助服务器出现故障,将回滚事务。
•
支持在 XA 环境内运行,但位于 XA 事务外的 SQL 事务。
在辅助服务器上运行的 XA 事务有以下限制:
•
不支持从其他用户会话(在相同或不同辅助服务器上)恢复暂挂的全局事务分
支。
•
用户会话不能附加到与另一个辅助服务器上的其他用户会话关联的全局事务分
支。
•
XA 事务与辅助服务器上的其他数据具有相同的限制。请参阅辅助服务器上的数
据库更新。
•
XA 事务不能在只读辅助服务器上启动。 如果应用程序尝试在只读辅助服务器上
创建新的 XA 事务,将收到 XA 错误代码 XAER_RMERR。此外,在只读辅助
服务器上运行 xa_prepare()、xa_commit() 或 xa_rollback() 将返回错误代码
XA_NOTA (-4)。
•
只读辅助服务器上支持以下 XA API:
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 488 -
ₒ
xa_open()
ₒ
xa_close()
重要: 如果要将 .NET Framework 用于 Microsoft™ Transaction Server 以管理高可用性集
群中的 XA 事务,那么必须使用 TransactionScope 类而非 ServiceConfig 类。
TransactionScope 类可用于 .NET Framework 3.5。
松耦合与紧耦合方式
数据库服务器支持松耦合及紧耦合方式的 XA 全局事务:
•
松耦合方式表示不同的数据库服务器可协调事务,但不可共享资源。 来自事务的
所有分支的记录分别作为独立事务显示在逻辑日志中。
•
紧耦合方式表示不同的数据库服务器可协调事务并且共享诸如锁定和日志记录这
些资源。 来自事务的所有分支的记录作为同一事务显示在逻辑日志中。
BEA Systems 提供的 Tuxedo 事务管理器支持松耦合方式。