客戶 32 位 Oracle 系統磁碟損壞,需遷移至 64 位新硬體 (64G 記憶體、RHEL 6.2)。因 wordsize 差異,直接複製資料檔不可行,系統存儲過程需手動重編譯。以下為完整遷移流程。
ALTER DATABASE BACKUP CONTROLFILE TO TRACE; 取得 CREATE CONTROLFILE 腳本。SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS='INVALID';、SELECT COMP_NAME, STATUS FROM DBA_REGISTRY; 均應為 VALID。STARTUP UPGRADE; -- 10g/11g SPOOL mig.log; @?/rdbms/admin/utlirp.sql SPOOL OFF;
@?/olap/admin/catnoamd.sql @?/olap/admin/olapidrp.plb @?/olap/admin/catnoxoq.sql @?/olap/admin/catnoaps.sql @?/olap/admin/cwm2drop.sql -- 僅 11g 需執行
@?/rdbms/admin/utlrp.sql(此時會報錯,因 OLAP 未裝)。@?/olap/admin/olap.sql SYSAUX TEMP;@?/rdbms/admin/utlrp.sql 完成編譯。SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS<>'VALID'; 應為 0,DBA_REGISTRY 全部 VALID。遷移後驗證: SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS<>'VALID'; -- 0 SELECT COMP_NAME, STATUS FROM DBA_REGISTRY; -- 17 組件皆 VALID