ORACLE 9i flashback 报ORA-01466: 无法读数据 – 表定义已更改
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错误。
而我这次测试确实在表定义之后马上测试的。