SAPTechno

Note 640910 - Problems when using OPatch

Version : 28 / 2010-07-26


Symptom

Warnings or errors occur when you use OPatch to implement an Oracle interim patch or merge fix.


Other Terms


Reason and Prerequisites

As of Oracle 9.2, OPatch is used to implement Oracle patches (other than patch sets). For more details on OPatch, see Note 306408.

Many OPatch problems can be eliminated by implementing the current OPatch and OUI patches (Note 629588).
The following is an overview of possible warnings and errors and ways of eliminating them:

    1. Exception in thread "main" java.lang.OutOfMemoryError
    Exception in thread "main" java.lang.NoClassDefFoundError:
    oracle/sysman/oii/oiic/OiicStandardInventorySession
    Can not set up OUI inventory session
    oracle/sysman/oii/oiii/OiiiOneoffException
    Unknown problem.
    OPatch stops because of Inventory problem.
    The OUI does not display installed interim patches
    The file <path>/oraInventory/Contents/oneoffsN.oo is empty
    runInstaller hangs
    2. Interim inventory update exception: The base component
    <oracle.rdbms,9.2.0.2.0> of the Oneoff Patch <9.2.0.2.0> is not
    present in the install inventory.
    3. Unknown inventory save error: PRKC-1021 : Problem in the clusterware
    There were problems propagating this patch to the other nodes:
    Interim patch cluster update file replication error:
    PRKC-1004 : Problem in copying file to nodes
    Interim patch cluster update directory creation error:
    PRKC-1007 : Problem in creating directories on the nodes
    4. A previously applied patch(es) may be in conflict with <new_patch>
    The patch(es) for version <oracle_version> that may be in conflict with this patch are: ...
    Continuing could overwrite all or parts of the patch(es) in conflict.
    5. Problems when checking for files that are active.
    There were problems when checking for active processes on critical
    files. The patch tool runs the command 'fuser' to check that
    critical files are not in use. Please check 'fuser' is available in
    your PATH environmental variable.
    6. There were problems in running the make commands needed to finish
    the patching process.
    The errors encountered were:
    Couldn't create file for the make commands.
    Error is: Permission denied
    Error is: The file system has read permission only.
    ERROR: Unknown inventory update error: null
    java.lang.NullPointerException
            at java.io.File.<init>(File.java:180)
    7. Couldn't find required file liboraInstaller.
    8. Cannot open to read file /oracle/oraInventory/ContentsXML/comps.xml
    OS_ERROR = [No such file or directory]
    OS_ERROR = [Permission denied]
    9. Problems with the lock file
    Lock file exists, details are:
    Interim patch <patch> is holding the lock,
    probably due to previous unsuccessful operation
    10. Can't locate Command.pm in @INC
    BEGIN failed--compilation aborted
    11. Not a valid patch area.
    Check the command line, current directory location and permissions
    of the patch directory.
    12. Cannot open file /var/opt/oracle/oraInst.loc for reading:
    [No such file or directory]
    13. Exception in thread "main" java.lang.NullPointerException
    at InitialDatabaseCheck.main(InitialDatabaseCheck.java:179)
    Unknown problem.
    14. Couldn't restore object apa.o into the archive libserver9.a.
    Couldn't restore object kke.o into the archive libserver9.a.
    Couldn't restore object kko.o into the archive libserver9.a.
    Couldn't restore object kkpap.o into the archive libserver9.a.
    15. Can't locate English.pm in @INC ...
    16. AIX 5.x: Can't call method "build_option_details" on an undefined
    value at /oracl/BWT/920_64/OPatch/opatch_modules/Apply.pm line ...
    17. The following required components were not located or have the
    wrong:versions:
        oracle.rdbms
    18. The patch directory area must be a number.
    19. WINDOWS, Active State Perl:
    'C:\Program' is not recognized as an internal or external command, operable program or batch file
    The filename, directory name, or volume label syntax is incorrect.
    Error in executing Java program to check conflict
    ERROR: OPatch failed during pre-reqs check.
    A core dump occurs.
    OPatch hangs
    20. LINUX: java.lang.UnsatisfiedLinkError:
    Can't load library: /home/usupport/oui/bin/Linux/liboraInstaller.so
    21. OPatch detects your platform as 453 while this patch <patch number>
    supports platforms 23 (Sun SPARC Solaris (64-BIT))
    OPatch detects your platform as 610 while this patch <patch number>
    supports platforms 212 (AIX 5L (64-BIT))
    22. OPatch detects your platform as 46 while this patch <patch number>
    supports platforms 226 (Linux x86_64)
    23. 10g: OPatch detects your platform as 110 while this patch <patch number>
    supports platforms 214 (Linux x86_64)
    24. The Oracle Home /oracle/<sid>/920_64 is not registered with the Central
    Inventory.  OPatch was not able to get details of the home from the
    inventory.
    ERROR: OPatch failed because of Inventory problem
    Updating inventory...
    Exception in thread "main" OPatch Exception:
      Cannot lock OUI inventory (READ/WRITE Level)
      The target area /oracle/product/oraInventory cannot be used
      because it is in an invalid state.
            at opatch.O2O.<clinit>(O2O.java:118)
            at opatch.UpdateInventory.main(UpdateInventory.java:386)
    Files on system are patched but Inventory Update has failed.
    25.   This patch will update Jar file(s) but OPatch was not able to locate
    executable jar under /oracle/product/9.2.0/jdk/bin.
      ERROR: OPatch failed during pre-reqs check.
    find_executable_file(): Cannot find "jar" from
    "<ORACLE_HOME>/jre/1.4.2/bin"
    ERROR: OPatch failed because of cmd. args. problem.
      The following problems were encountered when trying to backup Java
    class files:
      1. /oracle/SA1/920_64/rdbms/jlib/CDC.jar
      [ object: Subscription.class ]
    26. Archive failed: failed to update
    "<ORACLE_HOME>/lib/libserver9.a" with updated
            "<stage>/5369855/files/lib/libserver9.a/qksop.o"
    There are 1 issues patching static library in Oracle Home.
    FILE PROBLEM: some files are not patched.
    OPATCH_JAVA_ERROR: Patch was not successfully applied.
    Verification of the patch failed.
    ERROR: OPatch failed as verification of the patch failed.
    FINEST:CheckSum of 2 streams are 594889758 and 594889552
    FINE:  2 files are identical? FALSE
    INFO:    Archive failed: failed to update
      "<ORACLE_HOME>/lib/libserver10.a" with updated
      "/<stage>/4751931/files/lib/libserver10.a/qccsync.o"
    27. INFO:The following warnings have occurred during OPatch execution:
    INFO:1) OUI-67160:ApplySession for patch ID '5188321':
    Could not back up following actions for patch rollback:
    1) null
    2) null
    28. ApplySession failed: ApplySession failed in system modification
    phase... 'ApplySession::apply failed: Jar not applied ...
    'invalid entry COMPRESSED SIZE (EXPECTED 31214 BUT GOT 30948 BYTES)'
    29. OUI-67124:Copy failed
    from '/oracle/<sid>/102_64/.patch_storage/8568398_Jun_9_2009_18_00_20/
    files/lib/libjox10.a' to '/oracle/<sid>/102_64/lib/libjox10.a

Solution

    1. Install a current version of the Oracle Universal Installer in accordance with Note 601965. OPatch should then work properly.
    2. Implement a current version of the Oracle Universal Installer in accordance with Note 610880.
    3. OPatch inadvertently thinks that there is an RAC cluster and terminates with cluster-specific error codes. For more information, see Note 619599.
    4. For more information, see Note 628222.
    5. Copy the fuser command (normally in /usr/sbin) into the OPatch directory. Make sure that ora<sid> can execute this command and that PATH contains the OPatch directory.
    6. Make sure that ora<sid> has write and read authorization for the patch directory. In addition to read authorization, OPatch also needs write authorization for the patch directory as the old versions of the replaced objects are stored there.
    7. The liboraInstaller library is created during the OUI installation and is also required by OPatch. OPatch determines the OUI directory with the library in the following two steps:
      a) Retrieve the directory defined with inventory_loc from oraInst.loc (UNIX, for example, /oracle/oraInventory) or the inst_loc registry entry from HKEY_LOCAL_MACHINE->Software->Oracle (WINDOWS, for example C:\Program Files\oracle\inventory).
      b) Go to the oui subdirectory of the higher-level directory (for example, /oracle/oui on UNIX or C:\Program Files\oracle\oui on WINDOWS).

              You should therefore check the following points:

  • Correctness of the entry in oraInst.loc
  • A suitable runInstaller must be installed for the current database release.
  • You must use the aforementioned mechanism to find the correct OUI directory. If required, create a link from the OUI directory determined above to the existing OUI directory, for example:

    ln -s <path_of_installed_oui> /oracle/oui
  • The OUI directory and its subdirectories must be readable for ora<sid>.
    8. On UNIX, make sure that the correct inventory is referenced in oraInst.loc and that this is readable for ora<sid>. On WINDOWS, check the correctness of the inst_loc entry in the registry under HKEY_LOCAL_MACHINE->Software->Oracle.

              Also note that OPatch can only be used as of 9.2. A call under Oracle <= 8.1.7 also results in this error.

    9. When you import a patch, OPatch creates the file $ORACLE_HOME/.patch_storage/patch_locked to prevent several patches being implemented simultaneously. If problems occur during implementation, this file may not be deleted, and attempts to implement other patches fail due to the lock.

              To eliminate this error, correct the error that occurred when implementing the patch that holds the lock. As soon as this patch has been successfully implemented, the lock no longer exists. Alternatively, you can roll back the patch that holds the lock using "opatch rollback".

    10. The Perl module Command.pm required to start OPatch must be available in the subdirectory opatch_modules of the OPatch directory. Check the file and directory authorizations and install a current OPatch version if necessary.
    11. OPatch must be called from the directory in which the patch to be implemented is located. The directory name is also the patch number. For example, a source directory such as /oracle/stage/9203/3023831 is correct for patch 3023831 whereas $ORACLE_HOME/OPatch or /oracle/stage/9203 are incorrect.

              In addition, make sure that the file and directory authorization in the patch directory are sufficient and that the patch was extracted completely and correctly. Retrieve and extract the patch again if you are doubtful.

    12. Make sure that the file oraInst.loc exists in the directory /var/opt/oracle or /etc (depending on the operating system) and that it has sufficient authorizations.
    13. This error may occur if you have copied the Oracle software manually from another system. This procedure is not supported. Install the Oracle software using OUI instead of copying it from another system.

              Also note that once you have installed Oracle-Home, you must not rename it.

    14. During a patch rollback, backups of the old versions of objects replaced within the framework of the patch are copied back. These copies are located in $ORACLE_HOME/.patch_storage/<patch>/lib. If these no longer exist for some reason, an error occurs. In this case, you can copy the files from this directory in a similar system. Alternatively, the Oracle software must be uninstalled completely and then installed again. Note 551542 describes how to uninstall the software.
    15. This error may be triggered as a result of an obsolete Perl version. Make sure that you have installed a supported Perl version and that the correct perl executable has been created. If required, adjust the PATH variable or specify the complete path during the call.
    16. If this error occurs on AIX 5.x, it could be caused by the Perl Version 5.6.1 used. In this case, you can use Perl 5.6.0 (in contract to the general recommendation), which should allow the import.
    17. The patch to be imported does not match the patch set being used. Check the used patch set and the prerequisite for the patch to be imported.
    18. The error can occur if the patch archive was unpacked on WINDOWS and then transferred to UNIX. Therefore always unpack the archive directly on UNIX.
    19. If the problem occurs when you use activestate perl, set the ACTIVE_STATE_PERL environment variable to TRUE.
    20. For more information, see Note 770236.
    21. For more information, see Note 815155.
    22. Use Opatch 1.0.0.0.53 or higher or set the OPATCH_PLATFORM_ID to 226:

    setenv OPATCH_PLATFORM_ID  226
    23. Set the environment variable OPATCH_PLATFORM_ID to 214.
    24. Ensure that ora<sid> is the owner of the oraInventory/locks directory, and that it has both read and write authorization for this directory.
    25. For more information, see Note 932108.
    26. For more information, see Note 1032044.
    27. This is due to Oracle bug 5354326 or 5694851. Apply OPatch 10.2.0.4 or higher (Note 839182) to solve this problem.
    28. Download the most recent OPatch from SAP Service Marketplace (even if the patch level of the OPatch used seems to be up-to-date).
    29. Stop Oracle and all listeners and execute as the root user /usr/sbin/slibclean. After you do this, rename the file libjox10.a as follows:

    cd $ORACLE_HOME/lib
    mv libjox10.a libjox10.a.orig
    mv libjox10.a.orig libjox10.a

              After you perform these steps, apply the patch that failed previously.



Header Data

Released On 26.07.2010 06:54:40
Release Status Released for Customer
Component BC-DB-ORA Oracle
Other Components
BC-DB-ORA-INS Installation SAP System with Oracle
Priority Recommendations / Additional Info
Category Help for error analysis

Validity

This document is not restricted to a software component or software component version

References

This document refers to:

SAP Notes
1032044   OPatch Failing in Validation Phase
932108   OPatch was not able to locate executable jar
839182   Oracle patch installation with OPatch
815155   Wrong Platform ID during patch application after 9.2.0.6 pat
770236   Error when importing patches with Opatch on Linux
719928   Opatch problems after installation of Oracle 9.2.0.x
706132   Composite SAP Note: Problems with Oracle 9i
628222   OPatch or patch.sh warning due to patch conflicts
619599   Opatch and error message PRKC-1021
610880   "Interim inventory exception" When Applying Interim Patches
601965   Inventory Corruption by OPatch
551542   FAQ: Oracle inst., upgrade, migration, relinking software
306408   Oracle 9.2.0: Using OPatch to install patches

This document is referenced by:

SAP Notes (13)
551542   FAQ: Oracle inst., upgrade, migration, relinking software
628222   OPatch or patch.sh warning due to patch conflicts
619599   Opatch and error message PRKC-1021
610880   "Interim inventory exception" When Applying Interim Patches
932108   OPatch was not able to locate executable jar
1032044   OPatch Failing in Validation Phase
601965   Inventory Corruption by OPatch
839182   Oracle patch installation with OPatch
719928   Opatch problems after installation of Oracle 9.2.0.x
770236   Error when importing patches with Opatch on Linux
706132   Composite SAP Note: Problems with Oracle 9i
815155   Wrong Platform ID during patch application after 9.2.0.6 pat
306408   Oracle 9.2.0: Using OPatch to install patches