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博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1010513/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/19602/viewspace-1010513/