Перейти к основному контенту

Opatch Failed With Error Code 21 «Premium ✭»

df -h $ORACLE_HOME df -h /tmp Check inodes (Linux/Unix):

opatch apply -local But you omitted -local (on a non-RAC environment), it might fail. Try running:

ls -la /u01/app/oraInventory/locks/* If lock files exist and no other OPatch process is running, remove them:

This article provides a comprehensive examination of error code 21: its root causes, diagnostic steps, and proven solutions. By the end, you will not only understand why this error occurs but also have a clear action plan to resolve it and prevent it in the future. Before dissecting the error, it's essential to understand the tool itself. OPatch is a command-line utility that manages interim patches for Oracle products, including Oracle Database, Oracle Fusion Middleware, and Oracle Grid Infrastructure. Unlike regular patch set updates (PSUs) or Release Updates (RUs), interim patches address specific bugs. opatch failed with error code 21

opatch apply -force However, this can lead to unexpected behavior. Always consult the patch README or Oracle Support before forcing a patch. For deep troubleshooting, run:

Checked inodes: df -i /tmp showed 100% inode usage due to millions of small temporary files. Cleaned /tmp and restarted. Patch succeeded. Case Study 3: Stale Inventory Lock After Power Outage Scenario: A power failure interrupted an OPatch session. After reboot, every OPatch command failed with error code 21.

By understanding the underlying mechanisms of OPatch and following the structured troubleshooting steps outlined in this article, you can confidently resolve error code 21 and keep your Oracle environments patched and secure. df -h $ORACLE_HOME df -h /tmp Check inodes

The error message usually appears as:

$ORACLE_HOME/OPatch/opatch lsinventory -detail If that command also fails with error code 21, you may need to restore the inventory from a backup or recreate it using opatch inventory with repair options. If the log shows a patch conflict, you can use:

You have Oracle Database 19.3.0.0.0 but are using OPatch version 12.2.0.1.0. The patch you are applying expects OPatch 13.9 or higher. 2. Insufficient Disk Space or Inodes OPatch creates temporary files, backups of modified files, and new JAR libraries. If the filesystem where $ORACLE_HOME resides is full, or if the temporary directory ( /tmp on Linux) runs out of space or inodes, OPatch will fail with error code 21. 3. File Permission Issues Oracle software must be owned by the Oracle user (typically oracle ) and the appropriate group (e.g., oinstall or dba ). If any files in the Oracle home have incorrect ownership or permissions (e.g., root-owned files, missing write permissions), OPatch will abort. 4. Locked Inventory The Oracle Central Inventory (located in /u01/app/oraInventory or similar) contains a lock file while OPatch is running. If a previous OPatch session was killed abruptly (e.g., Ctrl+C , system crash), the lock file may remain. A subsequent OPatch run will see the lock and exit with error code 21. 5. Missing or Corrupted Prerequisite Commands OPatch may rely on system commands like make , ar , ld , or gcc when relinking Oracle binaries. If these tools are missing or not in the PATH , the patching process can fail. 6. Conflicting Patches Already Applied If you attempt to apply a patch that conflicts with an existing interim patch, and you do not use the -force flag, OPatch will fail with error code 21. This is a protective mechanism to prevent corruption. 7. Corrupted OPatch Binary or Inventory XML Rarely, the OPatch binary itself may be corrupted, or the inventory.xml file may be malformed (e.g., due to manual edits, disk corruption, or improper patch rollbacks). Step-by-Step Diagnostic Approach When you encounter error code 21, do not panic. Follow this structured diagnostic flow. Step 1: Locate the Detailed Log File OPatch always writes a detailed log. The location depends on your command, but typically it is: Before dissecting the error, it's essential to understand

Upgraded OPatch to version 13.9.4.2.0. The patch applied successfully. Case Study 2: /tmp Full of Old JAR Extractions Scenario: A middleware admin repeatedly failed with error code 21 on a WebLogic patch. Logs showed "No space left on device" even though df -h /tmp showed 30% free.

OPatch failed with error code 21 Or, in more verbose logs:

$ORACLE_HOME/OPatch/opatch version Compare the version with the patch's README file. If the README specifies a minimum OPatch version (e.g., 13.9.4.2.0) and you have an older one, you must upgrade OPatch. Check available space in the Oracle home and /tmp :