ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 撤销事务报错ORA-55505

撤销事务报错ORA-55505

原创 Linux操作系统 作者:yangtingkun 时间:2007-12-16 00:00:00 0 删除 编辑

这个bug发生在Oracle11g for Linux x86环境中。


尝试撤销事务,出现下面令人费解的错误信息:

SQL> CREATE TABLE T_FLASH_TRANS (ID NUMBER, NAME 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语句。

查询一下Oraclemetalink,发现是由于事务与建表DDL时间间隔太段造成的,如果时间间隔超过6秒,则不会出现这个错误。

看来这个问题是继承了LOGMINER的特点。

Metalink的文档Bug No. 5750226对这个问题进行了详细的描述。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69545/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1954
  • 访问量
    10875256