使用此系统包,应用程序开发人员可以使用 PL 在 OceanBase Client 会话或进程之间切换或共享事务。

    DBMS_XA 子程序允许 PL 应用程序定义全局事务分支 ID(XID),并关联或取消关联当前会话与事务分支。

    该程序包是在 下创建的。由当前调用者执行此系统包提供的操作,不由系统包所有者 SYS 执行。在当前用户的权限下执行 DBMS_XA 子程序调用 PL 匿名块。从存储过程调用的任何 DBMS_XA 子程序都是使用存储过程所有者的权限执行的。

    需要执行 XA_RECOVER 子程序的用户需要 SYS.DBA_PENDING_TRANSACTIONSSELECTREAD 权限。 需要操作其他用户创建的 XA 事务的用户需要 权限。

    符合用于分布式事务处理的 X / Open CAE 标准的 XA 规范,当事务仍与当前会话关联时,可能不会调用XA_PREPARE / COMMIT / ROLLBACK / FORGET。仅在调用 XA_END 之后,没有与当前会话关联的任何事务时,应用程序才可以调用 XA_PREPARE / COMMIT / / FORGET

    如果事务与当前会话相关联,则会从 XA_PREPARE / COMMIT / ROLLBACK / FORGET 返回 XAER_PROTO报错信息。

    在调用任何系统包子程序之前,必须已建立与 OceanBase 数据库服务器后端或资源管理器(不支持资源管理器标识符)的连接/会话。如果涉及多个资源管理器,则在调用任何程序包子程序之前,必须为每个资源管理器预先建立多个连接/会话。如果在全局事务处理过程中建立了多个连接/会话,则调用者必须确保将与特定全局事务分支标识符(XID)关联的所有连接/会话都建立到同一资源管理器。

    下表为 OceanBase 数据库当前版本所支持的 DBMS_XA 子程序和简要描述。