WEB开发网
开发学院数据库Oracle ORA-01555错误浅析(3) 阅读

ORA-01555错误浅析(3)

 2009-05-26 13:14:39 来源:WEB开发网   
核心提示: 4 commit;5 end loop;6 end;78 /PL/SQL procedure successfully completed.SQL> /PL/SQL procedure successfully completed.查询到更新过的数据记录,回滚信息已经被覆盖,ORA-

4 commit;

5 end loop;

6 end;

7

8 /

PL/SQL procedure successfully completed.

SQL> /

PL/SQL procedure successfully completed.

查询到更新过的数据记录,回滚信息已经被覆盖,所以报1555错误。

SQL> print :cl

ERROR:

ORA-01555: snapshot too old: rollback segment number 18 with name "_SYSSMU18$"

too small

no rows selected

SQL>

延迟块清除导致的1555错误

开始读取表。

 SQL> var cc refcursor

SQL>

SQL> begin

2 open :cc for select * from t_multiver;

3 end;

4 /

这时一个事务更新了该数据块,但在提交前,我们手工将buffer cache中的数据做了flush,再做提交。这时的数据块上只记录了锁标志,没有事务标志和Commit SCN。

 PL/SQL procedure successfully completed.

SQL>

SQL> update t_multiver set b=115 where a=1;

1 row updated.

SQL>

SQL> alter system flush buffer_cache;

System altered.

SQL>

SQL> commit;

Commit complete.

进行非常多的事务,将回滚段中的事务信息表中的数据全部覆盖:

SQL>

SQL> begin

2 -- overwrite rollback slot

3 for i in 1..40000 loop

4 update t_dual set dummy=1;

5 commit;

上一页  1 2 3 4 5 6 7  下一页

Tags:ORA 错误 浅析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接