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

ORA-01555错误浅析(3)

 2009-05-26 13:14:39 来源:WEB开发网   
核心提示:1555错误发生的情况下面我们就模拟一下1555错误发生的情况,测试环境首先建立测试环境,ORA-01555错误浅析(3),由于我们只是要模拟1555错误的发生,所以需要建立一个小的回滚表空间,充满所有回滚段,以致覆盖上面的回滚信息,并且设置undo_retention时间为1(秒),以便回滚数据尽快被覆盖(呵呵

1555错误发生的情况

下面我们就模拟一下1555错误发生的情况。

测试环境

首先建立测试环境。由于我们只是要模拟1555错误的发生,所以需要建立一个小的回滚表空间,并且设置undo_retention时间为1(秒),以便回滚数据尽快被覆盖(呵呵,要防止1555错误发生,这就一定要避免的)。

CREATE UNDO TABLESPACE rbs_ts

DATAFILE 'rbs_ts2.dbf' SIZE 10M AUTOEXTEND OFF;

alter system set undo_retention=1 scope=spfile;

alter system set undo_management=auto scope=spfile;

alter system set undo_tablespace=rbs_ts scope=spfile;

startup force

alter tablespace rbs_ts online;

create table demo.t_dual as select * from dual;

insert into t_dual values(1);

commit;

一致性读导致的1555错误

开始读取表。

SQL>

SQL> var cl refcursor

SQL> begin

2 open :cl for select * from demo.t_multiver;

3 end;

4 /

PL/SQL procedure successfully completed.

SQL>

更新表数据,产生回滚信息。

 SQL> update demo.t_multiver set b = 111 where a = 1;

1 row updated.

SQL> commit;

Commit complete.

运行大批其他事务,充满所有回滚段,以致覆盖上面的回滚信息。回滚段可以通过dba_rollback_segs查看。

 SQL> begin

2 for i in 1..20000 loop

3 update demo.t_dual set dummy=1;

1 2 3 4 5 6  下一页

Tags:ORA 错误 浅析

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