在Oracle 12c/19c多租戶環境中,默認情況下,使用startup命令啟動資料庫實體后,你會發現PDB資料庫的狀態為MOUNT狀態,PDB不會隨著CDB啟動而啟動,如下例子所示:
SQL> startup
ORACLE instance started.
Total System Global Area 2432695872 bytes
Fixed Size 9137728 bytes
Variable Size 620756992 bytes
Database Buffers 1795162112 bytes
Redo Buffers 7639040 bytes
Database mounted.
Database opened.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PSUAT MOUNTED
SQL>
Oracle 12.1.0.2之前,CDB啟動后,所有的PDB都處于加載狀態(MOUNTED),CDB啟動時,沒有默認機制自動啟動PDB,只能通過在CDB上建立一個系統觸發器來自動啟動部分或所有PDB,如下所示:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
Oracle12.1.0.2補丁集已引入了保持PDB啟動狀態的能力,因此,不用再通過上面的觸發器方式來實作自動打開PDB,可以通過下面方式讓PDB資料庫自動啟動,
SQL>ALTER PLUGGABLE DATABASE PTEST1 OPEN;
SQL>ALTER PLUGGABLE DATABASE PTEST1 SAVE STATE;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
SQL>SHOW PDBS;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PTEST2 MOUNTED
4 PTEST1 READ WRITE
如上所示,使用命令保存了PDB的STATE后,下次使用命令startup重啟實體,對應的PDB就會啟動到相應狀態(READ WRITE)
--查看PDB保存的狀態
COLUMN CON_NAME FORMAT A20
COLUMN INSTANCE_NAME FORMAT A20
SELECT CON_NAME, INSTANCE_NAME, STATE FROM DBA_PDB_SAVED_STATES;
--被保存的狀態可以通過如下命令被廢棄,
ALTER PLUGGABLE DATABASE T1PDB DISCARD STATE;
更多詳細資訊,可以參考官方檔案How to Preserve Open Mode of PDBs When the CDB Restarts ( 檔案 ID 1933511.1) ,
掃描上面二維碼關注我
如果你真心覺得文章寫得不錯,而且對你有所幫助,那就不妨幫忙“推薦"一下,您的“推薦”和”打賞“將是我最大的寫作動力!
本文著作權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554019.html
標籤:其他
下一篇:返回列表
