ITPub博客

首页 > 数据库 > Oracle > ora-01555模拟以及undo tbs的guarantee特性测试!

ora-01555模拟以及undo tbs的guarantee特性测试!

原创 Oracle 作者:warehouse 时间:2008-09-10 18:58:07 0 删除 编辑
ora-01555模拟以及undo tbs的guarantee特性测试![@more@]

session 1:
SQL> variable i refcursor;
SQL> select *from t1;

ID NAME
---------- ----------
3 c
2 test
4 d
1 undo

SQL> exec open :i for select *from t1;

PL/SQL 过程已成功完成。
session 2:
11:02:00 SQL> create undo tablespace undotbs3 datafile 'E:ORACLEPRODUCT10.2.0
ORADATATESTundotbs3.dbf' size 1m;

表空间已创建。

11:14:48 SQL> alter system set undo_tablespace=undotbs3;

系统已更改。

11:15:04 SQL> alter system set undo_retention=1;

系统已更改。
11:18:02 SQL> declare
11:18:03 2 begin
11:18:03 3 for i in 1..1000 loop
11:18:03 4 update t1 set id=i ;
11:18:03 5 commit;
11:18:03 6 end loop;
11:18:03 7 end;
11:18:03 8 /

PL/SQL 过程已成功完成。
session 1:
SQL> print i;
ERROR:
ORA-01555: 快照过旧: 回退段号 23 (名称为 "_SYSSMU23$") 过小

未选定行
session 2:
11:23:34 SQL> alter tablespace undotbs3 retention GUARANTEE;

表空间已更改。
session 1:
SQL> exec open :i for select *from t1;
session 2:

11:24:37 SQL> declare
11:24:50 2 begin
11:24:50 3 for i in 1..10000 loop
11:24:50 4 update t1 set id=i ;
11:24:50 5 commit;
11:24:50 6 end loop;
11:24:50 7 end;
11:24:51 8 /
declare
*
第 1 行出现错误:
ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS3' 中)
ORA-06512: 在 line 4

session 1:
SQL> update t1 set id=1;

4 rows updated.

SQL> commit;

Commit complete.

SQL> exec open :i for select *from t1;

PL/SQL procedure successfully completed.
session 2:
11:24:53 SQL> alter database datafile 10 autoextend on;

数据库已更改。

11:25:33 SQL> declare
11:25:40 2 begin
11:25:40 3 for i in 1..10000 loop
11:25:40 4 update t1 set id=i ;
11:25:40 5 commit;
11:25:40 6 end loop;
11:25:40 7 end;
11:25:41 8 /

PL/SQL 过程已成功完成。
session 1:
SQL> print i;

ID NAME
---------- ----------
1 c
1 test
1 d
1 undo

SQL>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1010513/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5366325