首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle PSU/CPU 補丁全攻略:定義、查找、安裝驗證與常見誤區

     編輯:Oracle 資料庫相關知識

Oracle 季度發布的 CPU (Critical Patch Update) 與 PSU (Patch Set Update) 是資料庫安全與穩定的生命線。本文系統整理兩者差異、最新版本查找、標準安裝流程、驗證方法與避坑指南。

一、CPU vs PSU 核心差異

項目CPU (Critical Patch Update)PSU (Patch Set Update)
發布頻率每季度每季度(同 CPU 時程)
內容僅安全修補安全修補 + 高優先級 Bug 修復
風險極低(最小化變更)低(經驗證的 Bug 修復)
包含關係獨立包含當期 CPU
建議僅需安全合規時生產環境首選

結論:生產環境請直接套用 PSU,即可同時獲得安全與穩定修復。

二、如何查找最新 PSU 版本

  1. 登入 MOS (My Oracle Support)。
  2. 搜尋文件 ID 756671.1:Oracle Recommended Patches — Oracle Database。
  3. 或關鍵字搜尋 PSU,該文件通常排首位。
  4. 表格列出各版本最新 PSU,如:
    • 10.2.0.4 → 最新 PSU 10.2.0.4.8
    • 11.2.0.2 → 最新 PSU 11.2.0.2.2
    • 11.2.0.3 → 最新 PSU 11.2.0.3.x
    • 12.1.0.2 → 最新 PSU 12.1.0.2.x

注意:需購買 Oracle 支援服務並擁有 CSI 號才能登入 MOS。

三、PSU 標準安裝流程(4 步驟)

步驟 1:確認/升級 OPatch 版本

$ opatch version
OPatch Version: 10.2.0.5.2  -- 需符合 README 要求最低版本

# 如版本過舊,下載 Patch 6880880 (最新 OPatch)
$ unzip p6880880_*.zip -d $ORACLE_HOME
# 覆蓋 $ORACLE_HOME/OPatch 目錄

步驟 2:套用 PSU (二進位補丁)

$ cd 
$ opatch apply
# 依 README 確認是否需先套用前置 PSU(如 10.2.0.4.8 需先裝 10.2.0.4.4)

步驟 3:更新資料庫 (執行 SQL 腳本) — 最易被遺漏的關鍵步驟

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus / as sysdba
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
  • 若為 Overlay PSU (如 10.2.0.4.8),指令為 @catbundle.sql opsu apply。
  • 此步驟將修補腳本應用到資料庫字典,未執行則 PSU 未真正生效。

步驟 4:重新編譯 CPU 相關視圖 (僅需執行一次)

$ 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 未完整安裝。

四、驗證 PSU 安裝狀態

方法一:OPatch 清單查詢 (推薦)

$ 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)

方法二:查詢 REGISTRY$HISTORY 表

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 被略過,表中無記錄。健康檢查必須雙重驗證。

方法三:補登歷史 PSU 記錄

$ 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 (支援版本) 或全停套用

六、參考文檔

  • MOS Doc ID 756671.1:Oracle Recommended Patches — Oracle Database
  • MOS Doc ID 854428.1:Patch Set Updates for Oracle Products
  • MOS Doc ID 605795.1:Introduction To Oracle Database catbundle.sql
  • MOS Doc ID 821263.1:How to confirm that a CPU has been installed in Linux/UNIX
  • Maclean Liu 部落格:了解 Oracle Critical Patch Update
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved