Oracle 12c 引入多租戶架構 (CDB/PDB)。現有非 CDB 資料庫可透過 DBMS_PDB.DESCRIBE 產生 XML 描述檔,再以 noncdb_to_pdb.sql 腳本轉換為可插拔資料庫 (PDB)。本文記錄完整轉換流程與驗證步驟。
轉換標準流程
- 關閉資料庫並以 RESTRICTED MOUNT 啟動:
SQL> ALTER DATABASE OPEN READ ONLY;- 產生 PDB 描述 XML**:
SQL> SHUTDOWN IMMEDIATE;- 建立目標 CDB (若無) 並執行轉換腳本**:
SQL> ALTER PLUGGABLE DATABASE ORCL OPEN; SQL> ALTER SESSION SET CONTAINER=ORCL; SQL> SELECT NAME FROM V$DATAFILE; -- 確認資料檔路徑已遷移至 CDB 結構關鍵腳本內容解析 (noncdb_to_pdb.sql)
選項 語法 特點 適用場景 COPY USING ... COPY複製資料檔到新位置、原檔保留 需保留原非 CDB、磁碟空間充足 NOCOPY USING ... NOCOPY直接使用現有資料檔、不複製 原地轉換、節省空間、不可回滾 MOVE USING ... MOVE移動資料檔 (12.2+) 重新佈局儲存、原地轉換 轉換後驗證清單
問題 原因 解決 ORA-65010: PDB 名稱衝突 CDB 中已有同名 PDB 改名 CREATE PLUGGABLE DATABASE NEW_NAME USING ...ORA-65086: 版本不相容 非 CDB 版本高於 CDB 升級 CDB 或降級非 CDB 資料檔路徑衝突 NOCOPY 模式路徑重疊 使用 FILE_NAME_CONVERT重新映射字典升級失敗 非 CDB 有特殊物件 查看 PDB_PLUG_IN_VIOLATIONS視圖逐一修復最佳實踐建議
- 完整備份:轉換前對非 CDB 執行 RMAN 完整備份
- 測試環境先行:在非生產環境完整演練轉換流程
- 應用連線測試:驗證所有應用系統能正確連線新 PDB 服務名
- 效能基準:轉換前後跑基準測試,確認無效能退化
- 文檔化:記錄轉換前後配置參數、資料檔路徑、服務名映射