DBMS_XA 系统包包含 XA / Open 接口,以供应用程序在 PL 中调用 XA 接口。
使用此系统包,应用程序开发人员可以使用 PL 在 OceanBase Client 会话或进程之间切换或共享事务。
DBMS_XA 子程序允许 PL 应用程序定义全局事务分支 ID(XID),并关联或取消关联当前会话与事务分支。
DBMS_XA 安全模型
该程序包是在 SYS
下创建的。由当前调用者执行此系统包提供的操作,不由系统包所有者 SYS
执行。在当前用户的权限下执行 DBMS_XA
子程序调用 PL 匿名块。从存储过程调用的任何 DBMS_XA
子程序都是使用存储过程所有者的权限执行的。
需要执行 XA_RECOVER
子程序的用户需要 SYS.DBA_PENDING_TRANSACTIONS
的 SELECT
或 READ
权限。 需要操作其他用户创建的 XA 事务的用户需要 FORCE ANY TRANSACTION
权限。
DBMS_XA 使用说明
符合用于分布式事务处理的 X / Open CAE 标准的 XA 规范,当事务仍与当前会话关联时,可能不会调用XA_PREPARE
/ COMMIT
/ ROLLBACK
/ FORGET
。仅在调用 XA_END
之后,没有与当前会话关联的任何事务时,应用程序才可以调用 XA_PREPARE
/ COMMIT
/ ROLLBACK
/ FORGET
。
如果事务与当前会话相关联,则会从 XA_PREPARE
/ COMMIT
/ ROLLBACK
/ FORGET
返回 XAER_PROTO
报错信息。
在调用任何系统包子程序之前,必须已建立与 OceanBase 数据库服务器后端或资源管理器(不支持资源管理器标识符)的连接/会话。如果涉及多个资源管理器,则在调用任何程序包子程序之前,必须为每个资源管理器预先建立多个连接/会话。如果在全局事务处理过程中建立了多个连接/会话,则调用者必须确保将与特定全局事务分支标识符(XID)关联的所有连接/会话都建立到同一资源管理器。
DBMS_XA 子程序概览
下表为 OceanBase 数据库当前版本所支持的 DBMS_XA 子程序和简要描述。
子程序 | 描述 |
---|---|
在使用 Real Application Clusters(RAC)时用于同步的恢复 | |
提交 xid 指定的全局事务。 | |
将当前会话与 | |
要求资源管理器 RM 丢弃提交或回滚的事务分支。 | |
如果先前的 XA 调用失败,则获取最后的错误代码。 | |
准备提交 | |
从资源管理器 RM 获取准备好的、已提交或者已回滚(但是事务信息还没丢弃)的事务分支列表。 | |
要求资源管理器 RM 回滚事务分支。 | |
设置当前会话的事务超时间隔(以秒为单位)。 | |
将当前会话与 |