Opatch Failed With Error Code 21 -
df -h $ORACLE_HOME df -h /tmp Check inodes (Linux/Unix):
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: opatch failed with error code 21
opatch apply -local But you omitted -local (on a non-RAC environment), it might fail. Try running: df -h $ORACLE_HOME df -h /tmp Check inodes
Introduction For any Oracle Database Administrator (DBA) or middleware specialist, applying patches is a routine yet critical task. Oracle’s OPatch utility is the standard tool for applying interim patches (one-off patches) to Oracle software. However, the process is not always seamless. Among the various error codes that can halt a patching operation, "OPatch failed with error code 21" is one of the most common—and often one of the most frustrating. Insufficient Disk Space or Inodes OPatch creates temporary
rm -rf /u01/app/oraInventory/locks/* Ensure the entire Oracle home is owned by the correct user:
Open the most recent log file and search for the first occurrence of the word "ERROR" or "SEVERE". The real error often appears several lines before the final "error code 21". Step 2: Check OPatch Version Run: