Improvements to Data Dictionary Upgrade and Upgrade Status Displays

Oracle Database 12c includes improvements to the upgrade process, and to how upgrade status appears for the upgraded database.

Upgrading the Data Dictionary in Parallel with Parallel Upgrade Utility

Upgrading the data dictionary in Oracle Database is now done in parallel with the Parallel Upgrade Utility, which speeds up the upgrade process.

Instead of one SQL process loading the data dictionary, you can now have multiple processes, depending on your server’s CPU capacity. The Parallel Upgrade Utility (catctl.pl, which you can run from the command line using dbupgrade on Linux and UNIX, and dbupgrade.com on Windows) loads data into the dictionary as fast as possible, and defers any work that can be done in normal mode instead of upgrade mode. Upgrading the database using the Parallel Upgrade Utility reduces overall downtime.

Change to Upgrade Status Setting

Starting in Oracle Database 12c release 1 and later releases, the meaning of the UPGRADED status has changed.

When the upgrade is complete, and if there are no errors during the upgrade, then the status of the Oracle Server, Oracle Multimedia (ORDIM), Spatial (SDO) and XDB are all set to UPGRADED. This behavior is different from releases earlier than 12.1. In earlier releases, the status of the Oracle Server, Oracle Multimedia (ORDIM), Spatial (SDO) and XDB was set to VALID after upgrading. In 12.1 and later releases, the UPGRADED status indicates that the data dictionary has loaded without any errors. If any errors are logged to registry$error, then the status of the upgrade is set to INVALID.

When the upgrade is complete and if there are no errors, then the status of the database is set to UPGRADED. This behavior differs from earlier releases where the status of the database was set to VALID after upgrading. The UPGRADED status indicates that the data dictionary has been loaded without any errors. If any errors are logged to registry$error, then the status of the upgrade is set to INVALID.

Change to Status After Running the Re-compilation utlrp.sql Script

The meaning of the VALID status has changed in Oracle Database 12c.

In earlier releases of Oracle Database after upgrading a database, VALID meant that all objects in the data dictionary have been recompiled and are ready for use. In Oracle Database 12c, obtaining a VALID status has a different meaning. Running the utlrp.sql script in normal mode, recompiles data dictionary objects and moves the data dictionary from an UPGRADED status to a VALID status.

Oracle cannot guarantee that the database upgrade is valid unless utlrp.sql has been run after upgrading and before starting the upgraded database for the first time. Not running utlrp.sql after performing an upgrade forces data dictionary objects that you want to compile during their first access. The first user accessing the database suffers the performance cost for each invalid object accessed during this initial access. After these invalid objects are recompiled, normal processing returns. Running utlrp.sql ensures that the database is ready for use after upgrading. Any errors found are reported immediately. You can fix them before users of the upgraded database encounter problems.