Oracle 12c 引入多租戶架構,將資料庫劃分為容器資料庫(CDB)與可攜式資料庫(PDB)。參數管理方式較傳統單實例資料庫更具彈性,但也需掌握層級與作用範圍的關鍵差異。本文系統整理 CDB 與 PDB 參數的設定語法、繼承機制與實務操作建議。
連接至 Root Container(CDB$ROOT)後,使用 ALTER SYSTEM 修改初始化參數,語法與非 CDB 環境一致。預設僅對當前 Container 生效,以下兩條語句等價:
ALTER SYSTEM SET parameter_name = value; ALTER SYSTEM SET parameter_name = value CONTAINER = CURRENT;
若需讓參數對所有 Container(包含所有 PDB)生效,請指定 CONTAINER = ALL:
ALTER SYSTEM SET parameter_name = value CONTAINER = ALL;
注意:在 Root Container 以 ALL 修改後,所有 PDB 將繼承該參數值,除非在個別 PDB 中再次單獨覆蓋。
PDB 可繼承 CDB 以 CONTAINER=ALL 設定的參數,也可在 PDB 內部獨立修改。但前提是該參數支援 PDB 級修改,可透過以下查詢確認:
COLUMN name FORMAT A35 COLUMN value FORMAT A35 SELECT name, value FROM v$system_parameter WHERE ispdb_modifiable = 'TRUE' ORDER BY name;
典型環境約有 170 多個參數支援 PDB 級修改。修改步驟如下:
CONN / AS SYSDBA ALTER SESSION SET CONTAINER = pdb1; ALTER SYSTEM SET parameter_name = value; ALTER SYSTEM SET parameter_name = value CONTAINER = CURRENT;
ALTER DATABASE 命令在 CDB 中仍適用,部分操作影響整個 CDB 及所有 PDB,部分僅限 Root Container。具體語法請參考 Oracle 官方文件:
CDB 管理指南
針對特定 PDB 的管理,建議使用 ALTER PLUGGABLE DATABASE,亦可沿用 ALTER DATABASE 以相容舊版。常見操作範例:
CONN / AS SYSDBA ALTER SESSION SET CONTAINER = pdb1; -- 設定預設版本、表空間類型與預設表空間 ALTER PLUGGABLE DATABASE DEFAULT EDITION = ora$base; ALTER PLUGGABLE DATABASE SET DEFAULT BIGFILE TABLESPACE; ALTER PLUGGABLE DATABASE SET DEFAULT SMALLFILE TABLESPACE; ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE users; ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE temp; -- 變更全域名稱(會影響服務註冊名稱) ALTER PLUGGABLE DATABASE OPEN RESTRICTED FORCE; ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO pdb1a.localdomain; ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE OPEN; -- 設定時區 ALTER PLUGGABLE DATABASE SET TIME_ZONE = 'GMT'; -- 資料檔離線/上線與儲存調整 ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' OFFLINE; ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' ONLINE; ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' RESIZE 1G AUTOEXTEND ON NEXT 1M; -- 補充日誌 ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER PLUGGABLE DATABASE DROP SUPPLEMENTAL LOG DATA; -- 儲存配額控制 ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 5G); ALTER PLUGGABLE DATABASE STORAGE (MAX_SHARED_TEMP_SIZE 2G); ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 5G MAX_SHARED_TEMP_SIZE 2G); ALTER PLUGGABLE DATABASE STORAGE UNLIMITED;
透過儲存配額可限制 PDB 總資料檔大小與共享暫存表空間使用量,防止單一 PDB 佔用過多資源。
CONTAINER=ALL 設定通用參數,減少重複維護。v$system_parameter 中的 ispdb_modifiable 欄位,確認參數可修改範圍。ALTER PLUGGABLE DATABASE STORAGE 實作資源隔離與配額治理。