使用Oracle进行事务回退

时间:2018-11-15 10:38:05

标签: oracle

我正在尝试使用以下脚本回退与Oracle 12c的事务:

DECLARE
v_xid   SYS.xid_array;
BEGIN
v_xid := sys.xid_array ('0700200003030000');
DBMS_FLASHBACK.transaction_backout (numtxns => 1, xids => v_xid, options => 
DBMS_FLASHBACK.cascade);
END;
/

我收到此错误:

ORA-06550: Ligne 2, colonne 9 :
PLS-00201: l'identificateur 'SYS.XID_ARRAY' doit être déclaré

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您是否拥有DBA特权?如果不是,是否确定您具有与SYS对象进行交互的必要权限?作为普通用户,除非明确授予您访问权限,否则您将无法与某些SYS对象进行交互。如果您在组织的数据库中工作,则尤其如此,因为从PUBLIC角色撤消所有拨款都是很常见的事情。

如果这是许可的情况,则您无法自己进行修复。如果有访问权限,则可以尝试使用SYSDBA角色进行连接。如果您没有该访问权限,则需要向管理数据库的DBA请求。

如果这是您用于测试/学习的数据库,并且不确定,我建议您通过以下链接查看有关角色的Oracle文档:https://docs.oracle.com/database/121/DBSEG/authorization.htm#DBSEG004

这也是一本很棒的tom tom文章,它简要介绍了SYS模式和SYSDBA角色。 https://asktom.oracle.com/pls/asktom/f?p=100:11:0%3A%3A%3A%3AP11_QUESTION_ID:2659418700346202574