Category Archives: Oracle Upgrade

Upgrade 10g to 12c

Upgrade 10g to 12c

This note describes the procedure of migrating as well as upgrading an Oracle 10g Release 2 database to Oracle 12c ( using a combination of RMAN Incremental backups and the new Oracle 12c command line parallel upgrade utility.

This method minimizes the outage required for the migration as well as database upgrade and the outage is limited to the time it takes to backup the last set of archive log files generated since the last Level 1 incremental backup and the time taken to run the catupgrd.sql upgrade script (which can now be run from the command line in parallel).

In this example we are moving a database from one Linux host 5.3 to another Linux 5.7 host, moving from ASM to non-ASM as well as upgrading the database.

Let us take a look at the steps involved.

Copy the new 12c Pre-Upgrade scripts to the Oracle 10g database server and execute it in the Oracle database

In the Oracle 10g database execute the Pre-Upgrade fixup scripts

Take a level 0 RMAN Incremental backup

Copy the password file and init.ora from 10g source to Oracle 12c target database environment

Edit the init.ora parameter file in the 12c database environment and make changes like ….

In the Oracle 12c environment start the instance in NOMOUNT state

Restore control file backup

Restore Level 0 backup

Take a level 0 RMAN Incremental backup

Take a backup of the archive log files generated since the last Level 1 incremental backup using the command


Copy the archivelog backup to target and register

Run a LIST BACKUP OF ARCHIVELOG command and note the last archive log file which has been backed up

Recover the database until the sequence number noted above + 1

Open the database with RESETLOGS UPGRADE

Shut down the database and open it in the Oracle 12c environment in STARTUP UPGRADE mode

Execute the perl script which will call the catupgrd.sql in parallel mode

Review the upgrade summary log file

Run post-upgrade steps

Upgrade timezone data to version 18

Recompile INVALID Objects

Run utlrp followed by utluiobj.sql