Minimal Downtime Cross Platform Migration and Database Upgrade This note describes the procedure used to perform a minimal downtime platform migration from Windows to Linux as well as a database upgrade from Oracle 11.2.0.4 to Oracle 12c (12.1.0.2). We create a Data Guard physical standby database using the DUPLICATE FROM ACTIVE DATABASE feature, followed by a switchover and then we activate the standby and make it a primary database. Finally we upgrade the database to 12c using the catctl.pl perl utility with the parallel upgrade option. By using Data Guard and the 12c command line parallel upgrade utility the entire operation has been performed with database outage of less than 30 minutes. This example uses a Data Guard MAXIMUM PERFORMANCE configuration, but in a production environment it is recommended to use a MAXIMUM AVAILABILITY configuration which will require the SYNC Redo Log transport attributes and creation of standby redo log files as well. This is the environment Site A : Windows 64 bit Oracle database 11.2.0.4 (testdb) Site B: OEL 6.3 Oracle database 12.1.0.2 (testdb12) Site A: This is the database file layout on Windows SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- F:\ORADATA\TESTDB\SYSTEM01.DBF F:\ORADATA\TESTDB\SYSAUX01.DBF F:\ORADATA\TESTDB\UNDOTBS01.DBF F:\ORADATA\TESTDB\USERS01.DBF F:\ORADATA\TESTDB\EXAMPLE01.DBF On Site B these will be the location for the data files /u01/app/oracle/oradata/testdb12 /u02/app/oracle/oradata/testdb12 Site A: This is the location of the redo log files SQL> select member from v$logfile; MEMBER ------------------------------------------------------------------------------G:\ORADATA\TESTDB\REDO01.LOG G:\ORADATA\TESTDB\REDO02.LOG G:\ORADATA\TESTDB\REDO03.LOG Site B: This will be the location for the redo log files /u01/app/oracle/oradata/testdb12/ PART 1 - Data Guard Configuration Site B: Add a static entry in the listener.ora (SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = testdb12) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = testdb12) ) ) Site B: Reload the listener [oracle@LINT0003 admin]$ lsnrctl reload LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 19-JAN-2015 09:27:18 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LINT0003.apac.ent.net)(PORT=1521))) The command completed successfully Site B: Add entry to the /etc/oratab file for the testdb12 database Site B : Create the password file – use the same SYS password as the source database [oracle@LINT0003 admin]$ . oraenv ORACLE_SID = [testdb] ? testdb12 The Oracle base remains unchanged with value /u01/app/oracle [oracle@LINT0003 admin]$ cd $ORACLE_HOME [oracle@LINT0003 dbhome_1]$ pwd /u01/app/oracle/product/11.2.0/dbhome_1 [oracle@LINT0003 dbhome_1]$ cd dbs [oracle@LINT0003 dbs]$ orapwd file=orapwtestdb12 password=Oracle#123 Copy init.ora from Windows (Site A) to Linux (Site B) and make changes as appropriate Create the required directories on Site B for the data files, control files, redo log files , archive log files, diagnostic destination, audit file destination etc The following changes to the init.ora were made on Site B in this case *.audit_file_dest='/u01/app/oracle/admin/testdb12/adump' *.control_files='/u01/app/oracle/oradata/testdb12/control01.ctl','/u01/app/oracle/oradata/testdb12/control02.ctl' *.db_unique_name='testdb12' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.diagnostic_dest='/u01/app/oracle' *.log_file_name_convert='G:\ORADATA\TESTDB\','/u01/app/oracle/oradata/testdb12/' *.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=testdb12' *.fal_server='testdb' *.fal_client='testdb12' On both Site A and Site B add the following entries to the tnsnames.ora file TESTDB12 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = LINT0003.apac.ent.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = testdb12) ) ) TESTDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = CSMSDC-ORAD01.apac.ent.bhpbilliton.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = testdb) ) ) Site B: Start the instance in NOMOUNT state [oracle@LINT0003 dbs]$ sqlplus sys as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 19 10:00:02 2015 Copyright (c) 1982, 2013, Oracle. Enter password: All rights reserved. Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 671089544 bytes Database Buffers 390070272 bytes Redo Buffers 5517312 bytes Site A: Connect via RMAN to target and auxiliary destination C:\Users\soorg9>rman target sys/Oracle#123 auxiliary sys/Oracle#123@testdb12 Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jan 19 10:03:20 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: TESTDB (DBID=2652718402) connected to auxiliary database: TESTDB (not mounted) This is the RMAN command we will run run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate auxiliary channel c3 type disk; SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/testdb12/SYSTEM01.DBF'; SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/testdb12/SYSAUX01.DBF'; SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/testdb12/UNDOTBS01.DBF'; SET NEWNAME FOR DATAFILE 4 TO '/u02/app/oracle/oradata/testdb12/USERS01.DBF'; SET NEWNAME FOR DATAFILE 5 TO '/u02/app/oracle/oradata/testdb12/EXAMPLE01.DBF'; SET NEWNAME FOR TEMPFILE 1 TO '/u02/app/oracle/oradata/testdb12/TEMP01.DBF'; DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER; } RMAN> run{ 2> allocate channel c1 type disk; 3> allocate channel c2 type disk; 4> allocate auxiliary channel c3 type disk; 5> SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/testdb12/SYSTEM01.DBF' ; 6> SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/testdb12/SYSAUX01.DBF' ; 7> SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/testdb12/UNDOTBS01.DBF '; 8> SET NEWNAME FOR DATAFILE 4 TO '/u02/app/oracle/oradata/testdb12/USERS01.DBF'; 9> SET NEWNAME FOR DATAFILE 5 TO '/u02/app/oracle/oradata/testdb12/EXAMPLE01.DBF '; 10> SET NEWNAME FOR TEMPFILE 1 TO '/u02/app/oracle/oradata/testdb12/TEMP01.DBF'; 11> 12> 13> 14> 15> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER; } using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=3 device type=DISK allocated channel: c2 channel c2: SID=19 device type=DISK allocated channel: c3 channel c3: SID=129 device type=DISK executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting Duplicate Db at 19-JAN-15 contents of Memory Script: { backup as copy reuse targetfile 'J:\oracle\product\11.2.0.4\dbhome_1\DATABASE\PWDtestdb.ORA' auxi liary format '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwtestdb12' ; } executing Memory Script Starting backup at 19-JAN-15 Finished backup at 19-JAN-15 contents of Memory Script: { backup as copy current controlfile for standby auxiliary format acle/oradata/testdb12/control01.ctl'; } executing Memory Script '/u01/app/or Starting backup at 19-JAN-15 channel c1: starting datafile copy copying standby control file output file name=J:\ORACLE\PRODUCT\11.2.0.4\DBHOME_1\DATABASE\SNCFTESTDB.ORA tag =TAG20150119T105153 RECID=7 STAMP=869395914 channel c1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 19-JAN-15 contents of Memory Script: { sql clone 'alter database mount standby database'; } executing Memory Script sql statement: alter database mount standby database contents of Memory Script: { set newname for tempfile 1 to "/u02/app/oracle/oradata/testdb12/TEMP01.DBF"; switch clone tempfile all; set newname for datafile 1 to "/u01/app/oracle/oradata/testdb12/SYSTEM01.DBF"; set newname for datafile 2 to "/u01/app/oracle/oradata/testdb12/SYSAUX01.DBF"; set newname for datafile 3 to "/u01/app/oracle/oradata/testdb12/UNDOTBS01.DBF"; set newname for datafile 4 to "/u02/app/oracle/oradata/testdb12/USERS01.DBF"; set newname for datafile 5 to "/u02/app/oracle/oradata/testdb12/EXAMPLE01.DBF"; backup as copy reuse datafile 1 auxiliary format "/u01/app/oracle/oradata/testdb12/SYSTEM01.DBF" datafile 2 auxiliary format "/u01/app/oracle/oradata/testdb12/SYSAUX01.DBF" datafile 3 auxiliary format "/u01/app/oracle/oradata/testdb12/UNDOTBS01.DBF" datafile 4 auxiliary format "/u01/app/oracle/oradata/testdb12/USERS01.DBF" datafile 5 auxiliary format "/u01/app/oracle/oradata/testdb12/EXAMPLE01.DBF" ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to /u01/app/oracle/oradata/testdb12/TEMP01.DBF in control fil e executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 19-JAN-15 channel c1: starting datafile copy input datafile file number=00001 name=F:\ORADATA\TESTDB\SYSTEM01.DBF channel c2: starting datafile copy input datafile file number=00002 name=F:\ORADATA\TESTDB\SYSAUX01.DBF output file name=/u01/app/oracle/oradata/testdb12/SYSTEM01.DBF tag=TAG20150119T1 05159 channel c1: datafile copy complete, elapsed time: 00:00:07 channel c1: starting datafile copy input datafile file number=00005 name=F:\ORADATA\TESTDB\EXAMPLE01.DBF output file name=/u01/app/oracle/oradata/testdb12/SYSAUX01.DBF tag=TAG20150119T1 05159 channel c2: datafile copy complete, elapsed time: 00:00:07 channel c2: starting datafile copy input datafile file number=00003 name=F:\ORADATA\TESTDB\UNDOTBS01.DBF output file name=/u02/app/oracle/oradata/testdb12/EXAMPLE01.DBF tag=TAG20150119T 105159 channel c1: datafile copy complete, elapsed time: 00:00:03 channel c1: starting datafile copy input datafile file number=00004 name=F:\ORADATA\TESTDB\USERS01.DBF output file name=/u01/app/oracle/oradata/testdb12/UNDOTBS01.DBF tag=TAG20150119T 105159 channel c2: datafile copy complete, elapsed time: 00:00:04 output file name=/u02/app/oracle/oradata/testdb12/USERS01.DBF tag=TAG20150119T10 5159 channel c1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 19-JAN-15 sql statement: alter system archive log current contents of Memory Script: { backup as copy reuse archivelog like "J:\ORACLE\FAST_RECOVERY_AREA\TESTDB\ARCHIVELOG\2015_01_19\O 1_MF_1_8_BCRWBWB3_.ARC" auxiliary format "/u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_01_19/o1_mf_1_8_%u _.arc" ; catalog clone recovery area; switch clone datafile all; } executing Memory Script Starting backup at 19-JAN-15 channel c1: starting archived log copy input archived log thread=1 sequence=8 RECID=3 STAMP=869395932 output file name=/u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_01_ 19/o1_mf_1_8_12pt3res_.arc RECID=0 STAMP=0 channel c1: archived log copy complete, elapsed time: 00:00:01 Finished backup at 19-JAN-15 searching for all files in the recovery area List of Files Unknown to the Database ===================================== File Name: /u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_01_19/o1_ mf_1_8_12pt3res_.arc cataloging files... cataloging done List of Cataloged Files ======================= File Name: /u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_01_19/o1_ mf_1_8_12pt3res_.arc datafile 1 switched to datafile copy input datafile copy RECID=7 STAMP=869395871 file name=/u01/app/oracle/oradata/te stdb12/SYSTEM01.DBF datafile 2 switched to datafile copy input datafile copy RECID=8 STAMP=869395871 file name=/u01/app/oracle/oradata/te stdb12/SYSAUX01.DBF datafile 3 switched to datafile copy input datafile copy RECID=9 STAMP=869395871 file name=/u01/app/oracle/oradata/te stdb12/UNDOTBS01.DBF datafile 4 switched to datafile copy input datafile copy RECID=10 STAMP=869395871 file name=/u02/app/oracle/oradata/t estdb12/USERS01.DBF datafile 5 switched to datafile copy input datafile copy RECID=11 STAMP=869395871 file name=/u02/app/oracle/oradata/t estdb12/EXAMPLE01.DBF contents of Memory Script: { set until scn 972136; recover standby clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 19-JAN-15 starting media recovery archived log for thread 1 with sequence 8 is already on disk as file /u01/app/or acle/fast_recovery_area/TESTDB12/archivelog/2015_01_19/o1_mf_1_8_12pt3res_.arc archived log file name=/u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/20 15_01_19/o1_mf_1_8_12pt3res_.arc thread=1 sequence=8 media recovery complete, elapsed time: 00:00:00 Finished recover at 19-JAN-15 Finished Duplicate Db at 19-JAN-15 released channel: c1 released channel: c2 released channel: c3 RMAN> Site B : Note the database role and the mount state of the database [oracle@LINT0003 testdb12]$ sqlplus sys as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 19 10:53:54 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select open_mode,database_role from v$database; OPEN_MODE DATABASE_ROLE -------------------- ---------------MOUNTED PHYSICAL STANDBY Site A: Add the parameter for Redo Transport SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=testdb12 scope=both; VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdb12' System altered. SQL> select destination,status,error from v$archive_dest_status where rownum <3; DESTINATION -------------------------------------------------------------------------------STATUS ERROR --------- ----------------------------------------------------------------J:\oracle\product\11.2.0.4\dbhome_1\RDBMS VALID testdb12 VALID Site A: Simulate some changes on the Primary database. SQL> conn system/Oracle#123 Connected. SQL> create table myobjects 2 tablespace users 3 as select * from dba_objects; Table created. SQL> conn / as sysdba Connected. SQL> alter system switch logfile; System altered. Site B: Open the standby database and start the managed recovery SQL> alter database open; Database altered. SQL> recover managed standby database disconnect from session; Media recovery complete. SQL> select count(*) from system.myobjects; COUNT(*) ---------86736 SQL> !ps -ef |grep mrp oracle 6360 1 0 10:59 ? oracle 6436 5425 0 10:59 pts/0 00:00:00 ora_mrp0_testdb12 00:00:00 /bin/bash -c ps -ef |grep mrp SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#,BLOCK#, BLOCKS FROM V$MANAGED_STANDBY; PROCESS --------ARCH ARCH ARCH ARCH RFS RFS RFS MRP0 STATUS THREAD# SEQUENCE# BLOCK# BLOCKS ------------ ---------- ---------- ---------- ---------CONNECTED 0 0 0 0 CONNECTED 0 0 0 0 CONNECTED 0 0 0 0 CONNECTED 0 0 0 0 IDLE 0 0 0 0 IDLE 1 12 2863 1 IDLE 0 0 0 0 WAIT_FOR_LOG 1 12 0 0 SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS; MESSAGE -------------------------------------------------------------------------------ARC0: Archival started ARC1: Archival started ARC2: Archival started ARC1: Becoming the 'no FAL' ARCH ARC2: Becoming the heartbeat ARCH ARC2: Becoming the active heartbeat ARCH ARC3: Archival started Error 12154 received logging on to the standby FAL[client, ARC0]: Error 12154 connecting to testdb for fetching gap sequence Managed Standby Recovery not using Real Time Apply Media Recovery Complete MESSAGE -------------------------------------------------------------------------------RFS[1]: Assigned to RFS process 5906 Primary database is in MAXIMUM PERFORMANCE mode RFS[2]: Assigned to RFS process 5920 RFS[2]: No standby redo logfiles created RFS[3]: Assigned to RFS process 5922 Primary database is in MAXIMUM PERFORMANCE mode RFS[4]: Assigned to RFS process 6249 RFS[4]: No standby redo logfiles created Attempt to start background Managed Standby Recovery process MRP0: Background Managed Standby Recovery process started Managed Standby Recovery not using Real Time Apply MESSAGE -------------------------------------------------------------------------------Media Recovery Log /u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_0 1_19/o1_mf_1_9_bcrwlwfz_.arc Media Recovery Log /u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_0 1_19/o1_mf_1_10_bcrwly09_.arc Media Recovery Log /u01/app/oracle/fast_recovery_area/TESTDB12/archivelog/2015_0 1_19/o1_mf_1_11_bcrwlxxj_.arc Media Recovery Waiting for thread 1 sequence 12 (in transit) DATABASE/APPLICATION OUTAGE STARTS NOW!! Site B: Cancel managed recovery, activate the standby database and make it primary SQL> alter database recover managed standby database cancel; Database altered. SQL> alter database recover managed standby database finish; Database altered. SQL> alter database activate physical standby database; Database altered. SQL> select name, open_mode, database_role from v$database; NAME OPEN_MODE DATABASE_ROLE --------- -------------------- ---------------TESTDB MOUNTED PRIMARY SQL> alter database open; Database altered. SQL> select name, open_mode, database_role from v$database; NAME OPEN_MODE DATABASE_ROLE --------- -------------------- ---------------- TESTDB READ WRITE PRIMARY PART 2 – Oracle 12c Database Upgrade Note: All actions now performed on Site B…. Run the 12c preupgrd.sql script in the 11.2.0.4 environment [oracle@IOMDC-LINT0004 admin]$ sqlplus sys as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 21 08:12:16 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> @/u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/preupgrd.sql Loading Pre-Upgrade Package... *************************************************************************** Executing Pre-Upgrade Checks in TESTDB... *************************************************************************** ************************************************************ ====>> ERRORS FOUND for TESTDB<<==== 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. 1) Check Tag: PURGE_RECYCLEBIN Check Summary: Check that recycle bin is empty prior to upgrade Fixup Summary: "The recycle bin will be purged." You MUST resolve the above error prior to upgrade ************************************************************ ************************************************************ ====>> PRE-UPGRADE RESULTS for TESTDB <<==== ACTIONS REQUIRED: 1. Review results of the pre-upgrade checks: /u01/app/oracle/cfgtoollogs/testdb/preupgrade/preupgrade.log 2. Execute in the SOURCE environment BEFORE upgrade: /u01/app/oracle/cfgtoollogs/testdb/preupgrade/preupgrade_fixups.sql 3. Execute in the NEW environment AFTER upgrade: /u01/app/oracle/cfgtoollogs/testdb/preupgrade/postupgrade_fixups.sql ************************************************************ *************************************************************************** Pre-Upgrade Checks in TESTDB Completed. *************************************************************************** Review the preupgrade.log file [oracle@IOMDC-LINT0004 admin]$ cat /u01/app/oracle/cfgtoollogs/testdb/preupgrade/preupgrade.log Oracle Database Pre-Upgrade Information Tool 01-21-2015 08:12:41 Script Version: 12.1.0.2.0 Build: 006 ********************************************************************** Database Name: PDEV7 Container Name: Not Applicable in Pre-12.1 database Container ID: Not Applicable in Pre-12.1 database Version: 11.2.0.4.0 Compatible: 11.2.0.4.0 Blocksize: 8192 Platform: Linux x86 64-bit Timezone file: V1 ********************************************************************** [Update parameters] [No parameters to update] ********************************************************************** ********************************************************************** [Renamed Parameters] [No Renamed Parameters in use] ********************************************************************** ********************************************************************** [Obsolete/Deprecated Parameters] --> sec_case_sensitive_logon 12.1 DESUPPORTED [Changes required in Oracle Database init.ora or spfile] ********************************************************************** [Component List] ********************************************************************** --> Oracle Catalog Views [upgrade] VALID --> Oracle Packages and Types [upgrade] VALID --> JServer JAVA Virtual Machine [upgrade] VALID --> Oracle XDK for Java [upgrade] VALID --> Oracle Workspace Manager [upgrade] VALID --> Oracle Enterprise Manager Repository [upgrade] VALID --> Oracle XML Database [upgrade] VALID --> Oracle Java Packages [upgrade] VALID --> Expression Filter [upgrade] VALID --> Rule Manager [upgrade] VALID --> Oracle Application Express [upgrade] VALID ********************************************************************** [Tablespaces] ********************************************************************** --> SYSAUX tablespace is adequate for the upgrade. minimum required size: 29945 MB --> SYSTEM tablespace is adequate for the upgrade. minimum required size: 1539 MB --> TEMP tablespace is adequate for the upgrade. minimum required size: 60 MB --> UNDOTBS1 tablespace is adequate for the upgrade. minimum required size: 400 MB [No adjustments recommended] ********************************************************************** ********************************************************************** [Pre-Upgrade Checks] ********************************************************************** 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 - Stop EM Database Control: $> emctl stop dbconsole - Connect to the Database using the SYS account AS SYSDBA: 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. WARNING: --> Database contains INVALID objects prior to upgrade The list of invalid SYS/SYSTEM objects was written to registry$sys_inv_objs. The list of non-SYS/SYSTEM objects was written to registry$nonsys_inv_objs unless there were over 5000. Use utluiobj.sql after the upgrade to identify any new invalid objects due to the upgrade. 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 11.2.0.4.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. ERROR: --> RECYCLE_BIN not empty. Your recycle bin contains 98 object(s). It is REQUIRED that the recycle bin is empty prior to upgrading. Immediately before performing the upgrade, execute the following command: EXECUTE dbms_preup.purge_recyclebin_fixup; INFORMATION: --> Oracle Application Express (APEX) can be manually upgraded prior to database upgrade APEX is currently at version 4.2.1.00.08 and will need to be upgraded to APEX version 4.2.5 in the new release. Note 1: To reduce database upgrade time, APEX can be manually upgraded outside of and prior to database upgrade. Note 2: See MOS Note 1088970.1 for information on APEX installation upgrades. WARNING: --> RESOURCE_LIMIT default has changed to TRUE starting with 12.1.0.2 Resource limits defined for users via database profiles may not be currently enforced because RESOURCE_LIMIT init parameter in this 11.2.0.4.0 database is shown to be defaulted to FALSE. o RESOURCE_LIMIT in 12.1.0.1 release and earlier is FALSE by default but is TRUE starting with 12.1.0.2. o To continue having these resource limits disabled for users after database upgrade, set RESOURCE_LIMIT to FALSE. o For example, to change parameter file: update PFILE or use "ALTER SYSTEM SET RESOURCE_LIMIT=FALSE SCOPE=SPFILE". Note that the update will not take effect until next database startup. ********************************************************************** [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 ^^^ ********************************************************************** [Post-Upgrade Recommendations] ********************************************************************** ***************************************** ******** Fixed Object Statistics ******** ***************************************** Please create stats on fixed objects two weeks after the upgrade using the command: EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; ^^^ MANUAL ACTION SUGGESTED ^^^ ********************************************************************** ************ Summary ************ 1 ERROR exist that must be addressed prior to performing your upgrade. 3 WARNINGS that Oracle suggests are addressed to improve database performance. 2 INFORMATIONAL messages that should be reviewed prior to your upgrade. After your database is upgraded and open in normal mode you must run rdbms/admin/catuppst.sql which executes several required tasks and completes the upgrade process. You should follow that with the execution of rdbms/admin/utlrp.sql, and a comparison of invalid objects before and after the upgrade using rdbms/admin/utluiobj.sql If needed you may want to upgrade your timezone data using the process described in My Oracle Support note 1509653.1 *********************************** [oracle@IOMDC-LINT0004 admin]$ Execute the recommended pre-upgrade actions and shutdown the 11.2.0.4 database [oracle@IOMDC-LINT0004 admin]$ sqlplus sys as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 21 08:16:14 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> EXECUTE dbms_preup.purge_recyclebin_fixup; PL/SQL procedure successfully completed. SQL> EXECUTE dbms_stats.gather_dictionary_stats; PL/SQL procedure successfully completed. SQL> SET ECHO ON; SET SERVEROUTPUT ON; @emremove.sql SQL> SQL> SQL> Rem SQL> Rem $Header: rdbms/admin/emremove.sql /main/2 2012/07/27 01:19:53 spramani Exp $ SQL> Rem SQL> Rem emremove.sql SQL> Rem SQL> Rem Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. SQL> Rem SQL> Rem NAME SQL> Rem emremove.sql - This script removes EM Schema from RDBMS …. …. Dropping synonym : SMP_EMD_STRING_ARRAY_ARRAY ... Dropping synonym : SMP_EMD_TARGET_OBJ ... Dropping synonym : SMP_EMD_TARGET_OBJ_ARRAY ... Finished phase 5 Starting phase 6 : Dropping Oracle Enterprise Manager related other roles ... Finished phase 6 The Oracle Enterprise Manager related schemas and objects are dropped. Do the manual steps to studown the DB Control if not done before running this script and then delete the DB Control configuration files PL/SQL procedure successfully completed. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. Copy the password file and init.ora to the Oracle 12c environment location [oracle@LINT0003 dbs]$ cp inittestdb12.ora /u01/app/oracle/product/12.1.0/dbhome_1/dbs [oracle@LINT0003 dbs]$ cp orapwtestdb12 /u01/app/oracle/product/12.1.0/dbhome_1/dbs Edit the oratab file and enter the Oracle 12c home location Set the Oracle 12c environment and open the database in UPGRADE mode [oracle@LINT0003 admin]$ sqlplus sys as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Mon Jan 19 11:16:58 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Enter password: Connected to an idle instance. SQL> startup upgrade; ORACLE instance started. Total System Global Area 1073741824 bytes Fixed Size 2932632 bytes Variable Size 679477352 bytes Database Buffers 385875968 bytes Redo Buffers 5455872 bytes Database mounted. Database opened. Run the catctl.pl to upgrade the database to 12.1.0.2 using the command line method with the parallel upgrade option [oracle@IOMDC-LINT0004 admin]$ $ORACLE_HOME/perl/bin/perl catctl.pl -n 4 -l /tmp catupgrd.sql Argument list for [catctl.pl] SQL Process Count n = 4 SQL PDB Process Count N = 0 Input Directory d = 0 Phase Logging Table t = 0 Log Dir l = /tmp Script s = 0 Serial Run S = 0 Upgrade Mode active M = 0 Start Phase p = 0 End Phase P = 0 Log Id i = 0 Run in c = 0 Do not run in Echo OFF No Post Upgrade Reverse Order Open Mode Normal Debug catcon.pm Debug catctl.pl Display Phases Child Process C e x r o z Z y I = = = = = = = = = 0 1 0 0 0 0 0 0 0 catctl.pl version: 12.1.0.2.0 Oracle Base = /u01/app/oracle Analyzing file catupgrd.sql Log files in /tmp catcon: ALL catcon-related output will be written to /tmp/catupgrd_catcon_22992.lst catcon: See /tmp/catupgrd*.log files for output generated by scripts catcon: See /tmp/catupgrd_*.lst files for spool files, if any Number of Cpus = 4 SQL Process Count = 4 -----------------------------------------------------Phases [0-73] Serial Phase #: 0 Files: 1 Time: 398s Serial Phase #: 1 Files: 5 Time: 32s Restart Phase #: 2 Files: 1 Time: 1s Parallel Phase #: 3 Files: 18 Time: 5s Restart Phase #: 4 Files: 1 Time: 0s Serial Phase #: 5 Files: 5 Time: 16s Serial Phase #: 6 Files: 1 Time: 9s Serial Phase #: 7 Files: 4 Time: 7s Restart Phase #: 8 Files: 1 Time: 0s Parallel Phase #: 9 Files: 62 Time: 17s Restart Phase #:10 Files: 1 Time: 1s Serial Phase #:11 Files: 1 Time: 11s Restart Phase #:12 Files: 1 Time: 0s Parallel Phase #:13 Files: 91 Time: 6s Restart Phase #:14 Files: 1 Time: 0s Parallel Phase #:15 Files: 111 Time: 9s Restart Phase #:16 Files: 1 Time: 0s Serial Phase #:17 Files: 3 Time: 1s Restart Phase #:18 Files: 1 Time: 0s Parallel Phase #:19 Files: 32 Time: 13s Restart Phase #:20 Files: 1 Time: 0s Serial Restart Parallel Restart Parallel Restart Serial Restart Serial Serial Serial Restart Serial Restart Restart Serial Restart Parallel Restart Parallel Restart Serial Restart Serial Serial Restart Serial Restart Serial Restart Serial Restart Serial Restart Serial Restart Serial Restart Serial Restart Serial Restart Serial Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase Phase #:21 #:22 #:23 #:24 #:25 #:26 #:27 #:28 #:30 #:31 #:32 #:33 #:34 #:35 #:36 #:37 #:38 #:39 #:40 #:41 #:42 #:43 #:44 #:45 #:46 #:47 #:48 #:49 #:50 #:51 #:52 #:53 #:54 #:55 #:56 #:57 #:58 #:59 #:60 #:61 #:62 #:63 #:64 Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: Files: 3 1 23 1 11 1 1 1 1 257 1 1 1 1 1 4 1 13 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: Time: 6s 0s 65s 0s 30s 0s 1s 0s 0s 19s 0s 0s 3s 0s 0s 41s 0s 44s 0s 5s 0s 4s 0s 10s 0s 0s 89s 0s 33s 0s 0s 0s 84s 0s 61s 0s 0s 0s 0s 0s 155s 0s 2s Serial Phase #:65 Files: 1 Calling sqlpatch with LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0/dbhome_1/lib; export LD_LIBRARY_PATH;/u01/app/oracle/product/12.1.0/dbhome_1/perl/bin/perl -I /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin -I /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/../../sqlpatch /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/../../sqlpatch/sqlpatch.pl -verbose -upgrade_mode_only > /tmp/catupgrd_datapatch_upgrade.log 2> /tmp/catupgrd_datapatch_upgrade.err returned from sqlpatch Time: 28s Serial Phase #:66 Files: 1 Time: 39s Serial Phase #:68 Files: 1 Time: 0s Serial Phase #:69 Files: 1 Calling sqlpatch with LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0/dbhome_1/lib; export LD_LIBRARY_PATH;/u01/app/oracle/product/12.1.0/dbhome_1/perl/bin/perl -I /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin -I /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/../../sqlpatch /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/../../sqlpatch/sqlpatch.pl -verbose > /tmp/catupgrd_datapatch_normal.log 2> /tmp/catupgrd_datapatch_normal.err returned from sqlpatch Time: 35s Serial Phase #:70 Files: 1 Time: 9s Serial Phase #:71 Files: 1 Time: 0s Serial Phase #:72 Files: 1 Time: 0s Serial Phase #:73 Files: 1 Time: 19s Grand Total Time: 1310s LOG FILES: (catupgrd*.log) Upgrade Summary Report Located in: /u01/app/oracle/product/12.1.0/dbhome_1/cfgtoollogs/testdb/upgrade/upg_summary.log Grand Total Upgrade Time: [0d:0h:21m:50s] [oracle@IOMDC-LINT0004 admin]$ Note the upgrade log files located in /tmp [oracle@IOMDC-LINT0004 tmp]$ ls -lrt -rw-r--r-- 1 oracle dba 358 Jan -rw-r--r-- 1 oracle dba 0 Jan -rw-r--r-- 1 oracle dba 396 Jan -rw-r--r-- 1 oracle dba 0 Jan -rw-r--r-- 1 oracle dba 396 Jan -rw-r--r-- 1 oracle dba 6298525 Jan -rw-r--r-- 1 oracle dba 5059334 Jan cat* 21 08:27 21 08:46 21 08:46 21 08:48 21 08:48 21 08:48 21 08:48 catupgrd_catcon_22992.lst catupgrd_datapatch_upgrade.err catupgrd_datapatch_upgrade.log catupgrd_datapatch_normal.err catupgrd_datapatch_normal.log catupgrd1.log catupgrd2.log -rw-r--r-- 1 oracle dba 5742452 Jan 21 08:48 catupgrd3.log -rw-r--r-- 1 oracle dba 45146507 Jan 21 08:49 catupgrd0.log Check the component upgrade status by reviewing the upgrade log files Oracle Database 12.1 Post-Upgrade Status Tool 01-21-2015 08:48:44 Component Name Current Status Version Number UPGRADED VALID VALID VALID VALID VALID VALID 12.1.0.2.0 12.1.0.2.0 12.1.0.2.0 12.1.0.2.0 12.1.0.2.0 12.1.0.2.0 4.2.5.00.08 Oracle Server JServer JAVA Virtual Machine Oracle Workspace Manager Oracle XDK Oracle XML Database Oracle Database Java Packages Oracle Application Express Final Actions Post Upgrade Elapsed Time HH:MM:SS 00:12:33 00:01:28 00:00:50 00:00:32 00:01:23 00:00:10 00:02:22 00:01:06 00:00:07 Total Upgrade Time: 00:20:50 PL/SQL procedure successfully completed. Elapsed: 00:00:00.08 Grand Total Upgrade Time: [0d:0h:21m:50s] Execute the following post-upgrade steps Compile invalid objects via utlrp.sql Run utluiobj.sql to identify any objects invalidated by the upgrade process Gather fixed object statistics via EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; Upgrade timezone data Change COMPATIBLE parameter to 12.1.0.2