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

Oracle 資料庫 OPatch 補丁操作完整流程指南

     編輯:Oracle 資料庫相關知識

前言

OPatch 是 Oracle 官方提供的補丁工具,用於套用 CPU (Critical Patch Update) 與 PSU (Patch Set Update)。本文詳細記錄從準備、安裝、驗證到回滾的完整操作流程,適用於 Windows 與 Linux 環境。

一、補丁前準備工作

1. 確認資料庫版本

SQL> SELECT * FROM v$version;

記錄完整版本號 (如 10.2.0.5.0),作為補丁篩選依據。

2. 查詢已安裝補丁資訊

SQL> SELECT * FROM dba_registry_history;
-- 或 OS 層
$ opatch lsinventory

3. 統計失效物件基準值

SQL> SELECT COUNT(*) AS N1 FROM dba_objects WHERE status = 'INVALID';
-- 建議先編譯
SQL> @?/rdbms/admin/utlrp.sql
-- 再次統計
SQL> SELECT COUNT(*) AS N2 FROM dba_objects WHERE status = 'INVALID';
-- 匯出失效物件清單備查
SQL> SELECT object_name, object_type, owner FROM dba_objects WHERE status = 'INVALID';

4. 區分 CPU 與 PSU 補丁

類型全稱特性適用場景
CPUCritical Patch Update累積性安全修補,含歷次安全修復安全弱點修補
PSUPatch Set Update季度釋出,含 Bug 修復 + 最新 CPU,增量式一般穩定性修補

5. 從官網下載補丁

  • 登入 My Oracle Support (MOS)
  • 搜尋對應版本與平台的補丁編號 (如 13460968)
  • 下載並解壓至作業目錄 (如 E:\13460968)

6. 完整備份

  • 資料庫層:RMAN 全備或 expdp 邏輯備份
  • OS 層:若條件允許,建議做整機快照或檔案級備份

二、補丁安裝操作

1. 詳讀 README.html

確認適用版本、前置條件、已知問題、特殊指令。

2. 設定環境變數

平台設定方式
Windows系統屬性 → 環境變數 → 編輯 PATH,附加 %ORACLE_HOME%\OPatch
或 CMD 下:set PATH=%PATH%;%ORACLE_HOME%\OPatch
Linuxexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/OPatch:$PATH

驗證:opatch -help 顯示說明即成功。

3. 停止服務與監聽

  • Windows:服務管理器停止所有 OracleService*、Oracle*Listener、*DBConsole 服務;關閉 PL/SQL、SQL*Plus 等客戶端。
  • Linux:sqlplus / as sysdba → SHUTDOWN IMMEDIATE;lsnrctl stop;停止 GI/Grid 相關進程。

4. 執行補丁安裝

cd E:\13460968
opatch apply

常見阻擋處理:若提示 oci.dll 被佔用 (Windows) 或進程殘留 (Linux),可暫時重命名該檔案 (如 oci.dll.bak),安裝完成後改回。

5. 啟動資料庫與監聽

  • Windows:服務管理器啟動 Oracle 服務與 Listener
  • Linux:STARTUP、lsnrctl start

6. 執行補丁後置腳本

SQL> @E:\13460968\files\Bundle\Patch14\catcpu.sql

路徑視補丁而定,通常在 files/Bundle/Patch* 下。

7. 重新編譯失效物件並驗證

SQL> @?/rdbms/admin/utlrp.sql
SQL> SELECT COUNT(*) AS N3 FROM dba_objects WHERE status = 'INVALID';
-- 比對 N3 vs N2,若新增失效需逐一排查

8. 驗證補丁生效

SQL> SELECT * FROM dba_registry_history;
$ opatch lsinventory

三、補丁回滾流程

# 1. 停止服務 (同上)
# 2. 設定環境變數
# 3. 執行回滾
opatch rollback -id 13460968

# 4. 啟動服務 (Windows 需將重命名的 dll 改回)
# 5. 執行回滾腳本
SQL> @E:\13460968\files\Bundle\Patch14\catcpu_rollback.sql

# 6. 驗證資料庫正常

關鍵提醒

  • 補丁操作必須停止應用與服務,務必先備份。
  • Windows 下 oci.dll 佔用問題高發,善用重命名大法。
  • 生產環境建議先在測試環境演練全流程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved