模拟ORA-01555快照过旧 错误
SQL> create undo tablespace undo2 datafile 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/UNDO2.DBF' SIZE 2M autoextend off;
表空间已创建。
SQL> alter system set undo_tablespace=undo2;
SQL> alter system set undo_retention=1;
系统已更改。
Session1中:create table tt(n number,b varchar2(10));
Insert into tt values(1,’robinson’);
Insert into tt values(1,’robinson’);
Insert into tt values(1,’robinson’);
Commit;
SESSION2中
variable i refcursor
exec open :i for select * from tt;
session1中运行一个很大的事物
begin
for i in 1..1000 loop
update undotest set n=1000;
commit;
end loop;
end;
session2中print i;
此时由于undo 表空间不能自动扩展,undo_retention设置过小 undo 信息会被很快覆盖,从而产生快照过旧错误
另外还有快清除能产生 快照过旧错误,这里没有再试验,因为其原理还弄得不十分明白,明白后补上.