Fixing Preupgrade Validation Failure on Oracle Database Appliance (ODA) Due to a Stuck Database Home

Rajesh Madhavarao Nov 13, 2025 5:44:18 PM

When working with Oracle Database Appliance (ODA), upgrade readiness checks are usually straightforward — until you hit a strange failure that doesn’t make sense.

Recently, during a 19c upgrade, I encountered a “Validate Database Home Status Failed” error that traced back to an old database home stuck in the CREATING state. This post walks through how I diagnosed and fixed the issue directly in the ODA’s internal MySQL configuration database.

Background:

While running a pre-upgrade validation on an ODA X8-2 system, I received the following message:

__DBHOME__ Validate Database Home Status Success Database home 'OraDB19000_home1' is None in 'CONFIGURED' state Validate Database Home Status Failed Database home 'OraDB19000_home2' is Make sure the database home is in in 'CREATING' state 'CONFIGURED' state or remove database home using 'odacli delete-dbhome'                                                                                 command Validate Database Home Status Success Database home 'OraDB19000_home3' is None in 'CONFIGURED' state


 

Running the ODA CLI command confirmed it:

 

odacli list-dbhomes

ID                                       Name                 DB Version           DB Edition  Home Location                                            Status


db244e9d-9d3e-446f-9e15-461913aaf1b6     OraDB19000_home1     19.16.0.0.220719     EE          /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1     CONFIGURED


ce18accb-6f87-472b-bdcf-232e5b781596     OraDB19000_home2     19.20.0.0.230718     EE          /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_2     CREATING


fcdba17c-4691-4a56-8d14-836798809694     OraDB19000_home3     19.20.0.0.230718     EE          /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_3     CONFIGURED

 

It was clear that the old OraDB19000_home2 entry was stuck in CREATING, even though the directory already existed.
The usual odacli delete-dbhome command failed, so I decided to dig deeper.

Root Cause Analysis

ODA internally uses a local MySQL database (dcsagentdb) to track all ODA components — databases, homes, patches, and configurations.

 

A failed or incomplete DB home creation had left a stale record in this MySQL table (DatabaseHome), which caused the pre-upgrade validation to fail.

 Investigation Steps

I connected to the internal ODA MySQL instance:

/opt/oracle/dcs/mysql/bin/mysql --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf

Switched to the DCS agent schema:
 
USE dcsagentdb;
SELECT * FROM DatabaseHome;
 
| ce18accb-6f87-472b-bdcf-232e5b781596 | OraDB19000_home2 | Creating | ... |
 

 
1.  Backup Before Modifying Anything
 
CREATE TABLE DatabaseHome_bkpjun172025 AS SELECT * FROM DatabaseHome;
 
2. Clean Up the Stuck Entry
 
DELETE FROM DatabaseHome WHERE name = 'OraDB19000_home2';
COMMIT;
 
SELECT name, status FROM DatabaseHome;
 
OraDB19000_home1 | Configured
OraDB19000_home3 | Configured
 
 
3. Re-Validate the Upgrade
 
[root@test02 upgrade19.24]# odacli create-preupgradereport -bm Job details ---------------------------------------------------------------- ID: 3f45b91d-5ecb-4412-ac54-4b7b2fa038b9 Description: Run pre-upgrade checks for Bare Metal Status: Created Created: June 16, 2025 2:59:19 PM ADT Message: Issue the ''odacli describe-preupgradereport -i 3f45b91d-5ecb-4412-ac54-4b7b2fa038b9'' command from the bare metal host to check details of the results Task Name Start Time End Time Status ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------- [root@test02 upgrade19.24]# odacli describe-preupgradereport -i 3f45b91d-5ecb-4412-ac54-4b7b2fa038b9
 
 
__DBHOME__ Validate Database Home Status Success Database home 'OraDB19000_home1' is None in 'CONFIGURED' state. Validate Database Home Status Success Database home 'OraDB19000_home3' is None in 'CONFIGURED' state
 
 

Lessons Learned

  • ODA maintains all configuration data in dcsagentdb, a local MySQL database.
  • If a DB Home creation or patch process is interrupted, it may leave stale entries that block future operations.
  • Always back up metadata before manual edits.
  • Manual cleanup can safely resolve ODA upgrade blockers when odacli delete-dbhome fails.
 

Conclusion

This issue was a great reminder that even automated systems like ODA can accumulate stale metadata after interrupted operations.
Understanding the internal structure of ODA (especially the DCS MySQL layer) provides the confidence to fix such issues quickly and safely.

If you’re running an ODA upgrade and hit a “Validate Database Home Status Failed” message, check for any CREATING DB homes first.
A few SQL commands might be all it takes to get your upgrade back on track.