在 Oracle 11.2.0.3 使用 DBUA (Database Upgrade Assistant) 升級資料庫時,若在「快速復原區 (FRA)」步驟指定 ASM 磁碟群組,DBUA 介面會無回應。追蹤日誌顯示 NullPointerException,根因是來源資料庫的 compatible 參數未在 PFILE/SPFILE 中顯式設定。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at oracle.sysman.assistants.util.InstallUtils.compareVersion(InstallUtils.java:266)
at oracle.sysman.assistants.util.asm.ASMUtils.validateDiskGroup(ASMUtils.java:1154)
at oracle.sysman.assistants.dbma.backend.CloneValidator.isDiskGroupCompatible(CloneValidator.java:654)
at oracle.sysman.assistants.dbma.backend.CloneValidator.isRecoveryAreaValidated(CloneValidator.java:431)
at oracle.sysman.assistants.dbma.ui.OracleBasePage.doNext(OracleBasePage.java:956)
DBUA 驗證 FRA 磁碟群組相容性時,需比對來源資料庫與目標 ASM 磁碟群組的 compatible 參數。若來源資料庫的 PFILE/SPFILE 中未顯式設定 compatible,DBUA 讀取到 null 值,導致 compareVersion 拋出 NPE。
compatible 參數:compatible = x.x.0.0compatible = 10.2.0 或 compatible = 10.2.0.5ORA-00201: control file version incompatibleSELECT * FROM DBA_REGISTRY_HISTORY 確認資料庫是 DBCA 全新建立還是升級而來,升級而來的資料庫最易遺漏此參數SET PAGES 100 LINES 200
COL ACTION FOR A16
COL NAMESPACE FOR A10
COL VERSION FOR A10
COL COMMENTS FOR A30
COL ACTION_TIME FOR A30
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';
SELECT * FROM DBA_REGISTRY_HISTORY;
輸出若含 UPGRADE 列且 COMMENTS 顯示 Upgraded from 10.2.0.5.0,即為升級資料庫,需特別檢查 compatible 參數。