Oracle error -29548: ORA-29548: Java system class reported: release of Java system classes in the database does not match that of the oracle executable - USER ( APPS ) has been detected in FND_WEB_SEC.GET_OP_VALUE.
Fixing ORA-29548: Java System Class Release Mismatch in Oracle EBS R12.2 Post-Clone
When performing post-cloning activities or applying database patchsets in an Oracle E-Business Suite (EBS) R12.2 environment, DBAs frequently run utilities like 'FNDCPASS' or 'AFPASSWD' to rotate system credentials.
However, running these utilities can sometimes trigger a critical database JVM error:
ORA-29548: Java system class reported: release of Java system classes in the database does not match that of the oracle executable USER ( APPS ) has been detected in FND_WEB_SEC.GET_OP_VALUE.
In this post, we will examine why the ORA-29548 error occurs inside the Oracle Database Java Virtual Machine (OJVM), review the diagnostic steps, and walk through a step-by-step SQL script workflow to cleanly reload the database Java system classes.
1. What Causes ORA-29548?
FND_WEB_SEC) to run natively inside the database kernel.- The physical Oracle Database binaries located under
$ORACLE_HOME/bin/oracleon the DB host. - The Java system classes loaded inside the database data dictionary under the
SYSschema (e.g.,java.lang.Object,oracle.aurora.*).
Why Does This Happen During Cloning or Patching?
- Binary vs. Data Dictionary Mismatch: During cloning, if the target
$ORACLE_HOMEdatabase binaries were patched with an OJVM PSU/RU (Patch Set Update / Release Update), but the cloned database data dictionary (SYSJava objects) was restored from a source database that lacked the corresponding Java patch script execution, the release IDs fail to match upon execution. - Incomplete Post-Clone Patching: If
postinstall.sqlordatapatchwas missed on the database tier during clone customization, executing PL/SQL packages that invoke Java code (such asFND_WEB_SEC.GET_OP_VALUEduringFNDCPASS) triggers ORA-29548.
2. Diagnostics: Checking OJVM Object Status
INVALID Java system classes or an inconsistent number of objects across SYS and PUBLIC, the system Java classes must be re-initialized using Oracle's core JVM scripts.3. Step-by-Step Resolution Workflow
rmjvm.run and create or replace java system.Step 1: Create the Clean-Up Script (rmcorejvm.sql)
Step 2: Create the Re-Initialization Script (corejvminst.sql)
Step 3: Execute the Scripts in Sequence
oracle database OS user using sqlplus:Step 4: Restart the Database and Restore Settings
4. Verification and Password Reset Execution
FNDCPASS or AFPASSWDNow re-run your post-clone password modification utility from the application tier:
# Example FNDCPASS command to change APPS password
FNDCPASS apps/<current_apps_passwd> 0 Y system/<system_passwd> SYSTEM APPS <new_apps_passwd>
The password update utility will complete with STATUS=SUCCESS, as FND_WEB_SEC.GET_OP_VALUE can now successfully invoke OJVM routines without throwing release mismatch exceptions.
5. Important DB Best Practices & Tips
- Keep Binaries and Data Dictionary in Sync: Always run
datapatch(for 12c/19c) or the corresponding OJVM post-install scripts whenever applying database patches on cloned instances. - Disable System Triggers: Disabling
_system_trig_enabledduringCREATE OR REPLACE JAVA SYSTEMis vital. Custom or EBS auditing triggers can interfere with object compilation if active during JVM re-initialization. - Backup Before Re-initialization: Always ensure you have a valid database backup or restore point prior to running
rmjvm.run.
References & MOS Documents
- My Oracle Support Doc ID 276551.1: How to Reload the JVM in Oracle Database
- My Oracle Support Doc ID 1929745.1: ORA-29548 Reported When Running Java Stored Procedures After Database Patching
Fantastic. God Bless you
ReplyDelete