分类: Oracle
2009-08-17 21:54:40
主题: | Opatch Fails to Replace libjox*.a While Applying One Off Patch on AIX Platform | |||
文档 ID: | 779083.1 | 类型: | PROBLEM | |
Modified Date: | 01-APR-2009 | 状态: | PUBLISHED |
In this Document
OPatch encounters the following issues during file patching:
The following files had problems with being patched:
1. /u01/apps/oracle/product/9208/lib/libjox9.a
[ Couldn't copy /u01/apps/oracle/product/9208/7592365/files/lib/libjox9.
9.a from /u01/apps/oracle/product/9208/lib. ]
The following warnings have occurred during OPatch execution:
1) OUI-67124:Copy failed from
'/oradump/patc/7369190/6121268/files/lib/libjox10.a' to '/oracle/product/10.2.
0/asm_1/lib/libjox10.a'...
This is a commonly reported error for AIX platform. Even after all the database instances, listener and other processes are down , there are dead references of some Oracle Home libraries ( like libjox library ) in the memory.
Although, fuser user command might show that there are no processes locking this library, OPatch may still fail to overwrite this library because of the dead memory references in AIX
Running /usr/sbin/slibclean as root is used to resolve this condition, but sometimes the file is still locked in memory after running slibclean.
Please perform following action plans until you get success:
1. Sometimes if you have not run slibclean script, the error is reported. So run slibclean script before applying the patch:
a) Shutdown all the databases and listeners running from this Oracle Home.
b) Run /usr/sbin/slibclean script as a root user.
c) Apply the patch
If the patch is applied successfully then no need to follow any further action plan. If not, execute the Restore Process and proceed with alternatives given in subsequent steps.
2. Rerun the slibclean script. Rename the library and then rename it back to original. The following action plan might be helpful in releasing the dead memory references for the concerned library.
a) Shutdown all the databases and listeners running from this Oracle Home.
b) Run /usr/sbin/slibclean script as a root user.
c) Rename the file and immediately rename it back. This will help in
releasing the lock from this file:
Oracle 9iR2:
$ cd $ORACLE_HOME/lib
$ mv libjox9.a libjox9.a.orig
$ mv libjox9.a.orig libjox9.a
Oracle 10gR2:
$ cd $ORACLE_HOME/lib
$ mv libjox10.a libjox10.a.orig
$ mv libjox10.a.orig libjox10.a
d) Apply the patch
If the patch is applied successfully then no need to follow any further action plan. If not, execute the Restore Process and proceed with alternatives given in subsequent steps.
a) Shutdown all the databases and listeners running from this Oracle Home.
b) Run /usr/sbin/slibclean script as a root user.
c) Apply the Patch.
Now if the error is reported, opatch will give you following prompt:
Do you want to stop the patch installation Y/N:
Here do not enter anything and keep the session waiting.
d) Open a new session as root user . Execute slibclean.
e) Now open a new session as the oracle user.
f) Perform the manual COPY operation which opatch is trying to perform during patch application. Select from either of the action plan provided below, depending on your release
Oracle 9iR2/10gR1
$ mv $ORACLE_HOME/lib/libjox9.a
$ORACLE_HOME/lib/libjox9.a.old
$ cp /files/lib/libjox9.a $ORACLE_HOME/lib/
$ mv $ORACLE_HOME/lib/libjox10.a
$ORACLE_HOME/lib/libjox10.a.old
$ cp /files/lib/libjox10.a $ORACLE_HOME/lib/
g) Once this Manual COPY is completed, go back to the original session
where patching session was in waiting state.
Use the appropriate input ( Y/N ) which continues the Patching.