模拟ORA01555快照过旧 错误

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;

session2print i;

 此时由于undo 表空间不能自动扩展,undo_retention设置过小 undo 信息会被很快覆盖,从而产生快照过旧错误

 另外还有快清除能产生 快照过旧错误,这里没有再试验,因为其原理还弄得不十分明白,明白后补上.

 

原文地址:https://www.cnblogs.com/hehe520/p/6330709.html