Last week the 18c Linux on-premises software was released for download. So this weekend I installed it on my test server and gave it a whirl.
The software installs themselves went smoothly and then it was time to do an upgrade. Below I’ve capture the steps and output of an upgrade by unplug/plug from older release to newer release.
The Setup:
12cR2 CDB: sdscdb2
12cR2 PDB: sdspdb2
18c CDB: cdb181
Pre-upgrade steps
Use the preupgrade.jar to check current db status and create pre- and post- upgrade fix scripts.
Run the preupgrade_fixups.sql script
[oracle@sdsserver ~]$ . oraenv ORACLE_SID = [] ? sdscdb2 The Oracle base remains unchanged with value /u01/app/oracle [oracle@sdsserver ~]$ /u01/app/oracle/product/12.2.0/db_home1/jdk/bin/java -jar /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/preupgrade.jar dir /tmp -c sdspdb2 ================== PREUPGRADE SUMMARY ================== /tmp/preupgrade.log /tmp/preupgrade_fixups.sql /tmp/postupgrade_fixups.sql Execute fixup scripts across the entire CDB: Before upgrade: 1. Execute preupgrade fixups with the below command $ORACLE_HOME/perl/bin/perl -I$ORACLE_HOME/perl/lib -I$ORACLE_HOME/rdbms/admin $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp/ -b preup_sdscdb2 /tmp/preupgrade_fixups.sql 2. Review logs under /tmp/ After the upgrade: 1. Execute postupgrade fixups with the below command $ORACLE_HOME/perl/bin/perl -I$ORACLE_HOME/perl/lib -I$ORACLE_HOME/rdbms/admin $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp/ -b postup_sdscdb2 /tmp/postupgrade_fixups.sql 2. Review logs under /tmp/ Preupgrade complete: 2018-07-28T23:01:31
[oracle@sdsserver ~]$ $ORACLE_HOME/perl/bin/perl -I$ORACLE_HOME/perl/lib -I$ORACLE_HOME/rdbms/admin $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp/ -b preup_sdscdb2 /tmp/preupgrade_fixups.sql catcon: ALL catcon-related output will be written to [/tmp//preup_sdscdb2_catcon_30175.lst] catcon: See [/tmp//preup_sdscdb2*.log] files for output generated by scripts catcon: See [/tmp//preup_sdscdb2_*.lst] files for spool files, if any catcon.pl: completed successfully
Unplug from old release
Shutdown the pdb.
Unplug the pdb, creating an xml descriptor file.
Drop the pdb from the old container.
[oracle@sdsserver ~]$ sqlplus sys@sdscdb2 as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 28 23:26:59 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> alter pluggable database sdspdb2 close immediate; Pluggable database altered. SQL> alter pluggable database sdspdb2 unplug into '/tmp/sdspdb2.xml'; Pluggable database altered. SQL> drop pluggable database sdspdb2 keep datafiles; Pluggable database dropped. SQL> exit Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Plug into new release and open for upgrade
Use the xml descriptor to plug into new 18c cdb.
I used “nocopy” option, no need to move files around or copy them, so much faster.
Then open the pdb in upgrade mode
[oracle@sdsserver ~]$ . oraenv ORACLE_SID = [sdscdb2] ? cdb181 The Oracle base remains unchanged with value /u01/app/oracle [oracle@sdsserver ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 28 23:29:57 2018 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0 SQL> create pluggable database sdspdb2 using '/tmp/sdspdb2.xml' nocopy; Pluggable database created. SQL> alter session set container=sdspdb2; Session altered. SQL> alter pluggable database open upgrade; Pluggable database altered. SQL> exit Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0
Upgrade pdb
Run catupgrd.sql script to complete the transition.
[oracle@sdsserver ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catctl.pl -d $ORACLE_HOME/rdbms/admin -c 'sdspdb2' -l $ORACLE_BASE catupgrd.sql Argument list for [/u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catctl.pl] Run in c = sdspdb2 Do not run in C = 0 Input Directory d = /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin Echo OFF e = 1 Simulate E = 0 Forced cleanup F = 0 Log Id i = 0 Child Process I = 0 Log Dir l = /u01/app/oracle Priority List Name L = 0 Upgrade Mode active M = 0 SQL Process Count n = 0 SQL PDB Process Count N = 0 Open Mode Normal o = 0 Start Phase p = 0 End Phase P = 0 Reverse Order r = 0 AutoUpgrade Resume R = 0 Script s = 0 Serial Run S = 0 RO User Tablespaces T = 0 Display Phases y = 0 Debug catcon.pm z = 0 Debug catctl.pl Z = 0 catctl.pl VERSION: [18.0.0.0.0] STATUS: [Production] BUILD: [RDBMS_18.3.0.0.0DBRU_LINUX.X64_180627] /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/orahome = [/u01/app/oracle/product/18.0.0/dbhome_1] /u01/app/oracle/product/18.0.0/dbhome_1/bin/orabasehome = [/u01/app/oracle/product/18.0.0/dbhome_1] catctlGetOrabase = [/u01/app/oracle/product/18.0.0/dbhome_1] Analyzing file /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catupgrd.sql Log file directory = [/u01/app/oracle] catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/catupgrd_catcon_12454.lst] catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrd*.log] files for output generated by scripts catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrd_*.lst] files for spool files, if any Number of Cpus = 8 Database Name = cdb18_1 DataBase Version = 18.0.0.0.0 Parallel SQL Process Count (PDB) = 2 Parallel SQL Process Count (CDB$ROOT) = 8 Concurrent PDB Upgrades = 4 Generated PDB Inclusion:[SDSPDB2] CDB$ROOT Open Mode = [OPEN] Start processing of PDBs (SDSPDB2) [/u01/app/oracle/product/18.0.0/dbhome_1/perl/bin/perl /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catctl.pl -d /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin -c 'SDSPDB2' -l /u01/app/oracle -I -i sdspdb2 -n 2 catupgrd.sql] Argument list for [/u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catctl.pl] Run in c = SDSPDB2 Do not run in C = 0 Input Directory d = /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin Echo OFF e = 1 Simulate E = 0 Forced cleanup F = 0 Log Id i = sdspdb2 Child Process I = 1 Log Dir l = /u01/app/oracle Priority List Name L = 0 Upgrade Mode active M = 0 SQL Process Count n = 2 SQL PDB Process Count N = 0 Open Mode Normal o = 0 Start Phase p = 0 End Phase P = 0 Reverse Order r = 0 AutoUpgrade Resume R = 0 Script s = 0 Serial Run S = 0 RO User Tablespaces T = 0 Display Phases y = 0 Debug catcon.pm z = 0 Debug catctl.pl Z = 0 catctl.pl VERSION: [18.0.0.0.0] STATUS: [Production] BUILD: [RDBMS_18.3.0.0.0DBRU_LINUX.X64_180627] /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/orahome = [/u01/app/oracle/product/18.0.0/dbhome_1] /u01/app/oracle/product/18.0.0/dbhome_1/bin/orabasehome = [/u01/app/oracle/product/18.0.0/dbhome_1] catctlGetOrabase = [/u01/app/oracle/product/18.0.0/dbhome_1] Analyzing file /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catupgrd.sql Log file directory = [/u01/app/oracle] catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/catupgrdsdspdb2_catcon_12742.lst] catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrdsdspdb2*.log] files for output generated by scripts catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrdsdspdb2_*.lst] files for spool files, if any Number of Cpus = 8 Database Name = cdb18_1 DataBase Version = 18.0.0.0.0 Generated PDB Inclusion:[SDSPDB2] CDB$ROOT Open Mode = [OPEN] Components in [SDSPDB2] Installed [APEX APS CATALOG CATJAVA CATPROC CONTEXT DV JAVAVM OLS ORDIM OWM SDO XDB XML XOQ] Not Installed [EM MGW ODM RAC WK] ------------------------------------------------------ Phases [0-108] Start Time:[2018_07_29 00:25:33] Container Lists Inclusion:[SDSPDB2] Exclusion:[NONE] ------------------------------------------------------ *********** Executing Change Scripts *********** Serial Phase #:0 [SDSPDB2] Files:1 Time: 271s *************** Catalog Core SQL *************** Serial Phase #:1 [SDSPDB2] Files:5 Time: 1197s Restart Phase #:2 [SDSPDB2] Files:1 Time: 0s *********** Catalog Tables and Views *********** Parallel Phase #:3 [SDSPDB2] Files:19 Time: 484s Restart Phase #:4 [SDSPDB2] Files:1 Time: 0s ************* Catalog Final Scripts ************ Serial Phase #:5 [SDSPDB2] Files:7 Time: 509s ***************** Catproc Start **************** Serial Phase #:6 [SDSPDB2] Files:1 Time: 188s ***************** Catproc Types **************** Serial Phase #:7 [SDSPDB2] Files:2 Time: 198s Restart Phase #:8 [SDSPDB2] Files:1 Time: 0s **************** Catproc Tables **************** Parallel Phase #:9 [SDSPDB2] Files:66 Time: 507s Restart Phase #:10 [SDSPDB2] Files:1 Time: 0s ************* Catproc Package Specs ************ Serial Phase #:11 [SDSPDB2] Files:1 Time: 1110s Restart Phase #:12 [SDSPDB2] Files:1 Time: 0s ************** Catproc Procedures ************** Parallel Phase #:13 [SDSPDB2] Files:94 Time: 79s Restart Phase #:14 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:15 [SDSPDB2] Files:117 Time: 128s Restart Phase #:16 [SDSPDB2] Files:1 Time: 0s Serial Phase #:17 [SDSPDB2] Files:17 Time: 32s Restart Phase #:18 [SDSPDB2] Files:1 Time: 1s ***************** Catproc Views **************** Parallel Phase #:19 [SDSPDB2] Files:32 Time: 267s Restart Phase #:20 [SDSPDB2] Files:1 Time: 0s Serial Phase #:21 [SDSPDB2] Files:3 Time: 87s Restart Phase #:22 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:23 [SDSPDB2] Files:24 Time: 604s Restart Phase #:24 [SDSPDB2] Files:1 Time: 1s Parallel Phase #:25 [SDSPDB2] Files:12 Time: 314s Restart Phase #:26 [SDSPDB2] Files:1 Time: 0s Serial Phase #:27 [SDSPDB2] Files:1 Time: 0s Serial Phase #:28 [SDSPDB2] Files:3 Time: 39s Serial Phase #:29 [SDSPDB2] Files:1 Time: 0s Restart Phase #:30 [SDSPDB2] Files:1 Time: 1s *************** Catproc CDB Views ************** Serial Phase #:31 [SDSPDB2] Files:1 Time: 2s Restart Phase #:32 [SDSPDB2] Files:1 Time: 0s Serial Phase #:34 [SDSPDB2] Files:1 Time: 0s ***************** Catproc PLBs ***************** Serial Phase #:35 [SDSPDB2] Files:288 Time: 224s Serial Phase #:36 [SDSPDB2] Files:1 Time: 0s Restart Phase #:37 [SDSPDB2] Files:1 Time: 1s Serial Phase #:38 [SDSPDB2] Files:2 Time: 18s Restart Phase #:39 [SDSPDB2] Files:1 Time: 0s *************** Catproc DataPump *************** Serial Phase #:40 [SDSPDB2] Files:3 Time: 146s Restart Phase #:41 [SDSPDB2] Files:1 Time: 0s ****************** Catproc SQL ***************** Parallel Phase #:42 [SDSPDB2] Files:13 Time: 274s Restart Phase #:43 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:44 [SDSPDB2] Files:11 Time: 55s Restart Phase #:45 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:46 [SDSPDB2] Files:3 Time: 4s Restart Phase #:47 [SDSPDB2] Files:1 Time: 0s ************* Final Catproc scripts ************ Serial Phase #:48 [SDSPDB2] Files:1 Time: 125s Restart Phase #:49 [SDSPDB2] Files:1 Time: 1s ************** Final RDBMS scripts ************* Serial Phase #:50 [SDSPDB2] Files:1 Time: 8s ************ Upgrade Component Start *********** Serial Phase #:51 [SDSPDB2] Files:1 Time: 0s Restart Phase #:52 [SDSPDB2] Files:1 Time: 1s ********** Upgrading Java and non-Java ********* Serial Phase #:53 [SDSPDB2] Files:2 Time: 1636s ***************** Upgrading XDB **************** Restart Phase #:54 [SDSPDB2] Files:1 Time: 0s Serial Phase #:56 [SDSPDB2] Files:3 Time: 10s Serial Phase #:57 [SDSPDB2] Files:3 Time: 24s Parallel Phase #:58 [SDSPDB2] Files:9 Time: 11s Parallel Phase #:59 [SDSPDB2] Files:25 Time: 34s Serial Phase #:60 [SDSPDB2] Files:4 Time: 85s Serial Phase #:61 [SDSPDB2] Files:1 Time: 0s Serial Phase #:62 [SDSPDB2] Files:31 Time: 33s Serial Phase #:63 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:64 [SDSPDB2] Files:6 Time: 11s Serial Phase #:65 [SDSPDB2] Files:2 Time: 21s Serial Phase #:66 [SDSPDB2] Files:3 Time: 73s **************** Upgrading ORDIM *************** Restart Phase #:67 [SDSPDB2] Files:1 Time: 0s Serial Phase #:69 [SDSPDB2] Files:1 Time: 1s Parallel Phase #:70 [SDSPDB2] Files:2 Time: 84s Serial Phase #:71 [SDSPDB2] Files:1 Time: 76s Restart Phase #:72 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:73 [SDSPDB2] Files:2 Time: 14s Serial Phase #:74 [SDSPDB2] Files:2 Time: 1s ***************** Upgrading SDO **************** Restart Phase #:75 [SDSPDB2] Files:1 Time: 0s Serial Phase #:77 [SDSPDB2] Files:1 Time: 76s Serial Phase #:78 [SDSPDB2] Files:1 Time: 47s Restart Phase #:79 [SDSPDB2] Files:1 Time: 0s Serial Phase #:80 [SDSPDB2] Files:1 Time: 52s Restart Phase #:81 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:82 [SDSPDB2] Files:3 Time: 239s Restart Phase #:83 [SDSPDB2] Files:1 Time: 1s Serial Phase #:84 [SDSPDB2] Files:1 Time: 14s Restart Phase #:85 [SDSPDB2] Files:1 Time: 0s Serial Phase #:86 [SDSPDB2] Files:1 Time: 32s Restart Phase #:87 [SDSPDB2] Files:1 Time: 0s Parallel Phase #:88 [SDSPDB2] Files:4 Time: 174s Restart Phase #:89 [SDSPDB2] Files:1 Time: 0s Serial Phase #:90 [SDSPDB2] Files:1 Time: 1s Restart Phase #:91 [SDSPDB2] Files:1 Time: 0s Serial Phase #:92 [SDSPDB2] Files:2 Time: 11s Restart Phase #:93 [SDSPDB2] Files:1 Time: 0s Serial Phase #:94 [SDSPDB2] Files:1 Time: 1s Restart Phase #:95 [SDSPDB2] Files:1 Time: 0s ******* Upgrading ODM, WK, EXF, RUL, XOQ ******* Serial Phase #:96 [SDSPDB2] Files:1 Time: 86s Restart Phase #:97 [SDSPDB2] Files:1 Time: 0s *********** Final Component scripts *********** Serial Phase #:98 [SDSPDB2] Files:1 Time: 5s ************* Final Upgrade scripts ************ Serial Phase #:99 [SDSPDB2] Files:1 Time: 779s ******************* Migration ****************** Serial Phase #:100 [SDSPDB2] Files:1 Time: 1s *** End PDB Application Upgrade Pre-Shutdown *** Serial Phase #:101 [SDSPDB2] Files:1 Time: 1s Serial Phase #:102 [SDSPDB2] Files:1 Time: 9s Serial Phase #:103 [SDSPDB2] Files:1 Time: 59s ***************** Post Upgrade ***************** Serial Phase #:104 [SDSPDB2] Files:1 Time: 13s **************** Summary report **************** Serial Phase #:105 [SDSPDB2] Files:1 Time: 3s *** End PDB Application Upgrade Post-Shutdown ** Serial Phase #:106 [SDSPDB2] Files:1 Time: 1s Serial Phase #:107 [SDSPDB2] Files:1 Time: 7s Serial Phase #:108 [SDSPDB2] Files:1 Time: 0s ------------------------------------------------------ Phases [0-108] End Time:[2018_07_29 03:22:15] Container Lists Inclusion:[SDSPDB2] Exclusion:[NONE] ------------------------------------------------------ Grand Total Time: 10603s [SDSPDB2] LOG FILES: (/u01/app/oracle/catupgrdsdspdb2*.log) Upgrade Summary Report Located in: /u01/app/oracle/upg_summary.log Total Upgrade Time: [0d:2h:56m:43s] Time: 10608s For PDB(s) Grand Total Time: 10608s LOG FILES: (/u01/app/oracle/catupgrd*.log) Grand Total Upgrade Time: [0d:2h:56m:48s]
Start upgraded pdb
Upgrade is complete, start the pdb
[oracle@sdsserver ~]$ sqlplus sys@sdspdb2 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sun Jul 29 10:29:45 2018 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0 SQL> startup Pluggable Database opened. SQL> exit Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0
Run Post-upgrade script
Run the postupgrade_fixups.sql script generated in the first step.
Run utlrp to recompile invalid objects.
[oracle@sdsserver ~]$ $ORACLE_HOME/perl/bin/perl /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catcon.pl -c 'sdspdb2' -n 1 -e -b postfixups -d '''.''' /tmp/postupgrade_fixups.sql catcon::set_log_file_base_path: ALL catcon-related output will be written to [/home/oracle/postfixups_catcon_2676.lst] catcon::set_log_file_base_path: catcon: See [/home/oracle/postfixups*.log] files for output generated by scripts catcon::set_log_file_base_path: catcon: See [/home/oracle/postfixups_*.lst] files for spool files, if any catcon.pl: completed successfully [oracle@sdsserver ~]$ $ORACLE_HOME/perl/bin/perl /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/catcon.pl -c 'sdspdb2' -n 1 -e -b comp -d '''.''' /u01/app/oracle/product/18.0.0/dbhome_1/rdbms/admin/utlrp.sql catcon::set_log_file_base_path: ALL catcon-related output will be written to [/home/oracle/comp_catcon_3476.lst] catcon::set_log_file_base_path: catcon: See [/home/oracle/comp*.log] files for output generated by scripts catcon::set_log_file_base_path: catcon: See [/home/oracle/comp_*.lst] files for spool files, if any catcon.pl: completed successfully
And that’s it. The upgrade duration was longer than I would have hoped for but the manual steps were minimal and easy.
For Oracle documentation on these steps:
https://docs.oracle.com/en/database/oracle/oracle-database/18/upgrd/manual-upgrade-scenarios-multitenant-architecture-oracle-databases.html#GUID-8F9AAFA1-690D-4F70-8448-E66D765AF136