最近做了一個安裝11.2.0.4.180116補丁的實驗,突然想起之前和同事討論的一個問題:如何檢查數據庫安裝補丁的版本,之前搜到的是去查dba_registry_history,有的說在操作系統中執行./opatch lspatches查看。就做了一個實驗:
前提:本系統曾前后安裝了 171017和180116版本補丁,但180116補丁已回退!!
1.1 首先檢查opatch工具版本:
以oracle用戶登錄,驗證opatch 工具版本。安裝補丁11.2.0.4.180116所需最低opatch版本為11.2.0.3.6。
[root@localhost ~]# su - oracle [oracle@localhost ~]$ cd $ORACLE_HOME/OPatch [oracle@localhost OPatch]$ ./opatch version OPatch Version: 11.2.0.3.18 OPatch succeeded.
如果檢查結果不滿足,則需要升級opatch工具。若OPatch Version大於等於11.2.0.3.6則略過1.2節步驟 opatch工具版本升級。
1.2 升級opatch工具版本
以oracle用戶登錄,將opatch備份:
[root@localhost ~]# su - oracle [oracle@localhost ~]$ cd $ORACLE_HOME [oracle@localhost dbhome_1]$ pwd /oracle/app/oracle/product/11.2.0/dbhome_1 [oracle@localhost dbhome_1]$ mv OPatch OPatch.bak
將下載的OPatch工具包p6880880_112000_Linux-x86-64.zip上傳至/home/oracle目錄,進行解壓縮。
[root@localhost ~]# su - oracle [oracle@localhost ~]$ unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME/
重新驗證OPatch工具包版本:
[oracle@localhost ~]$ cd $ORACLE_HOME [oracle@localhost dbhome_1]$ cd OPatch [oracle@localhost OPatch]$ ./opatch version OPatch Version: 11.2.0.3.18 OPatch succeeded.
1.3 安裝11.2.0.4.180116補丁包
1.3.1 上傳並解壓縮補丁包p26925576_112040_Linux-x86-64.zip
將下載的psu補丁p26925576_112040_Linux-x86-64.zip上傳至/soft目錄,進行解壓縮。
[root@localhost ~]# su – oracle [oracle@localhost ~]$ mkdir soft/ -- 若已存在該目錄,則忽略該步驟 [oracle@localhost ~]$ cd soft/ [oracle@localhost soft]$ unzip p26925576_112040_Linux-x86-64.zip
1.3.2 停止EM
[root@localhost ~]# su - oracle [oracle@whf ~]$ emctl status dbconsole Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0 Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved. https://rac1.localdomain:1158/em/console/aboutApplication Oracle Enterprise Manager 11g is running. ------------------------------------------------------------------ Logs are generated in directory /u01/app/oracle/product/11.2.0/dbhome_1/rac1.localdomain_orcl/sysman/log [oracle@rac1 ~]$ emctl stop dbconsole Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0 Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved. https://rac1.localdomain:1158/em/console/aboutApplication Stopping Oracle Enterprise Manager 11g Database Control ... ... Stopped.
1.3.3 停數據庫、監聽
[root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus / as sysdba SQL> shutdown immediate SQL> exit [oracle@localhost ~]$ lsnrctl stop
1.3.4 opatch apply安裝
opatch apply命令需要使用oracle用戶,進入補丁包所在目錄后執行。
[root@localhost ~]# su – oracle [oracle@localhost ~]$ cd soft/26925576/ [oracle@localhost 26925576]$ $ORACLE_HOME/OPatch/opatch apply Oracle Interim Patch Installer version 11.2.0.3.18 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /oracle/app/oracle/product/11.2.0/dbhome_1 Central Inventory : /oracle/app/oraInventory from : /oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc OPatch version : 11.2.0.3.18 OUI version : 11.2.0.4.0 Log file location : /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-02-20_20-42-25PM_1.log Verifying environment and performing prerequisite checks... OPatch continues with these patches: 26925576 Do you want to proceed? [y|n] y User Responded with: Y All checks passed. Provide your email address to be informed of security issues, install and initiate Oracle Configuration Manager. Easier for you if you use your My Oracle Support Email address/User Name. Visit http://www.oracle.com/support/policies.html for details. Email address/User Name: You have not provided an email address for notification of security issues. Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: y Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/oracle/app/oracle/product/11.2.0/dbhome_1') Is the local system ready for patching? [y|n] y User Responded with: Y Backing up files... Applying sub-patch '26925576' to OH '/oracle/app/oracle/product/11.2.0/dbhome_1' Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Composite patch 26925576 successfully applied. Log file location: /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-02-20_20-42-25PM_1.log OPatch succeeded.
1.3.5 起數據庫、監聽、EM
[root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 20 20:46:18 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup SQL> exit [oracle@localhost ~]$ lsnrctl start [oracle@localhost ~]$ emctl start dbconsole
1.3.6 將升級信息寫入數據庫
為了驗證數據庫補丁如何查看,暫時先不寫入數據庫,依次查看dba_registry_history和opatch lspatches版本
(本系統曾前后安裝了 171017和180116版本補丁,但180116補丁已回退):
SQL> col action_time for a32 SQL> col action for a10 SQL> col namespace for a10 SQL> col version for a10 SQL> col BUNDLE_SERIES for a10 SQL> col comments for a30 SQL> set lin 200 SQL> SQL> select * from dba_registry_history; ACTION_TIME ACTION NAMESPACE VERSION ID BUNDLE_SER COMMENTS -------------------------------- ---------- ---------- ---------- ---------- ---------- ------------------------------ 24-AUG-13 12.03.45.119862 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0 15-NOV-17 03.36.44.541274 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0 20-FEB-18 07.17.09.603021 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017 20-FEB-18 08.48.39.212321 PM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116 20-FEB-18 09.06.56.276322 PM ROLLBACK SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116 20-FEB-18 09.07.15.512282 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017 6 rows selected.
查看opatch lapatches版本:
[oracle@localhost ~]$ cd $ORACLE_HOME/OPatch [oracle@localhost OPatch]$ ./opatch lspatches 26925576;Database Patch Set Update : 11.2.0.4.180116 (26925576) OPatch succeeded.
故說明使用./opatch lspatches只能查看系統安裝補丁版本,但不意味着數據庫應用的版本信息,數據庫應用的版本需使用dba_registry_history查看。
為驗證說明,進行將升級信息寫入數據庫:
[oracle@localhost ~]$ sqlplus / as sysdba SQL> @?/rdbms/admin/catbundle.sql psu apply 修復無效對象 SQL> @?/rdbms/admin/utlrp.sql
再次查看dba_registry_history和opatch lspatches版本:
SQL> col action_time for a32 SQL> col action for a10 SQL> col namespace for a10 SQL> col version for a10 SQL> col BUNDLE_SERIES for a10 SQL> col comments for a30 SQL> set lin 200 SQL> SQL> select * from dba_registry_history; ACTION_TIME ACTION NAMESPACE VERSION ID BUNDLE_SER COMMENTS -------------------------------- ---------- ---------- ---------- ---------- ---------- ------------------------------ 24-AUG-13 12.03.45.119862 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0 15-NOV-17 03.36.44.541274 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0 20-FEB-18 07.17.09.603021 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017 20-FEB-18 08.48.39.212321 PM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116 20-FEB-18 09.06.56.276322 PM ROLLBACK SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116 20-FEB-18 09.07.15.512282 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017 22-FEB-18 01.09.06.899587 AM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116 7 rows selected.
SQL> ! [oracle@localhost ~]$ cd $ORACLE_HOME/OPatch [oracle@localhost OPatch]$ ./opatch lspatches 26925576;Database Patch Set Update : 11.2.0.4.180116 (26925576) OPatch succeeded.
驗證無誤。就此補丁也已安裝完畢。
2.1 補丁回退
2.1.1 關閉數據庫
[root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 20 20:53:00 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
關閉監聽:
[oracle@localhost ~]$ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 20-FEB-2018 20:54:52 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) The command completed successfully
2.1.2 回退操作
[root@localhost ~]# su - oracle [oracle@localhost ~]$ $ORACLE_HOME/OPatch/opatch rollback -id 26925576 Oracle Interim Patch Installer version 11.2.0.3.18 Copyright (c) 2018, Oracle Corporation. All rights reserved. Oracle Home : /oracle/app/oracle/product/11.2.0/dbhome_1 Central Inventory : /oracle/app/oraInventory from : /oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc OPatch version : 11.2.0.3.18 OUI version : 11.2.0.4.0 Log file location : /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-02-20_20-56-38PM_1.log Patches will be rolled back in the following order: 26925576 The following patch(es) will be rolled back: 26925576 Sub-patches of a composite series are being rolled back. The system will be returned to a state where 17478514,18031668,18522509,19121551,19769489,20299013,20760982,21352635,21948347,22502456,23054359,24006111,24732075,25869727,26609445,26392168 and all its fixes will still remain, because the patch(es) were installed before patch(es) 26925576 were applied. The following bug fixes will be removed: 26910644,21641760,24570598,22809871,22465352,21142837,16756406,27053456,21174504,23003979,20513399,25897615,21795111,26569225,21354456,25764020,20671094,20717359,21629064,18090142,24835538,21380789,21422580,19475971,24717859,18948177,20860659,20598042,21172913,20031873,20324049,23007241,25165496,19174430 Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/oracle/app/oracle/product/11.2.0/dbhome_1') Is the local system ready for patching? [y|n] y User Responded with: Y Rolling back patch 26925576... RollbackSession rolling back interim patch '26925576' from OH '/oracle/app/oracle/product/11.2.0/dbhome_1' Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... RollbackSession removing interim patch '26925576' from inventory Log file location: /oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-02-20_20-56-38PM_1.log OPatch succeeded.
若執行了1.3.6將升級信息寫入數據庫操作,則還需執行以下操作:
[oracle@localhost ~]$ [oracle@localhost admin]$ ls|grep catbundle_PSU_ catbundle_PSU_MYDB_APPLY.sql -- <連接數據庫后需運行該腳本!> catbundle_PSU_MYDB_ROLLBACK.sql [oracle@localhost admin]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 20 21:01:07 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 830930944 bytes Fixed Size 2257800 bytes Variable Size 503319672 bytes Database Buffers 318767104 bytes Redo Buffers 6586368 bytes Database mounted. Database opened. SQL> @catbundle_PSU_MYDB_ROLLBACK.sql SQL> exit [oracle@localhost admin]$ lsnrctl start
2.1.3 回退檢驗
[root@localhost ~]# su - oracle [oracle@localhost ~]$ $ORACLE_HOME/OPatch/opatch lspatches 26392168;Database Patch Set Update : 11.2.0.4.171017 (26392168) OPatch succeeded. [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 20 21:10:57 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@whf admin]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sat Dec 16 21:15:00 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> col action_time for a32 SQL> col action for a10 SQL> col namespace for a10 SQL> col version for a10 SQL> col BUNDLE_SERIES for a10 SQL> col comments for a30 SQL> set lin 220
SQL> select * from dba_registry_history;
ACTION_TIME ACTION NAMESPACE VERSION ID BUNDLE_SER COMMENTS
-------------------------------- ---------- ---------- ---------- ---------- ---------- ------------------------------
24-AUG-13 12.03.45.119862 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0
15-NOV-17 03.36.44.541274 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0
20-FEB-18 07.17.09.603021 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017
20-FEB-18 08.48.39.212321 PM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116
20-FEB-18 09.06.56.276322 PM ROLLBACK SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116
20-FEB-18 09.07.15.512282 PM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017
22-FEB-18 01.09.06.899587 AM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116
22-FEB-18 01.31.12.966611 AM APPLY SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116
22-FEB-18 01.41.03.225433 AM ROLLBACK SERVER 11.2.0.4 180116 PSU PSU 11.2.0.4.180116
22-FEB-18 01.41.23.227214 AM APPLY SERVER 11.2.0.4 171017 PSU PSU 11.2.0.4.171017