在尝试撤销事务时所出现的错误



  在尝试撤销事务时,有时会出现以下的错误信息:

SQL> CREATE TABLE T_FLASH_TRANS (ID NUMBER, NAM E VARCHAR2(30)); 表已创建。 SQL> INSERT INTO T_FLASH_TRANS VALUES (1, ’A’); 已创建 1 行。 SQL> COMMIT; 提交完成。 SQL> UPDATE T_FLASH_TRANS SET NAME = ’C’ WHERE ID = 1;
已更新 1 行。
SQL> COMMIT;
提交完成。
SQL> UPDATE T_FLASH_TRANS SET NAME = ’D’ WHERE ID = 1;
已更新 1 行。
SQL> INSERT INTO T_FLASH_TRANS VALUES (2, ’B’);
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> CONN SYS@ORA11G AS SYSDBA输入口令: ****已连接。
SQL> SELECT XID, OPERATION, UNDO_SQL
2 FROM FLASHBACK_TRANSACTION_QUERY
3 WHERE TABLE_NAME = ’T_FLASH_TRANS’;
XID OPERATION UNDO_SQL
---------------- ----------
01001B00D8120000 INSERT delete
from "YANGTK"."T_FLASH_TRANS" where ROWID = ’AAARpjAAGAAADB9AAB’;
01001B00D8120000 UPDATE update
"YANGTK"."T_FLASH_TRANS"
set "NAME" = ’C’
where ROWID = ’AAARpjAA
03000D00F40E0000 INSERT delete
from "YANGTK"."T_FLASH_TRANS"
where ROWID = ’AAARpjAAGAAADB9AAA’;
0A001800ED110000 UPDATE update
"YANGTK"."T_FLASH_TRANS"
set "NAME" = ’A’ where ROWID = ’AAARpjAA
SQL> DECLARE
2 V_XID XID_ARRAY;
3 BEGIN
4 V_XID := SYS.XID_ARRAY(’0A001800ED110000’);
5 DBMS_FLASHBACK.TRANSACTION_BACKOUT
(1, V_XID, DBMS_FLASHBACK.CASCADE);
6 END;
7 /
DECLARE
*第 1 行出现错误:
ORA-55505: 在挖掘起始 SCN 后已经对感兴趣的对象完成了 DDL
ORA-06512: 在 "SYS.DBMS_FLASHBACK", line 37
ORA-06512: 在 "SYS.DBMS_FLASHBACK", line 70
ORA-06512: 在 line 5


  我们从这个错误信息上可以发现,在指定的SCN后发生了DDL语句。

  现在我们来查询一下Oracle的metalink,你可以发现是由于事务与建表DDL时间间隔太段造成的,假如时间间隔超过6秒,就不会出现这个错误。

  注释:此问题的出现是继承了LOGMINER的特点,在Metalink的文档Bug No. 5750226对这个问题进行了详细的描述

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3