ORACLE 9i flashback 报ORA-01466: 无法读数据 – 表定义已更改

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:356

ORACLE 9i flashback 报ORA-01466: 无法读数据 - 表定义已更改

[i]SQL> drop table test;
表已丢弃。

SQL> create table test (id number);
表已创建。
SQL>
SQL> insert into test values(100);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
----------
2919310
SQL> update test set id=200;
已更新 1 行。
SQL> update test set id=300;
已更新 1 行。
SQL> update test set id=400;
已更新 1 行。
SQL> update test set id=500;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select id from test;
ID
----------
500
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
----------
2919335
SQL> select id from test as of scn 2919310;
select id from test as of scn 2919310
*
ERROR 位于第 1 行:
ORA-01466: 无法读数据 - 表定义已更改

SQL> select id from test as of scn 2919310
2 ;
select id from test as of scn 2919310
*
ERROR 位于第 1 行:
ORA-01466: 无法读数据 - 表定义已更改

SQL>

这个是因为
在create表后,等5分钟之后再进行相应的scn查询,del操作,因为9i只支持dml的flashback,create等的ddl不支持,你闪回到的scn有可能dml和ddl在5分钟内,所以导致出现ora-01466错误。
而我这次测试确实在表定义之后马上测试的。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】