一、升級必要性評估
- 需使用新版特性(In-Memory、Multitenant、Sharding 等)
- 效能瓶頸無法透過調校解決
- 作業系統平台遷移(Windows → Linux)
- 安全性合規要求
- 舊版終止支援(Premier Support 結束)
原則: 系統穩定無瓶頸時,勿輕易升級,風險與收益需權衡。
二、常見升級/遷移情境
| 情境 | 說明 |
| 同主機跨版本升級 | 如 11.2.0.4 → 19c |
| 套用 Patch Set | 如 11.2.0.3 → 11.2.0.4 |
| 跨平台遷移 | Windows → Linux/Unix |
| 跨平台跨版本 | Windows 11g → Linux 19c |
| 32-bit → 64-bit | 記憶體擴充需求 |
| Standard → Enterprise Edition | 功能需求升級 |
三、升級前測試計畫
- 升級測試
- 最小化測試
- 功能測試
- 整合測試
- 效能測試
- 容量與負載壓力測試
- 升級前/後特定測試
- 備份方案驗證
- 升級步驟演練(反覆練習)
- 升級後資料庫驗證
四、升級準備工作
- 研讀新版新特性與參數變更
- 確認升級路徑(見下表)
- 選擇升級工具:DBUA / 手工腳本 / Data Pump / Transportable Tablespace / GoldenGate
- 規劃 ORACLE_HOME(新舊分離)
- 完整備份(RMAN Level 0 + Archive Log)
五、Oracle 10gR2 升級路徑對照表
| 來源版本 | 升級路徑 |
| 9.2.0.4+ | 直接升級至 10.2 |
| 9.0.1.4+ | 直接升級至 10.2 |
| 8.1.7.4+ | 直接升級至 10.2 |
| 9.2.0.1~3 | 先 Patch 至 9.2.0.4 → 10.2 |
| 8.1.7.0~3 | 先 Patch 至 8.1.7.4 → 10.2 |

六、手工腳本升級實戰:9.2.0.4 → 10.2.0.3
- 安裝 10gR2 軟體(僅軟體,不建庫)
- 套用 10.2.0.2、10.2.0.3 Patch Set
- 執行 Pre-Upgrade Tool:
@$ORACLE_HOME/rdbms/admin/utlu102i.sql,檢查日誌修正問題
- 複製 9i pfile 至 10g 目錄並調整參數
- NetCA 產生 10g listener.ora
- RMAN 完整備份
- 停止 9i 服務,刪除舊服務,建立 10g 服務:
oradim -new -sid orcl ...
STARTUP UPGRADE 啟動升級模式
- 建立 SYSAUX 表空間
- 執行升級腳本:
@$ORACLE_HOME/rdbms/admin/catupgrd.sql
- 執行升級後檢查:
@$ORACLE_HOME/rdbms/admin/utlu102s.sql
- 重啟資料庫,編譯無效物件:
@utlrp.sql
- 驗證:
select count(*) from dba_objects where status='INVALID'; 應為 0
七、DBUA (Database Upgrade Assistant) 圖形化升級
- 自動化上述所有手工步驟
- 提供檢查清單、備份選項、參數建議
- 支援靜默模式:
dbua -silent -sid orcl -oracleHome /new/home
- 僅限同平台升級,跨平台需配合其他工具
八、遷移工具選型建議
| 工具 | 適用場景 | 停機時間 |
| DBUA / 手工腳本 | 同平台升級 | 中 |
| Data Pump (expdp/impdp) | 跨平台、跨版本、結構重組 | 長 |
| Transportable Tablespace | 大型資料庫跨平台、同版本 | 短 |
| GoldenGate / XStream | 近零停機異構同步 | 極短 |
| RMAN Duplicate/Restore | 同版本同平台克隆 | 中 |