oracle (OS), sys as sysdba (DB)p5337014_10203_LINUX.zip (Metalink Patch 5337014)unzip p5337014_10203_LINUX.zip → 產生 Disk1 目錄cd Disk1 && ./runInstaller/opt/oracle/product/10.2.0/db_1/root.shexport ORACLE_HOME=/opt/oracle/product/10.2.0/db_1export ORACLE_SID=PRODexport PATH=$ORACLE_HOME/bin:$PATHdbua 啟動圖形介面sqlplus / as sysdba → SELECT * FROM v$version; 確認 10.2.0.3.0# 1. 設定環境變數 (同上)
export ORACLE_SID=PROD
sqlplus / as sysdba
# 2. 以 UPGRADE 模式啟動
SQL> STARTUP UPGRADE;
-- 例程啟動,資料庫掛載並開啟,但限制性會話
# 3. 重建資料字典 (核心步驟,約 30-120 分鐘視大小)
SQL> SPOOL /home/oracle/upgrade.log
SQL> @?/rdbms/admin/catupgrd.sql
-- 大量輸出,請耐心等待
SQL> SPOOL OFF
# 4. 關閉並正常啟動
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
# 5. 重新編譯無效物件
SQL> SELECT COUNT(*) FROM dba_objects WHERE status='INVALID';
SQL> @?/rdbms/admin/utlrp.sql
-- 並行重編譯,等待完成
# 6. 最終驗證
SQL> SELECT tablespace_name, status FROM dba_tablespaces; -- 表空間正常
SQL> SELECT username FROM dba_users; -- 使用者正常
SQL> SELECT COUNT(*) FROM dba_objects WHERE status='INVALID'; -- 應為 0 或極少
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;BIN$... 物件為 10g 新功能,屬正常現象,可 PURGE RECYCLEBIN 清理listener.ora 中的 ORACLE_HOME 參數| 問題 | 原因 | 對策 |
|---|---|---|
| catupgrd.sql 執行錯誤 ORA-00600 | 已知 Bug / 環境參數 | 查閱 Metalink Note 對應 Patch,或改用 DBUA |
| 升級後大量 INVALID 物件 | utlrp.sql 未執行/中斷 | 重跑 utlrp.sql,必要時手動編譯 |
| EM Database Control 無法啟動 | Repository 版本不符 | emca -reconfig dbcontrol -repos recreate |
| 監聽器無法啟動 | listener.ora ORACLE_HOME 舊路徑 | 修正 listener.ora 並 lsnrctl reload |
Oracle 10g 升級 10.2.0.3 分為「軟體二進位升級」與「資料庫字典升級」兩階段。**冷備份是前提**,DBUA 適合中小庫圖形化操作,手工升級適合大型庫、自動化腳本與無圖形環境。升級後務必跑 utlrp.sql、收集字典統計、驗證應用連線,才算真正完成。