resumable特性以及系統觸發器中的SUSPEND event測試!

warehouse發表於2008-03-20
之前一直沒有搞清楚系統觸發器中的suspend事件什麼時候觸發,正好看到一位puber問此問題,搜尋一下doc,做了一個簡單的測試。[@more@]

參考doc:

session1:
SQL> create tablespace users datafile 'E:ORACLEPRODUCT10.2.0ORADATAORCLUSE
RS.DBF' SIZE 3M;

表空間已建立。

SQL> grant resumable to xys;

授權成功。

SQL> create or replace trigger trigg_system
2 after suspend on database
3 begin
4 dbms_resumable.set_timeout(10);
5 end;
6 /

警告: 建立的觸發器帶有編譯錯誤。

SQL> show error
TRIGGER TRIGG_SYSTEM 出現錯誤:

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/2 PL/SQL: Statement ignored
2/2 PLS-00201: 必須宣告識別符號 'DBMS_RESUMABLE'
SQL> create or replace trigger trigg_system
2 after suspend on database
3 begin
4 dbms_resumable.set_timeout(10);
5 end;
6 /

警告: 建立的觸發器帶有編譯錯誤。

SQL> connect /as sysdba
已連線。
SQL> grant execute on dbms_resumable to xys;

授權成功。

SQL> connect xys/manager
已連線。
SQL> create or replace trigger trigg_system
2 after suspend on database
3 begin
4 dbms_resumable.set_timeout(10);
5 end;
6 /

觸發器已建立

session2:
SQL> create table t_resumable tablespace users as select *from dba_objects;

表已建立。

SQL> insert into t_resumable select *from t_resumable;
insert into t_resumable select *from t_resumable
*
第 1 行出現錯誤:
ORA-01653: 表 XYS.T_RESUMABLE 無法透過 128 (在表空間 USERS 中) 擴充套件


SQL> alter session enable resumable;

會話已更改。

--注意這裡insert操作會等待10秒,10秒之後出現了錯誤
SQL> insert into t_resumable select *from t_resumable;
insert into t_resumable select *from t_resumable
*
第 1 行出現錯誤:
ORA-30032: 掛起的 (可恢復) 語句已超時
ORA-01653: 表 XYS.T_RESUMABLE 無法透過 128 (在表空間 USERS 中) 擴充套件

--回到session1修改一下timeout時間(10秒有些短,來不及修改datafile 4的autoextend屬性),單位是秒
SQL> create or replace trigger trigg_system
2 after suspend on database
3 begin
4 dbms_resumable.set_timeout(60);
5 end;
6 /

觸發器已建立

session2:
--此時下面insert會等待60秒,如果60秒之後發現空間可用,則繼續執行
SQL> insert into t_resumable select *from t_resumable;

已建立11413行。

--此期間在session1中修改datafile 4使其能自動擴充套件

SQL> alter database datafile 4 autoextend on;

資料庫已更改。

SQL>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1001252/,如需轉載,請註明出處,否則將追究法律責任。

相關文章