Oracle - 數據庫打補丁最佳實踐


一、概述

本文將介紹如何給oracle數據庫打最新補丁,數據庫版本為11.2.0.4單實例,操作系統為redhat6.5


二、下載相關升級包

1. 登錄MOS,查閱(ID 2118136.2),下載最新補丁包

1

PSU (Patch Set Update),數據庫補丁


2. 搜索"Patch 6880880",下載最新opatch

2

opatch是安裝補丁的程序,數據庫軟件安裝完成后,就自帶了opatch,但是版本太舊了,所以這里下載最新的opatch

至此已下載兩個文件
p6880880_112000_Linux-x86-64.zip:opatch升級包
p29913194_112040_Linux-x86-64.zip:數據庫補丁


三、升級opatch

opatch的升級比較簡單,就是個文件覆蓋

3. 查看原始opatch信息

[oracle@orasingle ~]$ cd $ORACLE_HOME/OPatch
[oracle@orasingle OPatch]$ ./opatch version  # 查看版本信息

OPatch Version: 11.2.0.3.4

OPatch succeeded.


[oracle@orasingle OPatch]$ ./opatch lsinventory  # 查看打補丁的情況

Oracle Interim Patch Installer version 11.2.0.3.4
Copyright (c) 2012, Oracle Corporation.  All rights reserved.

Oracle Home       : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version    : 11.2.0.3.4
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2019-12-25_14-26-47PM_1.log

Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2019-12-25_14-26-47PM.txt

--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Database 11g                                                  11.2.0.4.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------

OPatch succeeded.


4. 備份原opatch

[oracle@orasingle ~]$ cd $ORACLE_HOME
[oracle@orasingle db_1]$ mv OPatch OPatch.bak


5. 解壓新下載的opatch包

將下載的opatch包上傳到oracle的家目錄
[oracle@orasingle db_1]$ cd ~
[oracle@orasingle ~]$ unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME


6. 再來查看opatch信息

[oracle@orasingle ~]$ cd $ORACLE_HOME/OPatch
[oracle@orasingle OPatch]$ ./opatch version  # 查看版本信息

OPatch Version: 11.2.0.3.21

OPatch succeeded.

至此opatch升級完畢


四、打數據庫補丁

7. 關閉em、監聽、數據庫

[oracle@orasingle ~]$ emctl stop dbconsole  # 如果沒有開啟em,這步可以跳過

[oracle@orasingle ~]$ lsnrctl stop

[oracle@orasingle ~]$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit


8. 解壓新下載的補丁包

將下載的補丁包上傳到oracle的家目錄
[oracle@orasingle ~]$ cd ~
[oracle@orasingle ~]$ unzip p29913194_112040_Linux-x86-64.zip


9. 校驗該補丁包是否與之前的補丁有沖突

[oracle@orasingle ~]$ cd 29913194
[oracle@orasingle 29913194]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Oracle Interim Patch Installer version 11.2.0.3.21
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version    : 11.2.0.3.21
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2019-12-25_14-46-26PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

由於這個測試庫之前並沒有打什么補丁,所以這里就不可能有補丁沖突的問題,如果這里顯示有沖突,再去mos上查找相關解決方案。


10. 正式升級

[oracle@orasingle 29913194]$ $ORACLE_HOME/OPatch/opatch apply

3

這里要輸入3次y和一次回車,這個是時間耗時比較久的,耐心等待

4

升級完成后報上面的錯誤,通過查閱mos(ID 2265726.1),可知這個錯誤可以被忽略


11. 再次查看打補丁的情況

[oracle@orasingle 29913194]$ $ORACLE_HOME/OPatch/opatch lsinventory  # 查看打補丁的情況

內容較多,略


12. 啟動數據庫,並運行sql文件

[oracle@orasingle 29913194]$ cd $ORACLE_HOME/rdbms/admin
[oracle@orasingle admin]$ sqlplus / as sysdba
SQL> startup
SQL> @catbundle.sql psu apply
SQL> quit


13. 啟動監聽、em

[oracle@orasingle ~]$ lsnrctl start
[oracle@orasingle ~]$ emctl start dbconsole  # 如果沒有開啟em,這步可以跳過

至此數據庫打補丁已全部完成!


五、回退數據庫補丁

數據庫在做變更時,當然要考慮回退方案了,接下來介紹如何回退數據庫補丁

14. 關閉em、監聽、數據庫

[oracle@orasingle ~]$ emctl stop dbconsole  # 如果沒有開啟em,這步可以跳過

[oracle@orasingle ~]$ lsnrctl stop

[oracle@orasingle ~]$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit


15. 回退補丁

[oracle@orasingle ~]$ $ORACLE_HOME/OPatch/opatch rollback -id 29913194

5

這里要輸入一次y,時間比較久,耐心等待

6

這里提示warning,查閱mos(ID 1448337.1),得知可以忽略


16. 啟動數據庫,並運行sql文件

[oracle@orasingle 29913194]$ cd $ORACLE_HOME/rdbms/admin
[oracle@orasingle admin]$ sqlplus / as sysdba
SQL> startup
SQL> @catbundle_PSU_ORCLTEST_ROLLBACK.sql  # 注意這里可能每個人都不一樣,orcltest是我的實例名
SQL> quit


17. 再查看打補丁的情況

[oracle@orasingle ~]$ cd $ORACLE_HOME/OPatch
[oracle@orasingle OPatch]$ ./opatch lsinventory  # 查看打補丁的情況

OPatch Version: 11.2.0.3.21

OPatch succeeded.
[oracle@orasingle OPatch]$ ./opatch lsinv
Oracle Interim Patch Installer version 11.2.0.3.21
Copyright (c) 2019, Oracle Corporation.  All rights reserved.

Oracle Home       : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version    : 11.2.0.3.21
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2019-12-25_16-15-41PM_1.log

Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2019-12-25_16-15-41PM.txt

--------------------------------------------------------------------------------
Local Machine Information::
Hostname: orasingle
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Database 11g                                                  11.2.0.4.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------

OPatch succeeded.

可以看到補丁都被卸載了


18. 啟動監聽和em

[oracle@orasingle ~]$ lsnrctl start
[oracle@orasingle ~]$ emctl start dbconsole  # 如果沒有開啟em,這步可以跳過


六、總結

本文給大家介紹了最簡單的單實例數據庫打補丁步驟,僅作參考,實際應以補丁包中的readme為准。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM