Oracledna

Oracle Database Upgrade from 11g (11.2.0.4) to 19c (19.3) by Autoupgrade

This post is demonstrate the upgrading Standalone Non-CDB Oracle Database  from 11g (11.2.0.4) to 19c (19.3).

1. Take the full RMAN backup of 11g Oracle Database.

2. Take the 11g Home backup.

[oracle@prod 11.0.0]$ cd /u01/app/oracle/product/11.0.0
[oracle@prod 11.0.0]$

[oracle@prod 11.0.0]$ tar -pcvf db_1_bkp.tar db_1

[oracle@prod 11.0.0]$ ls
db_1 db_1_bkp.tar

3. Ensure DB backup is completed before upgrade.

SQL> SELECT * FROM v$backup WHERE status != ‘NOT ACTIVE’;

no rows selected

4. Check the invalid objects and make them valid. Also, SYS and SYSTEM objects should not be in invalid state.

SQL> select count(*) from dba_objects where status=’INVALID’;

COUNT(*)
———-
0

SQL> SELECT owner,object_name,object_type,status,created FROM dba_objects where status=’INVALID’ and owner=’SYS’;

no rows selected

SQL> SELECT owner,object_name,object_type,status,created FROM dba_objects where status=’INVALID’ and owner=’SYSTEM’;

no rows selected

5. Check the status of dba registry components before upgrade. All components should be in valid status.

set lines 1234 pages 1234
col comp_name for a50
col version for a15
col status for a10
SELECT comp_name, version, status FROM dba_registry;

COMP_NAME VERSION STATUS
————————————————– ————— ———-
OWB 11.2.0.4.0 VALID
Oracle Application Express 3.2.1.00.12 VALID
Oracle Enterprise Manager 11.2.0.4.0 VALID
OLAP Catalog 11.2.0.4.0 VALID
Spatial 11.2.0.4.0 VALID
Oracle Multimedia 11.2.0.4.0 VALID
Oracle XML Database 11.2.0.4.0 VALID
Oracle Text 11.2.0.4.0 VALID
Oracle Expression Filter 11.2.0.4.0 VALID
Oracle Rules Manager 11.2.0.4.0 VALID
Oracle Workspace Manager 11.2.0.4.0 VALID
Oracle Database Catalog Views 11.2.0.4.0 VALID
Oracle Database Packages and Types 11.2.0.4.0 VALID
JServer JAVA Virtual Machine 11.2.0.4.0 VALID
Oracle XDK 11.2.0.4.0 VALID
Oracle Database Java Packages 11.2.0.4.0 VALID
OLAP Analytic Workspace 11.2.0.4.0 VALID
Oracle OLAP API 11.2.0.4.0 VALID

18 rows selected.

6. Take the compatible parameter value of 11g DB to compare after the DB upgrade.

SQL> show parameter compatible

NAME TYPE VALUE
———————————— ———– ——————————
compatible string 11.2.0.4.0

7. Take the time zone value of 11g DB.

set linesize 300
col property_name for a30
col value for a20
SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE ‘DST_%’
ORDER BY PROPERTY_NAME;

PROPERTY_NAME VALUE
—————————— ——————–
DST_PRIMARY_TT_VERSION 14
DST_SECONDARY_TT_VERSION 0
DST_UPGRADE_STATE NONE

col version for 9999999999999
SELECT * FROM v$timezone_file;

FILENAME VERSION
——————– ————–
timezlrg_14.dat 14

8. Enable archive mode mode and Fast Recovery Area (FRA).

SQL> select flashback_on from v$database;

FLASHBACK_ON
——————
NO

SQL> show parameter recovery

NAME TYPE VALUE
———————————— ———– ——————————
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0
recovery_parallelism integer 0

SQL> alter system set db_recovery_file_dest_size=20G;

System altered.

SQL> alter system set db_recovery_file_dest=’/oem/fra’;

System altered.

SQL> show parameter recovery

NAME TYPE VALUE
———————————— ———– ——————————
db_recovery_file_dest string /oem/fra
db_recovery_file_dest_size big integer 20G
recovery_parallelism integer 0

SQL> select name,open_mode,log_mode from v$database;

NAME OPEN_MODE LOG_MODE
——— ——————– ————
PROD READ WRITE ARCHIVELOG

9. Check the status of all materialized views (MV), and refresh any materialized views that are not fresh.

SQL> SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;

no rows selected

10. Download the most recent version of “Autoupgrade.jar” file, from Doc 2485457.1 or frim https://www.oracle.com/database/upgrades/.

In 19c home, take the backup of existing autoupgrade.jar file and place the latest autoupgrade.jar file.

cd /u01/app/oracle/product/19.0.0/db_1/rdbms/admin

mv autoupgrade.jar autoupgrade.jar_bkp

cp /tmp/autoupgrade.jar .

11. Generate a sample config file and edit accordingly.

Make sure export the 11g Oracle home before running the “autoupgrade.jar” commands.

[oracle@prod ~]$ /u01/app/oracle/product/19.0.0/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.0.0/db_1/rdbms/admin/autoupgrade.jar -create_sample_file config /u01/config.cfg


Created sample configuration file /u01/config.cfg

Now, edit the config file

upg1.log_dir=/u01/app/oracle/cfgtoollogs/autoupgrade
upg1.sid=prod
upg1.source_home=/u01/app/oracle/product/11.0.0/db_1
upg1.target_home=/u01/app/oracle/product/19.0.0/db_1
upg1.start_time=NOW
upg1.upgrade_node=prod
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_version=19


To check the list of checks which autoaupgrade.jar performs use below command.

/u01/app/oracle/product/19.0.0/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.0.0/db_1/rdbms/admin/autoupgrade.jar -listchecks

12. Run the upgrade in analyze mode to validate any expected issues with the upgrade.

/u01/app/oracle/product/19.0.0/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.0.0/db_1/rdbms/admin/autoupgrade.jar -config /u01/config.cfg -mode analyze

[oracle@prod ~]$ /u01/app/oracle/product/19.0.0/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.0.0/db_1/rdbms/admin/autoupgrade.jar -config /u01/config.cfg -mode analyze


AutoUpgrade 25.3.250509 launched with default internal options
Processing config file …
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 Non-CDB(s) will be analyzed
Type ‘help’ to list console commands
upg> status

Config

User configuration file [/u01/config.cfg]
General logs location [/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto]
Mode [ANALYZE]
Jobs Summary

Total databases in configuration file [1]
Total Non-CDB being processed [1]
Total Containers being processed [0]

Jobs finished successfully [0]
Jobs finished/stopped [0]
Jobs in progress [1]

Progress
+—+———————————————————+
|Job| Progress|
+—+———————————————————+
|100|[||||||||||||||||| ] 33 %|
+—+———————————————————+

upg> status -job 100Job 100 completed
——————- Final Summary ——————–
Number of databases [ 1 ]

Jobs finished [1]
Jobs failed [0]

Please check the summary report at:
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log

[oracle@prod ~]$ cat /u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
==========================================
Autoupgrade Summary Report
==========================================
[Date] Sat Jun 28 06:06:40 IST 2025
[Number of Jobs] 1
==========================================
[Job ID] 100
==========================================
[DB Name] prod
[Version Before Upgrade] 11.2.0.4.0
[Version After Upgrade] 19.3.0.0.0
——————————————
[Stage Name] PRECHECKS
[Status] SUCCESS
[Start Time] 2025-06-28 06:06:23
[Duration] 0:00:16
[Log Directory] /u01/app/oracle/cfgtoollogs/autoupgrade/prod/100/prechecks
[Detail] /u01/app/oracle/cfgtoollogs/autoupgrade/prod/100/prechecks/prod_preupgrade.log
Check passed and no manual intervention needed

—-

We must refer below preupgrade.log for more details.

/u01/app/oracle/cfgtoollogs/autoupgrade/prod/100/prechecks/prod_preupgrade.log

13. Run Autoupgrade in Deploy mode.

Important: Before running Autoupgrade in Deploy mode, we must validate that there are no invalid objects or components that may affect the process.

[oracle@prod ~]$ /u01/app/oracle/product/19.0.0/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.0.0/db_1/rdbms/admin/autoupgrade.jar -config /u01/config.cfg -mode deploy


AutoUpgrade 25.3.250509 launched with default internal options
Processing config file …
+——————————–+
| Starting AutoUpgrade execution |
+——————————–+
1 Non-CDB(s) will be processed
Type ‘help’ to list console commands
upg> status

Config

User configuration file [/u01/config.cfg]
General logs location [/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto]
Mode [DEPLOY]
Jobs Summary

Total databases in configuration file [1]
Total Non-CDB being processed [1]
Total Containers being processed [0]

Jobs finished successfully [0]
Jobs finished/stopped [0]
Jobs in progress [1]

Progress
+—+———————————————————+
|Job| Progress|
+—+———————————————————+
|101|[|||||||||||| ] 23 %|
+—+———————————————————+

upg>
upg>
upg> status -job 101
Details

Job No 101
Oracle SID prod
Start Time 25/06/28 06:16:49
Elapsed (min): 0
End time: N/A

Logfiles

Logs Base: /u01/app/oracle/cfgtoollogs/autoupgrade/prod
Job logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101
Stage logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101/prechecks
TimeZone: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/temp
Remote Dirs:

Stages
SETUP <1 min
GRP <1 min
PREUPGRADE <1 min
PRECHECKS ~0 min (RUNNING)
PREFIXUPS
DRAIN
DBUPGRADE
POSTCHECKS
POSTFIXUPS
POSTUPGRADE
SYSUPDATES

Stage-Progress Per Container

+——–+———+
|Database|PRECHECKS|
+——–+———+
| prod| 100% |
+——–+———+

upg> status -job 101
Details

Job No 101
Oracle SID prod
Start Time 25/06/28 06:16:49
Elapsed (min): 75
End time: N/A

Logfiles

Logs Base: /u01/app/oracle/cfgtoollogs/autoupgrade/prod
Job logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101
Stage logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101/postfixups
TimeZone: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/temp
Remote Dirs:

Stages
SETUP <1 min
GRP <1 min
PREUPGRADE <1 min
PRECHECKS <1 min
PREFIXUPS 6 min
DRAIN <1 min
DBUPGRADE 49 min
DISPATCH <1 min
POSTCHECKS <1 min
DISPATCH <1 min
POSTFIXUPS ~18 min (RUNNING)
POSTUPGRADE
SYSUPDATES

Stage-Progress Per Container

+——–+———-+
|Database|POSTFIXUPS|
+——–+———-+
| prod| 100% |
+——–+———-+

upg> status -job 101
Details

Job No 101
Oracle SID prod
Start Time 25/06/28 06:16:49
Elapsed (min): 72
End time: N/A

Logfiles

Logs Base: /u01/app/oracle/cfgtoollogs/autoupgrade/prod
Job logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101
Stage logs: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/101/postfixups
TimeZone: /u01/app/oracle/cfgtoollogs/autoupgrade/prod/temp
Remote Dirs:

Stages
SETUP <1 min
GRP <1 min
PREUPGRADE <1 min
PRECHECKS <1 min
PREFIXUPS 6 min
DRAIN <1 min
DBUPGRADE 49 min
DISPATCH <1 min
POSTCHECKS <1 min
DISPATCH <1 min
POSTFIXUPS ~16 min (RUNNING)
POSTUPGRADE
SYSUPDATES

Stage-Progress Per Container

+——–+———-+
|Database|POSTFIXUPS|
+——–+———-+
| prod| 80 % |
+——–+———-+

upg> lsj
+—-+——-+———-+———+——-+———-+——-+—————-+
|Job#|DB_NAME| STAGE|OPERATION| STATUS|START_TIME|UPDATED| MESSAGE|
+—-+——-+———-+———+——-+———-+——-+—————-+
| 101| prod|POSTFIXUPS|EXECUTING|RUNNING| 06:16:49|27s ago|Executing fixups|
+—-+——-+———-+———+——-+———-+——-+—————-+

14. Post upgrade, check the DB version.

[oracle@prod ~]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_1
[oracle@prod ~]$ export ORACLE_SID=prod
[oracle@prod ~]$ export PATH=/u01/app/oracle/product/19.0.0/db_1/bin

[oracle@prod ~]$ sqlplus -V

SQL*Plus: Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

SQL> select name,version,status from v$database, v$instance;
NAME VERSION STATUS
——— —————– ————
PROD 19.0.0.0.0 OPEN

SQL> select banner_full from v$version;
BANNER_FULL
——————————————————————————–
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

15. Post upgrade, check the invalid objects and make them valid. Also, SYS and SYSTEM objects should not be in invalid state.

SQL> select count(*) from dba_objects where status=’INVALID’;

COUNT(*)
———-
0

16. Post upgrade, check the status of dba registry components before upgrade. All components should be in valid status.

set lines 1234 pages 1234
col comp_name for a50
col version for a15
col status for a10
SELECT comp_name, version, status FROM dba_registry;

COMP_NAME VERSION STATUS
————————————————– ————— ———-
Oracle Database Catalog Views 19.0.0.0.0 VALID
Oracle Database Packages and Types 19.0.0.0.0 VALID
JServer JAVA Virtual Machine 19.0.0.0.0 VALID
Oracle XDK 19.0.0.0.0 VALID
Oracle Database Java Packages 19.0.0.0.0 VALID
Oracle Real Application Clusters 19.0.0.0.0 OPTION OFF
OLAP Analytic Workspace 19.0.0.0.0 VALID
Oracle Workspace Manager 19.0.0.0.0 VALID
Oracle Text 19.0.0.0.0 VALID
Oracle XML Database 19.0.0.0.0 VALID
Oracle Multimedia 19.0.0.0.0 VALID
Spatial 19.0.0.0.0 VALID
Oracle OLAP API 19.0.0.0.0 VALID
Oracle Application Express 3.2.1.00.12 VALID

14 rows selected.

set lines 1234 pages 1234
col action_time for a30
col action for a14
col namespace for a14
col version for a10
col comments for a60
col bundle_series for a14
select action_time,action,namespace,version,comments from dba_registry_history;

ACTION_TIME ACTION NAMESPACE VERSION COMMENTS
—————————— ————– ————– ———- ————————————————————
24-08-13 12:03:45.119862 PM APPLY SERVER 11.2.0.4 Patchset 11.2.0.2.0
26-06-25 2:26:10.094049 PM APPLY SERVER 11.2.0.4 Patchset 11.2.0.2.0
BOOTSTRAP DATAPATCH 19 RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417
28-06-25 7:07:23.576713 AM RU_APPLY SERVER 19.0.0.0.0 Patch applied on 19.3.0.0.0: Release_Update – 190410122720
28-06-25 7:10:13.706536 AM UPGRADE SERVER 19.0.0.0.0 Upgraded from 11.2.0.4.0 to 19.3.0.0.0

17. Post upgrade, check the time zone value of 19c DB.

set linesize 300
col property_name for a30
col value for a20
SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE ‘DST_%’
ORDER BY PROPERTY_NAME;

PROPERTY_NAME VALUE
—————————— ——————–
DST_PRIMARY_TT_VERSION 32
DST_SECONDARY_TT_VERSION 0
DST_UPGRADE_STATE NONE

col version for 9999999999999
SELECT * FROM v$timezone_file;

FILENAME VERSION CON_ID
——————– ————– ———-
timezlrg_32.dat 32 0

18. Post upgrade, update the compatible parameter value after application testing.

After successful application testing, update the compatible parameter.

SQL> show parameter compatible

Disclaimer:

Please note the above information is only for educational purpose and practised in personal test database only. Always test in test database before implementing in production database. The pre-requisites and ways of implementing may vary from one environment to another. Hence, not providing guarantee that it will work in your environment.