ORA-01555错误浅析(3)
2009-05-26 13:14:39 来源:WEB开发网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;
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oralce新建数据库、新建远程登录用户全过程
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
更多精彩
赞助商链接