Upgrading an Oracle database in a mission-critical environment is never just about running scripts. It’s about reducing risk, minimizing downtime, and having a clean rollback plan. For organizations still running Oracle Database 11g Release 2, upgrading from 11.2.0.3 to 11.2.0.4 is a common requirement—especially to stay on the most stable patch set of the 11g family.
One of the safest ways to perform this upgrade is by using the Data Guard failover method. This approach allows DBAs to upgrade the standby database first, validate everything, and then promote it to primary—significantly reducing business impact.
In this article, we’ll walk through a real-world, production-tested approach to upgrading Oracle 11.2.0.3 to 11.2.0.4 using Data Guard, including pre-checks, activation, upgrade execution, and post-upgrade validation.
Why Use the Data Guard Failover Method?
Traditional in-place upgrades require extended downtime on the primary database. With Data Guard, you get several advantages:
- Minimal downtime for business applications
- Built-in fallback option if something goes wrong
- Upgrade validation on standby before impacting users
- Safer approach for banking and enterprise systems
In short, this method shifts risk away from your primary system.
High-Level Upgrade Flow
Before diving into commands, here’s the logical flow:
- Prepare the environment and fix known issues
- Validate Data Guard synchronization
- Activate the standby database
- Start the database in upgrade mode
- Perform the 11.2.0.4 upgrade
- Run post-upgrade checks and validations
Each step matters. Skipping “small” checks is usually where upgrades fail.
Step 1: Fix Temporary Tablespace Issues
Temporary tablespace issues are a silent upgrade killer. Old tempfiles, filesystem dependencies, or sizing issues can cause upgrade scripts to fail halfway.
Start by checking existing tempfiles:
SELECT * FROM v$tempfile;
SELECT * FROM dba_temp_files;
Add new tempfiles using ASM (recommended for stability):
ALTER TABLESPACE temp_data ADD TEMPFILE '+DATA' SIZE 1G AUTOEXTEND ON;
Once the new tempfiles are confirmed, safely drop the old ones pointing to filesystem paths. This cleanup ensures the upgrade scripts have enough temporary space to work without interruption.
Step 2: Validate Data Guard Synchronization
Before touching the standby database, confirm that redo shipping and apply are fully in sync.
On the primary database:
SELECT thread#, MAX(sequence#)
FROM gv$archived_log
GROUP BY thread#;
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
Then re-check the sequence numbers.
On the standby database:
SELECT thread#, MAX(sequence#)
FROM gv$archived_log
WHERE applied = 'YES'
GROUP BY thread#;
The applied sequence should match the primary. If it doesn’t, stop here and fix Data Guard first.
Step 3: Activate the Standby Database
Once synchronization is confirmed, the standby database is promoted to primary.
Run the following on the standby:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE ACTIVATE STANDBY DATABASE;
SHUTDOWN IMMEDIATE;
This step is irreversible, so double-check everything before proceeding.
Step 4: Start the Database in Upgrade Mode
Bring the newly activated database up in upgrade mode:
STARTUP UPGRADE;
This mode allows Oracle to modify internal data dictionary structures during the upgrade.
Step 5: Pre-Upgrade Tasks (Do Not Skip These)
These steps dramatically reduce post-upgrade issues.
Purge Recycle Bin
PURGE DBA_RECYCLEBIN;
Gather Dictionary Statistics
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
Run Pre-Upgrade Script
@utlu112i.sql
This script identifies potential issues such as invalid objects, deprecated parameters, and required actions. Expect it to run for around 20–30 minutes in large environments.
Check Time Zone Version
SELECT version FROM v$timezone_file;
Knowing this upfront avoids surprises later.
Step 6: Handle Invalid Objects Before Upgrade
Compile invalid objects:
@utlrp.sql
Then check for invalid objects in critical schemas:
SELECT owner, object_type, object_name, status
FROM dba_objects
WHERE status = 'INVALID'
AND owner IN ('SYS','SYSTEM');
Drop any unused or obsolete custom objects that may block the upgrade. This is especially common in legacy SYSTEM schema objects.
Step 7: Perform the Database Upgrade
Now comes the main event.
Run the upgrade script:
@?/rdbms/admin/catupgrd.sql
In the documented environment, this step completed in around 14 minutes, but timing depends on database size and system performance.
Monitor logs closely. Errors here should never be ignored.
Step 8: Start Database After Upgrade
Once the upgrade completes:
STARTUP;
At this point, the database is running on Oracle 11.2.0.4, but post-upgrade tasks are still mandatory.
Step 9: Post-Upgrade Tasks
Run the following scripts to clean up and stabilize the database:
@?/rdbms/admin/utlu112s.sql
@?/rdbms/admin/catuppst.sql
@?/rdbms/admin/utlrp.sql
Optional (not always required):
@?/rdbms/admin/utluiobj.sql
Step 10: Update COMPATIBLE Parameter
After successful validation, update the COMPATIBLE parameter:
ALTER SYSTEM SET compatible='11.2.0.4' SCOPE=SPFILE;
This change requires a restart and should only be done after confirming stability.
Step 11: Final Validation
Check Registry History
SELECT * FROM registry$history;
You may see entries like VIEW INVALIDATE—this is normal during upgrades and can be safely ignored.
Verify Oracle Version
SELECT * FROM v$version;
Confirm that the database is now running 11.2.0.4.
Important Support Note
Oracle Database 11g is now under Market Driven Support (MDS). Without MDS:
- No patch downloads
- No security fixes
- No Platinum support access
If you’re planning to stay on 11.2.0.4, ensure support contracts are aligned—or start planning a move to 19c or 23ai.
Final Thoughts
Upgrading Oracle 11.2.0.3 to 11.2.0.4 using the Data Guard failover method is one of the safest approaches available for legacy environments. It balances stability, downtime control, and rollback safety, making it ideal for financial systems and enterprise workloads.
If you treat the upgrade as a process, not just a script execution, you’ll avoid most production surprises.
Related Guides for Database Upgrade
If you prefer a manual approach or want to explore the DBUA method, check out these related step-by-step tutorials from our site:
- Oracle 19c Database Upgrade from 11.2.0.4 to 19c using DBUA
- Oracle 19c Database Upgrade from 11.2.0.4 to 19c using Manual Method
- Upgrade Oracle Database 11.2.0.3 to 11.2.0.4 Using DBUA – Step-by-Step with Screenshots
- Oracle 19c Client Patching Upgrade: Step-by-Step Guide to Updating from 19.3.0 to 19.29
These internal links help you compare different upgrade paths and choose what best fits your environment.




