Oracle 季度發布的 CPU (Critical Patch Update) 與 PSU (Patch Set Update) 是資料庫安全與穩定的生命線。本文系統整理兩者差異、最新版本查找、標準安裝流程、驗證方法與避坑指南。
| 項目 | CPU (Critical Patch Update) | PSU (Patch Set Update) |
|---|---|---|
| 發布頻率 | 每季度 | 每季度(同 CPU 時程) |
| 內容 | 僅安全修補 | 安全修補 + 高優先級 Bug 修復 |
| 風險 | 極低(最小化變更) | 低(經驗證的 Bug 修復) |
| 包含關係 | 獨立 | 包含當期 CPU |
| 建議 | 僅需安全合規時 | 生產環境首選 |
結論:生產環境請直接套用 PSU,即可同時獲得安全與穩定修復。
Oracle Recommended Patches — Oracle Database。PSU,該文件通常排首位。注意:需購買 Oracle 支援服務並擁有 CSI 號才能登入 MOS。
$ opatch version
OPatch Version: 10.2.0.5.2 -- 需符合 README 要求最低版本
# 如版本過舊,下載 Patch 6880880 (最新 OPatch)
$ unzip p6880880_*.zip -d $ORACLE_HOME
# 覆蓋 $ORACLE_HOME/OPatch 目錄
$ cd
$ opatch apply
# 依 README 確認是否需先套用前置 PSU(如 10.2.0.4.8 需先裝 10.2.0.4.4)
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus / as sysdba
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
@catbundle.sql opsu apply。$ cd $ORACLE_HOME/cpu/view_recompile
$ sqlplus / as sysdba
SQL> @recompile_precheck_jan2008cpu.sql
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP UPGRADE
SQL> @view_recompile_jan2008cpu.sql
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> QUIT
此步驟完成 2008 年首發 CPU 的後續編譯工作,若歷史上已執行過可略過。未執行不影響運行,但意味著 2008 CPU 未完整安裝。
$ opatch lsinventory -bugs_fixed | grep -i 'DATABASE PSU'
11724977 ... DATABASE PSU 10.2.0.4.8 (REQUIRES PRE-REQUISITE)
9352164 ... DATABASE PSU 10.2.0.4.4 (INCLUDES CPUAPR2010)
... (列出所有已套用 PSU)
SQL> SELECT ACTION, COMMENTS FROM REGISTRY$HISTORY;
ACTION COMMENTS
----------------------- --------------------
APPLY PSU 10.2.0.4.4
APPLY PSU 10.2.0.4.8
CPU view recompilation
注意:此表記錄來源於步驟 3 catbundle.sql,若步驟 3 被略過,表中無記錄。健康檢查必須雙重驗證。
$ ls -l $ORACLE_HOME/psu/
drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.4
drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.5
SQL> @?/psu/10.2.0.4.4/catpsu.sql
SQL> @?/psu/10.2.0.4.5/catopsu.sql
... 依序補跑
| 誤區 | 正確做法 |
|---|---|
| 只跑 opatch apply,不跑 catbundle.sql | 二進位補丁未進資料庫字典,PSU 不生效 |
| V$VERSION 顯示版本號未變,以為沒裝成功 | 版本號不變,需用 opatch lsinventory 或 REGISTRY$HISTORY 驗證 |
| 直接套用最新 PSU 忽略前置需求 | 務必閱讀 README,部分 PSU 需先裝特定基礎版本 |
| CPU 與 PSU 混裝 | PSU 已含 CPU,勿重複套用 CPU,避免衝突 |
| RAC 節點未同步套用 | 所有節點必須同版本,建議 Rolling Apply (支援版本) 或全停套用 |
了解 Oracle Critical Patch Update