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?

The Oracle Database contains an embedded Java Virtual Machine (OJVM) that allows Java stored procedures and core EBS packages (such as FND_WEB_SEC) to run natively inside the database kernel.



 
The ORA-29548 exception is raised when there is a release ID mismatch between:
  1. The physical Oracle Database binaries located under $ORACLE_HOME/bin/oracle on the DB host.
  2. The Java system classes loaded inside the database data dictionary under the SYS schema (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_HOME database binaries were patched with an OJVM PSU/RU (Patch Set Update / Release Update), but the cloned database data dictionary (SYS Java 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.sql or datapatch was missed on the database tier during clone customization, executing PL/SQL packages that invoke Java code (such as FND_WEB_SEC.GET_OP_VALUE during FNDCPASS) triggers ORA-29548.

2. Diagnostics: Checking OJVM Object Status

Before dropping or reloading Java classes, check the current count and status of Java objects in your database:

-- Connect as SYSDBA
sqlplus / as sysdba

SELECT owner, status, count(*) 
FROM all_objects 
WHERE object_type LIKE '%JAVA%' 
GROUP BY owner, status;

If you notice 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

To resolve ORA-29548, we cleanly remove the existing OJVM class definitions and re-initialize the core Java system using rmjvm.run and create or replace java system.

Step 1: Create the Clean-Up Script (rmcorejvm.sql)

Create a SQL script on the database tier to safely remove corrupt or mismatched JVM objects:
-- Name: rmcorejvm.sql
connect / as sysdba
set echo on
set serveroutput on
spool rmcorejvm.log

SELECT * FROM v$instance;

-- View current Java object state
SELECT owner, status, count(*) 
FROM all_objects 
WHERE object_type LIKE '%JAVA%' 
GROUP BY owner, status;

-- Remove core JVM system objects
EXECUTE rmjvm.run(false);

SHUTDOWN IMMEDIATE;
spool off
exit;


Step 2: Create the Re-Initialization Script (corejvminst.sql)

Create a second script to reload and initialize the Java system classes matching the database executable version:
-- Name: corejvminst.sql
connect / as sysdba
set serveroutput on
set echo on
spool corejvminst.log

STARTUP MOUNT;

-- Temporarily disable system triggers to prevent execution locks during class creation
ALTER SYSTEM SET "_system_trig_enabled" = FALSE SCOPE=MEMORY;

ALTER DATABASE OPEN;

-- Re-check Java objects prior to class creation
SELECT owner, status, count(*) 
FROM all_objects 
WHERE object_type LIKE '%JAVA%' 
GROUP BY owner, status;

-- Re-create the core Java system classes
CREATE OR REPLACE JAVA SYSTEM
/

SHUTDOWN IMMEDIATE;
spool off
exit;

Step 3: Execute the Scripts in Sequence

Run the scripts from the command line as the oracle database OS user using sqlplus:
# 1. Execute removal script
sqlplus /nolog @rmcorejvm.sql


# 2. Execute re-installation script
sqlplus /nolog @corejvminst.sql



Step 4: Restart the Database and Restore Settings

Mount the database, restore system settings and open it so custom triggers run normally. Finally take a bounce and check the value as below:

sqlplus / as sysdba

STARTUP MOUNT;
ALTER SYSTEM SET "_system_trig_enabled" = FALSE SCOPE=BOTH;
ALTER DATABASE OPEN;





4. Verification and Password Reset Execution

Once the database JVM system classes have been re-created, verify that the Java system objects are valid:
SELECT owner, status, count(*) 
FROM all_objects 
WHERE object_type LIKE '%JAVA%' 
GROUP BY owner, status;

Execute FNDCPASS or AFPASSWD

Now 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

  1. 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.
  2. Disable System Triggers: Disabling _system_trig_enabled during CREATE OR REPLACE JAVA SYSTEM is vital. Custom or EBS auditing triggers can interfere with object compilation if active during JVM re-initialization.
  3. 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

****************************நன்றி****************************

Comments

Post a Comment

Popular posts from this blog

Common R12.2 adcfgclone Issues

REP-3000: Internal error starting Oracle Toolkit

Error 404 -- Not Found From RFC 2068 hypertext Transfer Protocol -- HTTP/1.1