Oracle12c中多宿主環境(CDB&PDB)的數據庫觸發器(Database Trigger)

Oracle12c中可插拔數據庫(PDBs)上的多宿主數據庫觸發器數據庫

隨着多宿主選項的引入,數據庫事件觸發器能夠在CDB和PDB範圍內建立。安全

1.   觸發器範圍服務器

爲了在CDB中建立數據庫事件觸發器,須要以通用用戶登陸到數據庫,且該用戶須要被授予ADMINISTER DATABASETRIGGER系統權限。事件

CONN sys@cdb1 AS SYSDBA事務

 

CREATE OR REPLACE TRIGGER cdb1_aftr_strtup_trgtest

AFTER STARTUP ON DATABASE登錄

BEGIN配置

  --觸發器操做代碼權限

  NULL;數據

END;

/

爲了在PDB中建立一個數據庫觸發器,須要以通用用戶或本地用戶鏈接該數據庫,且該用戶須要被授予該數據庫範圍內的ADMINISTER DATABASETRIGGER系統權限。ON DATABASE 和ON PLUGGABLE DATABASE子句在PDB內做用是同樣的,但有些事件要求顯式的ON PLUGGABLE DATABASE子句。

CONN sys@pdb1 AS SYSDBA

 

CREATE OR REPLACE TRIGGER pdb1_aftr_strtup_trg

AFTER STARTUP ON PLUGGABLE DATABASE

BEGIN

  -- 觸發器操做代碼

  NULL;

END;

/

 

CREATE OR REPLACE TRIGGER pdb1_aftr_strtup_trg

AFTER STARTUP ON DATABASE

BEGIN

  -- 觸發器操做代碼

  NULL;

END;

/

有些事件觸發器也能夠用於CDB和PDB的模式層面。功能並未因多宿主選項而改變。

CONN sys@cdb1 AS SYSDBA

 

CREATE OR REPLACE TRIGGER cdb1_aftr_lgn_trg

AFTER LOGON ON test.SCHEMA

BEGIN

  -- 觸發器操做代碼

  NULL;

END;

/

 

CONN sys@pdb1 AS SYSDBA

 

CREATE OR REPLACE TRIGGER pdb1_aftr_lgn_trg

AFTER LOGON ON test.SCHEMA

BEGIN

  -- 觸發器操做代碼

  NULL;

END;

/

2.   可用事件

1)    下列數據庫時間都可用於CDB和PDB層面。

ü  AFTER STARTUP :CDB或PDB打開後觸發器觸發。

ü  BEFORE SHUTDOWN :CDB或PDB關閉前觸發器觸發。

ü  AFTER SERVERERROR。可用於PDB當服務器錯誤信息被記錄且觸發錯誤觸發器安全時觸發器將被觸發,可用於數據庫或模式層面。

ü  AFTER LOGON :當客戶端登陸到CDB或PDB時觸發器觸發,可用於數據庫或模式層面。

ü  BEFORE LOGOFF:客戶端退出CDB或PDB時觸發,可用於數據庫或模式層面。

ü  AFTER SUSPEND :當服務器錯誤引發事務暫停時觸發器觸發,可用於數據庫或模式層面。

ü  BEFORE SET CONTAINER:SET CONTAINER命令執行前觸發器觸發,可用於數據庫或模式層面。

ü  AFTER SET CONTAINER:SET CONTAINER命令執行後觸發器觸發,可用於數據庫或模式層面。

2)    下列數據庫事件僅用於CDB層面。

ü  AFTER DB_ROLE_CHANGE:在DG配置環境中,當數據庫角色從主庫切換爲備庫或從備庫切換爲主庫時觸發。

3)    下列數據庫事件只能用於PDB層面,且要求顯式的ON PLUGGABLEDATABASE子句,使用ON DATABASE子句會致使報錯。

ü  AFTER CLONE :克隆操做完成後,觸發器就在新PDB中觸發,且隨後該觸發器被刪除。若是觸發器失敗,克隆操做也會失敗。

ü  BEFORE UNPLUG :在去插拔操做前,觸發器在PDB中觸發,且隨後該觸發器被刪除。若是觸發器失敗,去插拔操做也將失敗。

相關文章
相關標籤/搜索