同版本 Patch Set 升級(如 11.2.0.1 → 11.2.0.3)屬於小版本升級,風險相對較低,但仍需嚴謹備份與驗證。本文記錄完整操作流程與關鍵注意事項。
select * from v$version;
export ORACLE_SID=orcl rman target / RMAN> backup full database plus archivelog;
教訓: 作者曾因升級過程磁碟空間不足導致 VM 崩潰、資料庫掛掉,最終須從他機冷備遷移恢復。務必預留充足磁碟空間(建議 5-10 GB 以上)。
Oracle 11.2.0.3 共有 7 個 zip 檔,前 2 個為 Database 核心(必須合並解壓),第 3 個為 Grid Infrastructure(RAC 環境需先升級),其餘為 Client、Gateway、Examples。
將 p10404530_112030_Linux-x86-64_1of7.zip 與 _2of7.zip 解壓至同一目錄,目錄結構會自動合併。
./runInstaller關鍵畫面操作:
/home/oracle/ora/product/11.2.0.3/db_1)/etc/oratab:升級腳本會讀取此檔偵測運行中的資料庫實例,確保內容正確# 舊環境 ORACLE_BASE=/home/oracle/ora ORACLE_HOME=$ORACLE_BASE/product/11g/db_1 # 新環境 ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1 # 修改 .bash_profile 或 /etc/profile 後 source 生效
sqlplus / as sysdba spool pre_upgrade.log @$ORACLE_HOME/rdbms/admin/utlu112i.sql spool off -- 檢查日誌,修正建議項目
shutdown immediate startup upgrade select * from v$version; -- 確認版本 select status from v$instance; -- 應顯示 OPEN MIGRATE
spool upgrade.log @$ORACLE_HOME/rdbms/admin/catupgrd.sql spool off -- 過程約 20-60 分鐘視硬體而定
spool post_upgrade.log @$ORACLE_HOME/rdbms/admin/utlu112s.sql spool off -- 檢查是否有 ERROR 或 WARNING
shutdown immediate startup @$ORACLE_HOME/rdbms/admin/utlrp.sql -- 驗證無效物件 select count(*) from dba_objects where status='INVALID'; -- 應為 0
select name from v$database; -- 確認 DB 名稱 show user; -- 確認 SYS select tablespace_name, bytes from dba_data_files; -- 表空間大小 select status from v$instance; -- 應為 OPEN(非 OPEN MIGRATE)
| 問題 | 原因 | 對策 |
|---|---|---|
| 磁碟空間不足 | 升級產生大量暫存檔、Archive Log | 預留 10GB+、定期清理舊 Archive Log |
| 無效物件殘留 | PL/SQL 編譯錯誤、相依物件缺失 | 重複執行 utlrp.sql、檢查 dba_errors |
| 參數不相容 | 舊 pfile 含已棄用參數 | Pre-Upgrade 工具會列出,逐一移除/調整 |
| Listener 版本不符 | 舊 Listener 無法服務新實例 | NetCA 重新配置、啟動新 Home 的 Listener |
若升級失敗無法修復: