12c 多租戶架構下,CDB 與 PDB 的啟動/關閉邏輯較傳統單實例更豐富。本文系統整理 CDB 標準啟關、PDB 兩種操作模式(SQL*Plus 命令與 ALTER PLUGGABLE DATABASE)、多 PDB 批次控制、以及觸發器實現 PDB 隨 CDB 自動 OPEN的最佳實務。
語法與非 CDB 完全一致:
STARTUP [NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY] SHUTDOWN [IMMEDIATE | ABORT]
關鍵行為:
先切換 Session 至目標 PDB,再使用標準啟關命令:
-- 當前在 CDB$ROOT SQL> ALTER SESSION SET CONTAINER = pdbcndba; SQL> STARTUP; -- 或 STARTUP OPEN READ WRITE [RESTRICT] / STARTUP OPEN READ ONLY / STARTUP UPGRADE SQL> SHUTDOWN [IMMEDIATE];
注意: 切換至 PDB 後,V$PDBS 僅顯示當前 PDB 資訊。
可在 CDB 或 PDB 中執行,支援批次控制多個 PDB:
ALTER PLUGGABLE DATABASE OPEN [READ WRITE | READ ONLY | UPGRADE] [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE CLOSE [IMMEDIATE];
-- 在 CDB$ROOT SQL> ALTER PLUGGABLE DATABASE ALL CLOSE; -- 所有 PDB 變為 MOUNTED SQL> ALTER SESSION SET CONTAINER = pdbcndba; SQL> ALTER PLUGGABLE DATABASE OPEN; -- 單一 PDB 開啟 READ WRITE
CREATE OR REPLACE TRIGGER open_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; END open_pdbs; /
原理: CDB 完成 OPEN 後觸發 AFTER STARTUP,動態 SQL 執行批次開啟。
注意: 觸發器在 CDB$ROOT 建立,需 ADMINISTER DATABASE TRIGGER 權限。