首页 > 解决方案 > dbms_transaction.commit_comment 的权限不足

问题描述

由于挂起的分布式事务,试图设置记录锁的场景。

目标:将一些行放入 DBA_2PC_PENDING 用于培训目的并强制提交/回滚/清除条目等。

根据数据库管理员指南 (12c)

https://docs.oracle.com/database/121/ADMIN/ds_txnman.htm#ADMIN12285

在第35.9 节模拟分布式事务失败

下面的代码应该完成我需要的:

DECLARE
    l_tran_id VARCHAR2(200);
BEGIN
    l_tran_id := dbms_transaction.local_transaction_id(true);
    DBMS_OUTPUT.PUT_LINE('l_tran_id: ' ||l_tran_id);
    abc.package1.proc1@DB2 (  parm1 => 'XXX' );
    COMMIT COMMENT 'ORA-2PC-CRASH-TEST-5';  
END;

但是当我运行它时,我得到ORA-01031:权限不足,错误指向持有提交的行。

如果我改为COMMIT COMMENT 'hooray';

我没有收到错误,但我当然没有收到待处理交易的结果。

它抱怨什么特权?

标签: oracledistributed-transactions

解决方案


推荐阅读