Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25833736
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类: 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
  
  
  
  


Applies to:

Oracle Server - Enterprise Edition - Version: 9.2.0.2 to 10.2.0.4
IBM AIX Based Systems (64-bit)
Oracle Server Enterprise Edition - Version: 9.2.0.2 to 10.2.0.4

Symptoms

Following error is reported while applying a one off patch on RDBMS Oracle Home running on IBM AIX 64 bit platform:

Oracle RDBMS 9iR2:
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. ]

Oracle RDBMS 10gR2:
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'...

*Path shown in the above error messages may be different depending upon the customer's setup.

Cause

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.

Solution

Please perform following action plans until you get success:

NOTE: Restore Process
-----------------------------------
Whenever the error  is encountered, restore / rollback the failed patching attempt as indicated by OPatch session messages and continue with the alternatives given in subsequent steps.


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.


3. Even after performing above steps if the issue is repeated then follow the following action plan which should solve the issue in any case.
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/


NOTE :
In case of 9iR2 and 10gR1 environments if previous CPU patch is already present, the errors may also be encountered during rolling back the previous CPU.

Sample Error
------------

Patch encounters the following file roll-back issues:
    
The following files had problems with being restored:
    1.  /optq/oracle/rdbms/9.2.0/lib/libjox9.a
    
    Replying 'Y' will terminate the patch roll-back immediately. It WILL NOT restore any updates that
    have been performed to this point. It WILL NOT update the inventory.
    Replying 'N' will update the inventory showing the patch has been removed.
    
    Do you want  to STOP?
    Please respond Y|N >


Solution
---------
  $ mv $ORACLE_HOME/lib/libjox9.a $ORACLE_HOME/lib/libjox9.a.old 
  $ cp $ORACLE_HOME/.patch_storage/6864078/lib/libjox9.a_pre_6864078 $ORACLE_HOME/lib/libjox9.a

In the above example shown, "6864078" is the existing patch which is being rolled back.


Oracle 10gR2

    $ 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.


Refer to the following note to know if there are any locks in the libraries on AIX:
Using AIX commands genld, genkld and slibclean to avoid library file locking errors (libjox)

Please note that renaming the libjox*.a file and applying the patch should not be followed as a solution to this issue. Because if you do this, Opatch will not be able to take a backup of this file before  applying the patch and in future if you rollback this one off patch, it will not be a successful rollback. So always follow one of the action plan given above.

References

- Using AIX commands genld, genkld and slibclean to avoid library file locking errors (libjox)

Keywords

AIX ; LOCK ; PATCH~INSTALLATION ; 

Help us improve our service. Please us your comments for this document.
阅读(2228) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~