在Oracle 11g中提出了online patch(也叫hot patch)的特性;Hot patching允许我们在实例始终在线的情况下安装,启用或禁用一个修复补丁或者诊断补丁。针对7*24在线的业务系统,hot patch为我们提供了一条既能避免当机时间而又可以实施补丁的途径。在Oracle 11g中我们可以使用Opatch命令行工具针对任意数据库实施在线补丁(前提是该补丁是一个hot patch)。一般来说在线补丁(hot patches)只能是那些代码修改范围小且复杂度很低的补丁,举例来说它们往往是一些诊断补丁(diagnostic patches)或者小bug的修复(small bug fixes)。值得注意的是hot patching将需要消耗额外的内存,决定其消耗内存数量的因素是:1.补丁本身的大小,2.实例中的进程总数;举例来说某个补丁的大小正好为一个OS page的大小(一般为4kB),那么当实例中运行的进程总数为1000时,则该hot patching所额外消耗的内存总数为4kB*1000=4MB。
hot patches与常规Conventional patches对比具有可在线实施和安装快的特性,如下图:
在实际生产环境中,相信没有多少朋友实施过hot patching,一来国内目前还没有普及11g的使用,二来hot patching的数量在所有interim patch中只占极少数;一直以来都想写这样一篇关于hot patching的博文,唯一妨碍我写作的问题是在11.2.0.1下找不到可实施的online interim patch;以MOS->patches&upgrade目前的分类我们很难找出某个base release下可用的hot patch,当然这并不妨碍补丁专栏的使用。为了这个令人郁闷的问题,我特意去提交了一个Service Request,得到的回复:
I have tried to find the patches which support online patching on 11.2.0.1 version, but I also can not find them because there are too many patches and there is no catalog for the patches which support online patching, and I can only check the patch readme to confirm whether that patch supports online patching. I found one patch which supports online patching, but this patch is for 11.2.0.2 version. The patch no. is 10188727. Sorry for the inconvenience brought to you. Hope the above update can help you. If the above patch is not what you want, then please update the SR and I will continue for your issue.
这其中提到的patch 10188727,可以从Note<RDBMS Online Patching Aka Hot Patching [ID 761111.1]>中找到,另外一个可找到的hot patch是11.1.0.6上的6198642<DUMMY PATCH FOR TESTING DB11 PATCHING>,不过很可惜该补丁只有Linux x86一个平台版本的。所以我不得不先将11.2.0.1的测试库升级到了11.2.0.2上:
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production [maclean@rh2 OPatch]$ ps -ef|grep pmon|grep -v grep maclean 22481 1 0 19:19 ? 00:00:00 ora_pmon_PROD [maclean@rh2 OPatch]$ pmap -d 22481 22481: ora_pmon_PROD Address Kbytes Mode Offset Device Mapping 0000000000400000 180232 r-x-- 0000000000000000 008:00002 oracle 000000000b602000 1820 rwx-- 000000000b002000 008:00002 oracle 000000000b7c9000 300 rwx-- 000000000b7c9000 000:00000 [ anon ] 000000000dbef000 436 rwx-- 000000000dbef000 000:00000 [ anon ] 0000000060000000 2050048 rwxs- 0000000000000000 000:00009 [ shmid=0x550001 ] 0000003e09a00000 112 r-x-- 0000000000000000 008:00001 ld-2.5.so 0000003e09c1b000 4 r-x-- 000000000001b000 008:00001 ld-2.5.so 0000003e09c1c000 4 rwx-- 000000000001c000 008:00001 ld-2.5.so 0000003e09e00000 1336 r-x-- 0000000000000000 008:00001 libc-2.5.so 0000003e09f4e000 2044 ----- 000000000014e000 008:00001 libc-2.5.so 0000003e0a14d000 16 r-x-- 000000000014d000 008:00001 libc-2.5.so 0000003e0a151000 4 rwx-- 0000000000151000 008:00001 libc-2.5.so 0000003e0a152000 20 rwx-- 0000003e0a152000 000:00000 [ anon ] 0000003e0a200000 520 r-x-- 0000000000000000 008:00001 libm-2.5.so 0000003e0a282000 2044 ----- 0000000000082000 008:00001 libm-2.5.so 0000003e0a481000 4 r-x-- 0000000000081000 008:00001 libm-2.5.so 0000003e0a482000 4 rwx-- 0000000000082000 008:00001 libm-2.5.so 0000003e0a600000 8 r-x-- 0000000000000000 008:00001 libdl-2.5.so 0000003e0a602000 2048 ----- 0000000000002000 008:00001 libdl-2.5.so 0000003e0a802000 4 r-x-- 0000000000002000 008:00001 libdl-2.5.so 0000003e0a803000 4 rwx-- 0000000000003000 008:00001 libdl-2.5.so 0000003e0aa00000 88 r-x-- 0000000000000000 008:00001 libpthread-2.5.so 0000003e0aa16000 2044 ----- 0000000000016000 008:00001 libpthread-2.5.so 0000003e0ac15000 4 r-x-- 0000000000015000 008:00001 libpthread-2.5.so 0000003e0ac16000 4 rwx-- 0000000000016000 008:00001 libpthread-2.5.so 0000003e0ac17000 16 rwx-- 0000003e0ac17000 000:00000 [ anon ] 0000003e0ae00000 28 r-x-- 0000000000000000 008:00001 librt-2.5.so 0000003e0ae07000 2048 ----- 0000000000007000 008:00001 librt-2.5.so 0000003e0b007000 4 r-x-- 0000000000007000 008:00001 librt-2.5.so 0000003e0b008000 4 rwx-- 0000000000008000 008:00001 librt-2.5.so 0000003e0da00000 84 r-x-- 0000000000000000 008:00001 libnsl-2.5.so 0000003e0da15000 2044 ----- 0000000000015000 008:00001 libnsl-2.5.so 0000003e0dc14000 4 r-x-- 0000000000014000 008:00001 libnsl-2.5.so 0000003e0dc15000 4 rwx-- 0000000000015000 008:00001 libnsl-2.5.so 0000003e0dc16000 8 rwx-- 0000003e0dc16000 000:00000 [ anon ] 00002abec920e000 8 rwx-- 00002abec920e000 000:00000 [ anon ] 00002abec9210000 4 r-x-- 0000000000000000 008:00002 libodmd11.so 00002abec9211000 1024 ----- 0000000000001000 008:00002 libodmd11.so 00002abec9311000 4 rwx-- 0000000000001000 008:00002 libodmd11.so 00002abec9312000 360 r-x-- 0000000000000000 008:00002 libcell11.so 00002abec936c000 1020 ----- 000000000005a000 008:00002 libcell11.so 00002abec946b000 36 rwx-- 0000000000059000 008:00002 libcell11.so 00002abec9474000 4 rwx-- 00002abec9474000 000:00000 [ anon ] 00002abec9475000 848 r-x-- 0000000000000000 008:00002 libskgxp11.so 00002abec9549000 1024 ----- 00000000000d4000 008:00002 libskgxp11.so 00002abec9649000 8 rwx-- 00000000000d4000 008:00002 libskgxp11.so 00002abec9665000 4 rwx-- 00002abec9665000 000:00000 [ anon ] 00002abec9666000 2580 r-x-- 0000000000000000 008:00002 libnnz11.so 00002abec98eb000 1020 ----- 0000000000285000 008:00002 libnnz11.so 00002abec99ea000 264 rwx-- 0000000000284000 008:00002 libnnz11.so 00002abec9a2c000 8 rwx-- 00002abec9a2c000 000:00000 [ anon ] 00002abec9a2e000 96 r-x-- 0000000000000000 008:00002 libclsra11.so 00002abec9a46000 1020 ----- 0000000000018000 008:00002 libclsra11.so 00002abec9b45000 4 rwx-- 0000000000017000 008:00002 libclsra11.so 00002abec9b46000 4 rwx-- 00002abec9b46000 000:00000 [ anon ] 00002abec9b47000 136 r-x-- 0000000000000000 008:00002 libdbcfg11.so 00002abec9b69000 1020 ----- 0000000000022000 008:00002 libdbcfg11.so 00002abec9c68000 8 rwx-- 0000000000021000 008:00002 libdbcfg11.so 00002abec9c6a000 6832 r-x-- 0000000000000000 008:00002 libhasgen11.so 00002abeca316000 1020 ----- 00000000006ac000 008:00002 libhasgen11.so 00002abeca415000 136 rwx-- 00000000006ab000 008:00002 libhasgen11.so 00002abeca437000 24 rwx-- 00002abeca437000 000:00000 [ anon ] 00002abeca43d000 8 r-x-- 0000000000000000 008:00002 libskgxn2.so 00002abeca43f000 1020 ----- 0000000000002000 008:00002 libskgxn2.so 00002abeca53e000 4 rwx-- 0000000000001000 008:00002 libskgxn2.so 00002abeca53f000 4 rwx-- 00002abeca53f000 000:00000 [ anon ] 00002abeca540000 656 r-x-- 0000000000000000 008:00002 libocr11.so 00002abeca5e4000 1020 ----- 00000000000a4000 008:00002 libocr11.so 00002abeca6e3000 12 rwx-- 00000000000a3000 008:00002 libocr11.so 00002abeca6e6000 628 r-x-- 0000000000000000 008:00002 libocrb11.so 00002abeca783000 1024 ----- 000000000009d000 008:00002 libocrb11.so 00002abeca883000 8 rwx-- 000000000009d000 008:00002 libocrb11.so 00002abeca885000 44 r-x-- 0000000000000000 008:00002 libocrutl11.so 00002abeca890000 1020 ----- 000000000000b000 008:00002 libocrutl11.so 00002abeca98f000 4 rwx-- 000000000000a000 008:00002 libocrutl11.so 00002abeca990000 4 rwx-- 00002abeca990000 000:00000 [ anon ] 00002abeca991000 4 r-x-- 0000000000000000 008:00001 libaio.so.1.0.1 00002abeca992000 2044 ----- 0000000000001000 008:00001 libaio.so.1.0.1 00002abecab91000 4 rwx-- 0000000000000000 008:00001 libaio.so.1.0.1 00002abecab92000 16 rwx-- 00002abecab92000 000:00000 [ anon ] 00002abecab96000 20 r-x-- 0000000000000000 008:00001 libnuma.so.1 00002abecab9b000 2044 ----- 0000000000005000 008:00001 libnuma.so.1 00002abecad9a000 4 rwx-- 0000000000004000 008:00001 libnuma.so.1 00002abecad9b000 1280 rwx-- 00002abecad9b000 000:00000 [ anon ] 00002abecaef5000 40 r-x-- 0000000000000000 008:00001 libnss_files-2.5.so 00002abecaeff000 2044 ----- 000000000000a000 008:00001 libnss_files-2.5.so 00002abecb0fe000 4 r-x-- 0000000000009000 008:00001 libnss_files-2.5.so 00002abecb0ff000 4 rwx-- 000000000000a000 008:00001 libnss_files-2.5.so 00002abecb100000 1700 rwx-- 00002abecb100000 000:00000 [ anon ] 00002abecb2a9000 28 rwx-- 0000000000000000 000:00011 zero 00002abecb2b0000 64 rwx-- 0000000000000000 000:00011 zero 00002abecb2c0000 64 rwx-- 0000000000000000 000:00011 zero 00002abecb2d0000 64 rwx-- 0000000000000000 000:00011 zero 00002abecb2e0000 64 rwx-- 0000000000000000 000:00011 zero 00002abecb2f0000 64 rwx-- 0000000000000000 000:00011 zero 00002abecb300000 164 rwx-- 0000000000057000 000:00011 zero 00002abecb329000 8 rwx-- 00002abecb329000 000:00000 [ anon ] 00002abecb32b000 4 rwxs- 0000000000000000 008:00002 hc_PROD.dat 00002abecb32c000 40 r-x-- 0000000000000000 008:00002 libnque11.so 00002abecb336000 1020 ----- 000000000000a000 008:00002 libnque11.so 00002abecb435000 4 rwx-- 0000000000009000 008:00002 libnque11.so 00002abecb436000 1048 rwx-- 00002abecb436000 000:00000 [ anon ] 00007fff3342d000 84 rwx-- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 2291488K writeable/private: 7840K shared: 2050052K [maclean@rh2 ~]$ cd $ORACLE_HOME/OPatch [maclean@rh2 OPatch]$ unzip p10188727_112020_Linux-x86-64.zip Archive: p10188727_112020_Linux-x86-64.zip creating: 10188727/ creating: 10188727/files/ creating: 10188727/files/lib/ creating: 10188727/files/lib/libserver11.a/ inflating: 10188727/files/lib/libserver11.a/kkopq.o creating: 10188727/etc/ creating: 10188727/etc/config/ inflating: 10188727/etc/config/inventory.xml inflating: 10188727/etc/config/actions.xml inflating: 10188727/etc/config/deploy.xml creating: 10188727/etc/xml/ inflating: 10188727/etc/xml/GenericActions.xml inflating: 10188727/etc/xml/ShiphomeDirectoryStructure.xml inflating: 10188727/README.txt creating: 10188727/online/ creating: 10188727/online/files/ creating: 10188727/online/files/hpatch/ inflating: 10188727/online/files/hpatch/bug10188727.pch creating: 10188727/online/etc/ creating: 10188727/online/etc/config/ inflating: 10188727/online/etc/config/inventory.xml inflating: 10188727/online/etc/config/actions.xml inflating: 10188727/online/etc/config/deploy.xml creating: 10188727/online/etc/xml/ inflating: 10188727/online/etc/xml/GenericActions.xml inflating: 10188727/online/etc/xml/ShiphomeDirectoryStructure.xml [maclean@rh2 OPatch]$ opatch query 10188727 -all Invoking OPatch 11.2.0.1.1 Oracle Interim Patch Installer version 11.2.0.1.1 Copyright (c) 2009, Oracle Corporation. All rights reserved. Oracle Home : /s01/product/11.2.0/dbhome_2 Central Inventory : /s01/oraInventory from : /etc/oraInst.loc OPatch version : 11.2.0.1.1 OUI version : 11.2.0.2.0 OUI location : /s01/product/11.2.0/dbhome_2/oui Log file location : /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch2011-02-17_20-05-21PM.log Patch history file: /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch_history.txt -------------------------------------------------------------------------------- Patch created on 2 Dec 2010, 01:44:13 hrs PST8PDT Need to shutdown Oracle instances: true Patch is roll-backable: true Patch is a "Patchset Update": false Patch is a rolling patch: true Patch has sql related actions: false Patch is an online patch: false Patch is a portal patch: false Patch is an "auto-enabled" patch: false List of platforms supported: 226: Linux x86-64 List of bugs to be fixed: 10188727: AFTER UPGRADING TO 11.2.0.2 SOME SQLS FAIL WITH ORA-7445 [KKEIDC()+180] ERROR This patch is a "singleton" patch. This patch belongs to the "db" product family List of executables affected: ORACLE_HOME/bin/oracle List of optional components: oracle.rdbms: 11.2.0.2.0 List of optional actions: Update /s01/product/11.2.0/dbhome_2/lib/libserver11.a with /kkopq.o cd /s01/product/11.2.0/dbhome_2/rdbms/lib ; make -f ins_rdbms.mk ioracle ORACLE_HOME=/s01/product/11.2.0/dbhome_2 Possible XML representation of the patch: 10188727 -------------------------------------------------------------------------------- OPatch succeeded. [maclean@rh2 OPatch]$ ./opatch query -is_online_patch 10188727 Invoking OPatch 11.2.0.1.1 Oracle Interim Patch Installer version 11.2.0.1.1 Copyright (c) 2009, Oracle Corporation. All rights reserved. Oracle Home : /s01/product/11.2.0/dbhome_2 Central Inventory : /s01/oraInventory from : /etc/oraInst.loc OPatch version : 11.2.0.1.1 OUI version : 11.2.0.2.0 OUI location : /s01/product/11.2.0/dbhome_2/oui Log file location : /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch2011-02-17_19-45-33PM.log Patch history file: /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch_history.txt -------------------------------------------------------------------------------- Patch is an online patch: false OPatch succeeded. /* 虽然Opatch返回"online patch: false",但实际上这是一个online patch, 造成以上问题的原因可能是Opatch版本低 */ [maclean@rh2 OPatch]$ tree 10188727 10188727 |-- README.txt |-- etc | |-- config | | |-- actions.xml | | |-- deploy.xml | | `-- inventory.xml | `-- xml | |-- GenericActions.xml | `-- ShiphomeDirectoryStructure.xml |-- files | `-- lib | `-- libserver11.a | `-- kkopq.o `-- online |-- etc | |-- config | | |-- actions.xml | | |-- deploy.xml | | `-- inventory.xml | `-- xml | |-- GenericActions.xml | `-- ShiphomeDirectoryStructure.xml `-- files `-- hpatch `-- bug10188727.pch /* 可以从以上目录结构中看到包含了online子目录,我们可以直接观察其inventory.xml信息文件 */ [maclean@rh2 OPatch]$ cat 10188727/online/etc/config/inventory.xml |grep instance <instance_shutdown>false</instance_shutdown> <instance_shutdown_message></instance_shutdown_message> /* 以上instance_shutdown为false说明其可以作为online patch实施 */ [maclean@rh2 OPatch]$ cd 10188727 /* opatch online patching的具体语法如下 */ opatch apply online -connectString <SID>:<USERNAME>:<PASSWORD>:<NODE1>, \ <SID2>:<USERNAME>:<PASSWORD>:<NODE2>,... [maclean@rh2 10188727]$ opatch apply online -connectString PROD:sys:password Invoking OPatch 11.2.0.1.1 Oracle Interim Patch Installer version 11.2.0.1.1 Copyright (c) 2009, Oracle Corporation. All rights reserved. Oracle Home : /s01/product/11.2.0/dbhome_2 Central Inventory : /s01/oraInventory from : /etc/oraInst.loc OPatch version : 11.2.0.1.1 OUI version : 11.2.0.2.0 OUI location : /s01/product/11.2.0/dbhome_2/oui Log file location : /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch2011-02-17_19-49-44PM.log Patch history file: /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch_history.txt The patch should be applied/rolled back in '-all_nodes' mode only. Converting the RAC mode to '-all_nodes' mode. ApplySession applying interim patch '10188727' to OH '/s01/product/11.2.0/dbhome_2' Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch '10188727' for restore. This might take a while... Backing up files affected by the patch '10188727' for rollback. This might take a while... Patching component oracle.rdbms, 11.2.0.2.0... The patch will be installed on active database instances. Installing and enabling the online patch 'bug10188727.pch', on database 'PROD'. ApplySession adding interim patch '10188727' to inventory Verifying the update... Inventory check OK: Patch ID 10188727 is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID 10188727 are present in Oracle Home. OPatch succeeded. [maclean@rh2 OPatch]$ opatch lsinventory -detail|tail -21 Interim patches (1) : Patch (online) 10188727: applied on Thu Feb 17 19:49:52 CST 2011 Unique Patch ID: 13202318 Created on 2 Dec 2010, 01:44:15 hrs PST8PDT Bugs fixed: 10188727 Files Touched: bug10188727.pch --> ORACLE_HOME/hpatch/bug10188727.pch Instances Patched: PROD Patch Location in Inventory: /s01/product/11.2.0/dbhome_2/inventory/oneoffs/10188727 Patch Location in Storage area: /s01/product/11.2.0/dbhome_2/.patch_storage/10188727_Dec_2_2010_01_44_15 告警日志alert.log中的信息: Patch file bug10188727.pch is out of sync with oracle binary; performing fixup Patch file bug10188727.pch has been synced with oracle binary Patch bug10188727.pch Installed - Update #1 Patch bug10188727.pch Enabled - Update #2 [maclean@rh2 OPatch]$ ps -ef|grep pmon|grep -v grep maclean 22481 1 0 19:19 ? 00:00:00 ora_pmon_PROD [maclean@rh2 OPatch]$ pmap -d 22481|tail -10 00002abecb435000 4 rwx-- 0000000000009000 008:00002 libnque11.so 00002abecb436000 1048 rwx-- 00002abecb436000 000:00000 [ anon ] 00002abecb53c000 8 r-x-- 000000000c64e000 008:00002 oracle 00002abecb53e000 5052 r-x-- 00000000000bd000 008:00002 oracle 00002abecba2d000 140 r-x-- 0000000000000000 008:00002 bug10188727.so 00002abecba50000 1024 ----- 0000000000023000 008:00002 bug10188727.so 00002abecbb50000 8 rwx-- 0000000000023000 008:00002 bug10188727.so 00007fff3342d000 84 rwx-- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 2297720K writeable/private: 7848K shared: 2050052K /* 再次观察pmon进程的内存信息,可以看到pmap输出中多出了2个小的oracle正文镜像和 名为bug10188727.so的共享库文件,而该后台进程的private memory由原来的7840k上升到7848k, 实际增幅为8k */ /* 此外可以通过oradebug命令将该online patch禁用,虽然并不推荐这样做 */ SQL> oradebug patch disable bug10188727.pch; Statement processed. SQL> oradebug patch disable bug10188727.pch; Patch file already disabled [maclean@rh2 hpatch]$ pmap -d 22481|tail -8 00002abecb53c000 8 r-x-- 000000000c64e000 008:00002 oracle 00002abecb53e000 5052 r-x-- 00000000000bd000 008:00002 oracle 00002abecba2d000 140 r-x-- 0000000000000000 008:00002 bug10188727.so 00002abecba50000 1024 ----- 0000000000023000 008:00002 bug10188727.so 00002abecbb50000 8 rwx-- 0000000000023000 008:00002 bug10188727.so 00007fff3342d000 84 rwx-- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 2297720K writeable/private: 7848K shared: 2050052K /* 但disable掉online patch并不会导致在线补丁额外消耗的内存被回收 */ /* 当然我们还可以很方便地启用它 */ SQL> oradebug patch enable bug10188727.pch; Statement processed. SQL> oradebug patch enable bug10188727.pch; Patch file already enabled [maclean@rh2 ~]$ cd $ORACLE_HOME/hpatch [maclean@rh2 hpatch]$ ls -l total 368 -rw-r--r-- 1 maclean oinstall 177874 Feb 17 19:49 bug10188727.pch -rwx------ 1 maclean oinstall 1 Feb 17 19:49 bug10188727.pchPROD.fixup -rwx------ 1 maclean oinstall 176850 Feb 17 19:49 bug10188727.so -rw------- 1 maclean oinstall 712 Feb 17 20:13 orapatchPROD.cfg /* 注意不要在实例启动时删除以上hpatch目录及目录下任何文件,这可能导致instance出现意外 */ [maclean@rh2 hpatch]$ cd $ORACLE_HOME/OPatch /* 我们还能够将online patch rollback回滚掉,如以下语法 */ opatch rollback -id <patchID> -connectString <SID>:<USERNAME>:<PASSWORD>:<NODE1>, \ <SID2>:<USERNAME>:<PASSWORD>:<NODE2>, ... [maclean@rh2 OPatch]$ opatch rollback -id 10188727 -connectString PROD:sys:password -invPtrLoc /s01/product/11.2.0/dbhome_2/oraInst.loc Invoking OPatch 11.2.0.1.1 Oracle Interim Patch Installer version 11.2.0.1.1 Copyright (c) 2009, Oracle Corporation. All rights reserved. Oracle Home : /s01/product/11.2.0/dbhome_2 Central Inventory : /s01/oraInventory from : /s01/product/11.2.0/dbhome_2/oraInst.loc OPatch version : 11.2.0.1.1 OUI version : 11.2.0.2.0 OUI location : /s01/product/11.2.0/dbhome_2/oui Log file location : /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch2011-02-17_20-18-00PM.log Patch history file: /s01/product/11.2.0/dbhome_2/cfgtoollogs/opatch/opatch_history.txt RollbackSession rolling back interim patch '10188727' from OH '/s01/product/11.2.0/dbhome_2' The patch should be applied/rolled back in '-all_nodes' mode only. Converting the RAC mode to '-all_nodes' mode. Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files affected by the patch '10188727' for restore. This might take a while... Patching component oracle.rdbms, 11.2.0.2.0... The patch will be removed from active database instances. Disabling and removing online patch 'bug10188727.pch', on database 'PROD' RollbackSession removing interim patch '10188727' from inventory OPatch succeeded. 告警日志alert.log中的remove信息: Patch bug10188727.pch Disabled - Update #5 Patch bug10188727.pch Removed - Update #6 Thu Feb 17 20:18:07 2011 Online patch bug10188727.pch has been disabled Online patch bug10188727.pch has been removed [maclean@rh2 trace]$ pmap -d 22481|tail -8 00002abecb53c000 8 r-x-- 000000000c64e000 008:00002 oracle 00002abecb53e000 5052 r-x-- 00000000000bd000 008:00002 oracle 00002abecba2d000 140 r-x-- 0000000000000000 008:00002 bug10188727.so 00002abecba50000 1024 ----- 0000000000023000 008:00002 bug10188727.so 00002abecbb50000 8 rwx-- 0000000000023000 008:00002 bug10188727.so 00007fff3342d000 84 rwx-- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 2297720K writeable/private: 7848K shared: 2050052K /* 显然rollback回滚掉该online interim patch也不足以回收内存,唯一的方法是重启实例 */ SQL> startup force; [maclean@rh2 trace]$ ps -ef|grep pmon|grep -v grep maclean 25563 1 0 20:22 ? 00:00:00 ora_pmon_PROD [maclean@rh2 trace]$ pmap -d 25563|tail -8 00002aaf2f324000 4 rwxs- 0000000000000000 008:00002 hc_PROD.dat 00002aaf2f325000 40 r-x-- 0000000000000000 008:00002 libnque11.so 00002aaf2f32f000 1020 ----- 000000000000a000 008:00002 libnque11.so 00002aaf2f42e000 4 rwx-- 0000000000009000 008:00002 libnque11.so 00002aaf2f42f000 1048 rwx-- 00002aaf2f42f000 000:00000 [ anon ] 00007fffdfa84000 84 rwx-- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 2291488K writeable/private: 7840K shared: 2050052K /* That's ok! ash to ash, dust to dust! */
References:<RDBMS Online Patching Aka Hot Patching [ID 761111.1]>