There are several methods available which can be used for Upgrading to Oracle Database 12c. You can choose the manual upgrade method, the export/import procedure, transportable tablespaces method or you can use the Database Upgrade Assistant (DBUA) graphical interface
. Alternatively if you have a critical HA environment and cannot afford the downtime then you can use the Data Guard setup. However Oracle’s preferred and recommended method is the use of the DBCA. Here we will look at the DBCA and the manual upgrade method, upgrading an existing database from 11g to 12c.
Direct Upgrade Supported Versions
For a database to be able to be upgraded directly to 12c, it must already be at the 10.2.0.5+, 11.1.0.7+ or the 11.2.0.2+ version. If you have a database running at any other version then you have to use the indirect approach of first upgrading it to a supported version above and then you will be able to upgrade it to 12c. Here we will be performing a straight upgrade of the database from 11g to 12c and to a non-CDB database. The PDB conversion can be done later.
Using DBUA
The database upgrade assistant utility has been significantly improved, over the previous releases, in Oracle 12c. Using this you don’t have to perform any upgrade pre-requisites as everything will be done by the DBUA itself. Just make sure that your database is up and running and your current environment parameters are set to 12c. Then just run the DBUA utility.
The first screen allows you to choose what you want to do. You can upgrade a database or you can just move a database from a different Oracle Home to your current one. In this case let’s choose the first option.
The next screen allows you to select a database for upgrade. It will show you the source and the target Oracle Homes and their database versions. Choose your database. In our case it was only one i.e. orcl.
The upgrade assistant will now check for pre-requisites and will show the results on next screen.
There are two warnings as you can see. One of them is related to Db Console repository. Before 12c every database had a DB Console which has been deprecated in 12c and EM Express is used instead. Clicking on More Details link below will show how you can remove EM repository. Although its not required for successful upgrade to remove DB Console data but still its good practice and will save you time during upgrade. So log into your database and run the “emremove.sql” script located in 12c home in RDBMS folder.
SQL> @/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/emremove.sql
old 69: IF (upper('&LOGGING') = 'VERBOSE')
new 69: IF (upper('VERBOSE') = 'VERBOSE')
PL/SQL procedure successfully completed.
Once completion shows 100% you can use the link Review Results to view summary of what has been done. Click Close to end the Upgrade Assistant.
Verifying the Upgrade
The upgrade has been completed successfully. You can verify it by logging into your database and confirming the new version.
$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Fri Aug 9 09:39:18 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl
INSTANCE_NAME
----------------
orcl
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE 12.1.0.1.0 Production
TNS for Linux: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
Manual Upgrade
The DBUA is good for quick database upgrades. It is very simple to use and Oracle had pretty much mae it automatic. However, there may be a situation where you want to control every aspect of the upgrade. In that case you can use the manual upgrade process.
In this section we will demonstrate the manual upgrade process. Again here we will assume the same scenario of having to upgrade a the ORCL database from 11.2.0.3 to 12.1.0.0. We will start by copying the below mentioned two scripts from new Oracle 12C home to a temporary directory.
$ mkdir -p /tmp/upgrade
$ cp /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/preupgrd.sql /tmp/upgrade
$ cp /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/utluppkg.sql /tmp/upgrade
Now log into your database which is required to be upgraded (in our case its called orcl) and execute the pre-upgrade script. This script will check if database is OK to be upgraded.
SQL> @/tmp/upgrade/preupgrd.sql
Loading Pre-Upgrade Package...
Executing Pre-Upgrade Checks...
Pre-Upgrade Checks Complete.
************************************************************
Results of the checks are located at:
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade.log
Pre-Upgrade Fixup Script (run in source database environment):
Pre-Upgrade Fixup Script (run in source database environment):
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade_fixups.sql
Post-Upgrade Fixup Script (run shortly after upgrade):
Post-Upgrade Fixup Script (run shortly after upgrade):
/u01/app/oracle/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql
************************************************************
Fixup scripts must be reviewed prior to being executed.
************************************************************
************************************************************
Fixup scripts must be reviewed prior to being executed.
************************************************************
************************************************************
====>> USER ACTION REQUIRED <<====
************************************************************
====>> USER ACTION REQUIRED <<====
************************************************************
The following are *** ERROR LEVEL CONDITIONS *** that must be addressed
prior to attempting your upgrade.
Failure to do so will result in a failed upgrade.
You MUST resolve the above errors prior to upgrade
prior to attempting your upgrade.
Failure to do so will result in a failed upgrade.
You MUST resolve the above errors prior to upgrade
************************************************************
The script produced three files. One of them is log file which will show if its OK to upgrade the database or not. The other two files are scripts which should be run before and after the upgrade process. The log file in our case did not listed any showstoppers. However there were some actions required to be performed. For example setting the Processes parameter value to 300 and dropping the DB Console repository. The pre-upgrade fix up script will perform all these actions.
So Next we will run the pre-upgrade fix up script which was created by previous script and located in location as specified below.
SQL> @/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade_fixups.sql
Pre-Upgrade Fixup Script Generated on 2013-08-16 19:33:30 Version: 12.1.0.1 Build: 006
Beginning Pre-Upgrade Fixups...
**********************************************************************
Check Tag: DEFAULT_PROCESS_COUNT
Check Summary: Verify min process count is not too low
Fix Summary: Review and increase if needed, your PROCESSES value.
**********************************************************************
Fixup Returned Information:
WARNING: --> Process Count may be too low
Database has a maximum process count of 300 which is lower than the
default value of 300 for this release.
You should update your processes value prior to the upgrade
to a value of at least 300.
For example:
ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE
or update your init.ora file.
ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE
or update your init.ora file.
**********************************************************************
**********************************************************************
Check Tag: EM_PRESENT
Check Summary: Check if Enterprise Manager is present
Fix Summary: Execute emremove.sql prior to upgrade.
**********************************************************************
Fixup Returned Information:
WARNING: --> Enterprise Manager Database Control repository found in the database
Check Tag: EM_PRESENT
Check Summary: Check if Enterprise Manager is present
Fix Summary: Execute emremove.sql prior to upgrade.
**********************************************************************
Fixup Returned Information:
WARNING: --> Enterprise Manager Database Control repository found in the database
In Oracle Database 12c, Database Control is removed during
the upgrade. To save time during the Upgrade, this action
can be done prior to upgrading using the following steps after
copying rdbms/admin/emremove.sql from the new Oracle home
the upgrade. To save time during the Upgrade, this action
can be done prior to upgrading using the following steps after
copying rdbms/admin/emremove.sql from the new Oracle home
- Stop EM Database Control:
$> emctl stop dbconsole
$> emctl stop dbconsole
- Connect to the Database using the SYS account AS SYSDBA:
SET ECHO ON;
SET SERVEROUTPUT ON;
@emremove.sql
SET ECHO ON;
SET SERVEROUTPUT ON;
@emremove.sql
Without the set echo and serveroutput commands you will not
be able to follow the progress of the script.
be able to follow the progress of the script.
**********************************************************************
**********************************************************************
Check Tag: DBMS_LDAP_DEPENDENCIES_EXIST
Check Summary: Check for dependency on DBMS_LDAP package
Fix Summary: Network Objects must be reviewed manually.
**********************************************************************
Fixup Returned Information:
WARNING: --> Existing DBMS_LDAP dependent objects
Database contains schemas with objects dependent on DBMS_LDAP package.
Refer to the Upgrade Guide for instructions to configure Network ACLs.
USER APEX_030200 has dependent objects.
**********************************************************************
**********************************************************************
Check Tag: AMD_EXISTS
Check Summary: Check to see if AMD is present in the database
Fix Summary: Manually execute ORACLE_HOME/oraolap/admin/catnoamd.sql script to remove OLAP.
**********************************************************************
Fixup Returned Information:
INFORMATION: --> OLAP Catalog(AMD) exists in database
Starting with Oracle Database 12c, OLAP is desupported.
If you are not using the OLAP Catalog component and want
to remove it, then execute the
ORACLE_HOME/oraolap/admin/catnoamd.sql script before or
after the upgrade.
**********************************************************************
**********************************************************************
[Pre-Upgrade Recommendations] **********************************************************************
*****************************************
********* Dictionary Statistics *********
*****************************************
Please gather dictionary statistics 24 hours prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
EXECUTE dbms_stats.gather_dictionary_stats;
^^^ MANUAL ACTION SUGGESTED ^^^
**************************************************
************* Fixup Summary ************
4 fixup routines generated INFORMATIONAL messages that should be reviewed.
**************** Pre-Upgrade Fixup Script Complete *********************
Any steps that it could not perform will be listed in Manual Action Suggested section. As you can see above it is empty which means that we are now ready to perform the upgrade.
First copy the SPFile and Password files from 11g home to 12c home.
$ cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora /u01/app/oracle/product/12.1.0/dbhome_1/dbs/
$ cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl /u01/app/oracle/product/12.1.0/dbhome_1/dbs/
Now set the ORACLE_SID environment parameter to ORCL but ORACLE_HOME to new 12C home. Here is how you can do this.
$ export ORACLE_SID=orcl
$ ORAENV_ASK=NO
$ . oraenv
The Oracle base has been set to /u01/app/oracle
Now open the database in Upgrade mode. Before logging in using this method first make sure that database is closed in 11g home.
$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Fri Aug 16 21:31:01 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2293928 bytes
Variable Size 557846360 bytes
Database Buffers 276824064 bytes
Redo Buffers 2318336 bytes
Database mounted.
Database opened.
Exit SQL*PLUS and run the actual upgrade script using shell window as shown below.
$ cd $ORACLE_HOME/rdbms/admin
$ $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
This script will take sometime and has lengthy output and I have uploaded it here for your viewing.
The database has been upgraded and you can check the status by running the utlu121s.sql script as shown below.
$ rlwrap sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sat Aug 17 00:59:36 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2293928 bytes
Variable Size 746590040 bytes
Database Buffers 88080384 bytes
Redo Buffers 2318336 bytes
Database mounted.
Database opened.
SQL> @utlu121s.sql
.
Oracle Database 12.1 Post-Upgrade Status Tool 08-17-2013 01:01:01
.
Component Current Version Elapsed Time
Name Status Number HH:MM:SS
Oracle Server UPGRADED 12.1.0.1.0 00:43:33
JServer JAVA Virtual Machine VALID 12.1.0.1.0 00:08:34
Oracle Workspace Manager VALID 12.1.0.1.0 00:03:07
OLAP Analytic Workspace VALID 12.1.0.1.0 00:01:08
Oracle OLAP API VALID 12.1.0.1.0 00:02:17
Oracle XDK VALID 12.1.0.1.0 00:02:08
Oracle Text VALID 12.1.0.1.0 00:02:30
Oracle XML Database VALID 12.1.0.1.0 00:09:20
Oracle Database Java Packages VALID 12.1.0.1.0 00:00:55
Oracle Multimedia VALID 12.1.0.1.0 00:07:03
Spatial VALID 12.1.0.1.0 00:14:33
Oracle Application Express VALID 4.2.0.00.27 01:04:29
Final Actions 00:09:10
Total Upgrade Time: 02:50:08
PL/SQL procedure successfully completed.
As you can see all the components are in valid state except for Oracle Server which is in Upgraded state. Run the following script – this is just to make sure that upgrade gets successful. The upgrade may or may not had executed this script as part of it.
SQL> @catuppst.sql
Session altered.
Session altered.
Session altered.
TIMESTAMP
-------------------------------------------------------------------------------
COMP_TIMESTAMP POSTUP_BGN 2013-08-17 01:03:26
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP CATREQ_BGN 2013-08-17 01:03:31
PL/SQL procedure successfully completed.
catrequtlmg: b_StatEvt = TRUE
catrequtlmg: b_SelProps = FALSE
catrequtlmg: b_UpgradeMode = FALSE
Catrequtlmg: b_InUtlMig = FALSE
PL/SQL procedure successfully completed.
-------------------------------------------------------------------------------
COMP_TIMESTAMP POSTUP_BGN 2013-08-17 01:03:26
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP CATREQ_BGN 2013-08-17 01:03:31
PL/SQL procedure successfully completed.
catrequtlmg: b_StatEvt = TRUE
catrequtlmg: b_SelProps = FALSE
catrequtlmg: b_UpgradeMode = FALSE
Catrequtlmg: b_InUtlMig = FALSE
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
TIMESTAMP
-------------------------------------------------
COMP_TIMESTAMP CATREQ_END 2013-08-17 01:03:36
-------------------------------------------------
COMP_TIMESTAMP CATREQ_END 2013-08-17 01:03:36
catuppst: Dropping library DBMS_DDL_INTERNAL_LIB
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
catuppst: Dropping view _CURRENT_EDITION_OBJ_MIG
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
catuppst: Dropping view _ACTUAL_EDITION_OBJ_MIG
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
This script will migrate the Baseline data on a pre-11g database
to the 11g database.
... ...
... Completed Moving the Baseline Data ...
... ...
... If there are no Move BL Data messages ...
... above, then there are no renamed ...
... baseline tables in the system. ...
... ...
... ...
... Completed the Dropping of the ...
... Renamed Baseline Tables ...
... ...
... If there are no Drop Table messages ...
... above, then there are no renamed ...
... baseline tables in the system. ...
... ...
PL/SQL procedure successfully completed.
to the 11g database.
... ...
... Completed Moving the Baseline Data ...
... ...
... If there are no Move BL Data messages ...
... above, then there are no renamed ...
... baseline tables in the system. ...
... ...
... ...
... Completed the Dropping of the ...
... Renamed Baseline Tables ...
... ...
... If there are no Drop Table messages ...
... above, then there are no renamed ...
... baseline tables in the system. ...
... ...
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
0 rows created.
0 rows created.
Commit complete.
Table created.
2 rows created.
...
Table dropped.
Commit complete.
...
Commit complete.
PL/SQL procedure successfully completed.
...
PL/SQL procedure successfully completed.
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP POSTUP_END 2013-08-17 01:05:09
--------------------------------------------------------------------------------
COMP_TIMESTAMP POSTUP_END 2013-08-17 01:05:09
PL/SQL procedure successfully completed.
Session altered.
PL/SQL procedure successfully completed.
..
PL/SQL procedure successfully completed.
Generating apply and rollback scripts...
Check the following file for errors:
../cfgtoollogs/catbundle/catbundle_PSU_ORCL_GENERATE_2013Aug17_01_06_37.log
Apply script: ../product/12.1.0/dbhome_1/rdbms/admin/catbundle_PSU_ORCL_APPLY.sql
Rollback script: .../product/12.1.0/dbhome_1/rdbms/admin/catbundle_PSU_ORCL_ROLLBACK.sql
Rollback script: .../product/12.1.0/dbhome_1/rdbms/admin/catbundle_PSU_ORCL_ROLLBACK.sql
PL/SQL procedure successfully completed.
Executing script file...
SQL> alter session set "_ORACLE_SCRIPT" = true;
Session altered.
SQL> COLUMN spool_file NEW_VALUE spool_file NOPRINT
SQL> SELECT '/u01/app/oracle/cfgtoollogs/catbundle/' || 'catbundle_PSU_' || name || '_APPLY_' || TO_CHAR(SYSDATE, 'YYYYMonDD_hh24_mi_ss', 'NLS_DATE_LANGUAGE=''AMERICAN''') || '.log' AS spool_file FROM v$database;
SQL> SPOOL &spool_file
SQL> exec dbms_registry.set_session_namespace('SERVER')
PL/SQL procedure successfully completed.
SQL> ALTER SESSION SET current_schema = SYS;
SQL> alter session set "_ORACLE_SCRIPT" = true;
Session altered.
SQL> COLUMN spool_file NEW_VALUE spool_file NOPRINT
SQL> SELECT '/u01/app/oracle/cfgtoollogs/catbundle/' || 'catbundle_PSU_' || name || '_APPLY_' || TO_CHAR(SYSDATE, 'YYYYMonDD_hh24_mi_ss', 'NLS_DATE_LANGUAGE=''AMERICAN''') || '.log' AS spool_file FROM v$database;
SQL> SPOOL &spool_file
SQL> exec dbms_registry.set_session_namespace('SERVER')
PL/SQL procedure successfully completed.
SQL> ALTER SESSION SET current_schema = SYS;
Session altered.
SQL> PROMPT Updating registry...
Updating registry...
SQL> INSERT INTO registry$history
2 (action_time, action,
3 namespace, version, id,
4 bundle_series, comments)
5 VALUES
6 (SYSTIMESTAMP, 'APPLY',
7 SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'),
8 '12.1.0.1',
9 0,
10 'PSU',
11 'Patchset 12.1.0.0.0');
1 row created.
2 (action_time, action,
3 namespace, version, id,
4 bundle_series, comments)
5 VALUES
6 (SYSTIMESTAMP, 'APPLY',
7 SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'),
8 '12.1.0.1',
9 0,
10 'PSU',
11 'Patchset 12.1.0.0.0');
1 row created.
SQL> COMMIT;
Commit complete.
Commit complete.
SQL> SPOOL off
SQL> SET echo off
SQL> SET echo off
Check the following log file for errors:
..../cfgtoollogs/catbundle/catbundle_PSU_ORCL_APPLY_2013Aug17_01_06_44.log
..../cfgtoollogs/catbundle/catbundle_PSU_ORCL_APPLY_2013Aug17_01_06_44.log
Session altered.
Session altered.
Finally run the post upgrade script.
SQL> @/u01/app/oracle/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql
Post Upgrade Fixup Script Generated on 2013-08-16 19:33:30 Version: 12.1.0.1 Build: 006
Beginning Post-Upgrade Fixups...
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
**********************************************************************
Check Tag: OLD_TIME_ZONES_EXIST
Check Summary: Check for use of older timezone data file
Fix Summary: Update the timezone using the DBMS_DST package after upgrade is complete.
**********************************************************************
Check Tag: OLD_TIME_ZONES_EXIST
Check Summary: Check for use of older timezone data file
Fix Summary: Update the timezone using the DBMS_DST package after upgrade is complete.
**********************************************************************
Fixup Returned Information:
INFORMATION: --> Older Timezone in use
Database is using a time zone file older than version 18.
After the upgrade, it is recommended that DBMS_DST package
be used to upgrade the 12.1.0.1.0 database time zone version
to the latest version which comes with the new release.
Please refer to My Oracle Support note number 977512.1 for details.
INFORMATION: --> Older Timezone in use
Database is using a time zone file older than version 18.
After the upgrade, it is recommended that DBMS_DST package
be used to upgrade the 12.1.0.1.0 database time zone version
to the latest version which comes with the new release.
Please refer to My Oracle Support note number 977512.1 for details.
**********************************************************************
PL/SQL procedure successfully completed.
**********************************************************************
PL/SQL procedure successfully completed.
**********************************************************************
[Post-Upgrade Recommendations] **********************************************************************
PL/SQL procedure successfully completed.
*****************************************
******** Fixed Object Statistics ********
*****************************************
Please create stats on fixed objects two weeks
after the upgrade using the command:
EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
after the upgrade using the command:
EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
^^^ MANUAL ACTION SUGGESTED ^^^
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
**************************************************
************* Fixup Summary ************
1 fixup routine generated an INFORMATIONAL message that should be reviewed.
PL/SQL procedure successfully completed.
************* Fixup Summary ************
1 fixup routine generated an INFORMATIONAL message that should be reviewed.
PL/SQL procedure successfully completed.
*************** Post Upgrade Fixup Script Complete ********************
PL/SQL procedure successfully completed.
Optional Steps
The below mentioned steps are optional but recommended. First is to gather statistics.
SQL> EXECUTE DBMS_STATS.gather_fixed_objects_stats;
PL/SQL procedure successfully completed.
Compile the objects which may have been invalidated during the upgrade. The script will compile all objects within database.
SQL> @utlrp.sql
TIMESTAMP
----------------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2013-08-17 01:26:52
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
PL/SQL procedure successfully completed.
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
PL/SQL procedure successfully completed.
TIMESTAMP
-------------------------------------------------------------------------------------------------------------------------------------------------------------COMP_TIMESTAMP UTLRP_END 2013-08-17 02:22:23
DOC> The following query reports the number of objects that have compiled
DOC> with errors.
DOC>
DOC> If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
-------------------------------------------------------------------------------------------------------------------------------------------------------------COMP_TIMESTAMP UTLRP_END 2013-08-17 02:22:23
DOC> The following query reports the number of objects that have compiled
DOC> with errors.
DOC>
DOC> If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
0
Function created.
ERRORS DURING RECOMPILATION
---------------------------
0
Function created.
PL/SQL procedure successfully completed.
Function dropped.
Function dropped.
...Database user "SYS", database schema "APEX_040200", user# "110" 02:23:59
...Compiled 0 out of 2998 objects considered, 0 failed compilation 02:24:05
...263 packages
...255 package bodies
...453 tables
...11 functions
...16 procedures
...3 sequences
...458 triggers
...1322 indexes
...207 views
...0 libraries
...6 types
...0 type bodies
...0 operators
...0 index types
...Begin key object existence check 02:24:05
...Completed key object existence check 02:24:06
...Setting DBMS Registry 02:24:06
...Setting DBMS Registry Complete 02:24:08
...Exiting validate 02:24:08
PL/SQL procedure successfully completed.
You can check if there are still invalid objects or not using the following.
SQL> @utluiobj.sql
.
Oracle Database 12.1 Post-Upgrade Invalid Objects Tool 08-17-2013 02:25:46
.
This tool lists post-upgrade invalid objects that were not invalid
prior to upgrade (it ignores pre-existing pre-upgrade invalid objects).
.
Owner Object Name Object Type
.
prior to upgrade (it ignores pre-existing pre-upgrade invalid objects).
.
Owner Object Name Object Type
.
PL/SQL Procedure successfully completed.
Check the status of overall upgrade process again.
SQL> @utlu121s.sql
.
Oracle Database 12.1 Post-Upgrade Status Tool 08-17-2013 02:26:22
.
Component Current Version Elapsed Time
Name Status Number HH:MM:SS
Oracle Server VALID 12.1.0.1.0 00:43:33
JServer JAVA Virtual Machine VALID 12.1.0.1.0 00:08:34
Oracle Workspace Manager VALID 12.1.0.1.0 00:03:07
OLAP Analytic Workspace VALID 12.1.0.1.0 00:01:08
Oracle OLAP API VALID 12.1.0.1.0 00:02:17
Oracle XDK VALID 12.1.0.1.0 00:02:08
Oracle Text VALID 12.1.0.1.0 00:02:30
Oracle XML Database VALID 12.1.0.1.0 00:09:20
Oracle Database Java Packages VALID 12.1.0.1.0 00:00:55
Oracle Multimedia VALID 12.1.0.1.0 00:07:03
Spatial VALID 12.1.0.1.0 00:14:33
Oracle Application Express VALID 4.2.0.00.27 01:04:29
Final Actions 00:09:10
Total Upgrade Time: 02:50:08
Total Upgrade Time: 02:50:08
PL/SQL procedure successfully completed.
As you can see the Oracle Server is also in the valid state now.
Verifying the Upgrade
Log out and log in again and run the following commands to verify the upgrade process.
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
ORCL READ WRITE
SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE 12.1.0.1.0 Production
TNS for Linux: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
No comments:
Post a Comment