ora-01555模擬以及undo tbs的guarantee特性測試!

warehouse發表於2008-09-10
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部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1010513/,如需轉載,請註明出處,否則將追究法律責任。

相關文章