Table of Contents

Mike Dietrich Classroom sessions 2020

Active Data Guard is more than just the Read-Only Standby database. Together with your Active Data Guard license comes the “Rolling Upgrade using Active Data Guard” Feature, better known as DBMS_ROLLING.

A worked example of a manual upgrade (including timezone data) from 12.2 to 19c

Oracle 19c changes and desuppoerted features

Using Mike Dietrich's AutoUpgrade

This is really the only way to go from now on. It makes life so much easier for the dba. See my AutoUpgrade page for my real life working document.

Upgrade to 19c and also apply the latest RU patch at the same time

A word on 10g passwords and compatibility

There are two things that influence access to the database with 10g passwords.

Download the Hands-On Lab

https://mikedietrichde.com/database-upgrade-hands-on-lab-oracle-18c-and-19c/

This is the main setup page for the HOL

https://mikedietrichde.com/hol-19c-setup-setup-for-the-oracle-19c-upgrade-hands-on-lab/

Pre-requisites

Autoupgrade sets a guaranteed restore point before it does the upgrade in case anything goes wrong.
I have done an upgrade that went wrong so to make life a lot easier, use a FRA!

Ensure a FRA exists to hold the flashback logs

Note: Flashback does not need to be enabled for this to work.

alter system set db_recovery_file_dest_size = 10g scope=both;
alter system set db_recovery_file_dest = ‘/cln/acc/ora_data2/archivelog/aarct' scope=both;

SQL> sho parameter recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /cln/acc/ora_data2/archivelog/aarct
db_recovery_file_dest_size           big integer 10G
recovery_parallelism                 integer     0

An example of an autoupgrade config file that has worked successfully

The recompilation and timezone options are commented as 'yes' is the default anyway.

# --------------------
# Global configuration
# --------------------
global.autoupg_log_dir=/home/oracle/autoupgrade/logs
global.target_version=19


# -----------------
# Database number 1
# -----------------
upg1.dbname=aarct
upg1.start_time=now
upg1.source_home=/cln/tst/ora_bin1/app/oracle/product/11.2.0.4/dbhome_1
upg1.target_home=/cln/tst/ora_bin1/app/oracle/product/19/dbhome_1
upg1.sid=aarct
upg1.log_dir=/home/oracle/autoupgrade/logs/aarct
upg1.upgrade_node=localhost
#upg1.run_utlrp=yes
#upg1.timezone_upg=yes

Run the autoupgrade in analyse mode to check that the upgrade will likely succeed

export CFGS="/oracle/scripts"
export OH19="$ORACLE_BASE/product/19/dbhome_1"
echo $OH19
/cln/tst/ora_bin1/app/oracle/product/19/dbhome_1
"${OH19}/jdk/bin/java" -jar "${OH19}/rdbms/admin/autoupgrade.jar" -config "${CFGS}/autoupgrade_aarct.cfg" -mode analyze

Run the autoupgrade in deploy mode requesting it to undo what it did should it fail

"${OH19}/jdk/bin/java" -jar "${OH19}/rdbms/admin/autoupgrade.jar" -config "${CFGS}/autoupgrade_aarct.cfg" -mode deploy -restore_on_fail

Downgrade in case of failed application testing

If the application testing shows that this database version is not going to work there are options.

Compatible parameter was not updated

NOTE: The whole database will be rewound - dictionary and data!

select * from v$restore_point;
shu immediate
startup mount;
flashback database to restore point &grp;
alter database open resetlogs;

The advantage of this method is that the dictionary is downgraded but the data remains as it is.

shutdown immediate
startup downgrade
set echo on termout on serveroutput on timing on
spool /home/oracle/autoupgrade/logs/aarct/catdwgrd.log
@?/rdbms/admin/catdwgrd.sql
shutdown immediate
exit

Switch back to the old ORACLE_HOME. A duplicated entry in /etc/oratab helps here.

export ORACLE_SID=aarct_11
. oraenv

Start the instance up in upgrade mode to to complete the downgrade!

startup upgrade
set echo on termout on timing on
spool /home/oracle/autoupgrade/logs/aarct/catrelod.log
@?/rdbms/admin/catrelod.sql
shutdown immediate

Startup and recompile any uncompiled objects

startup
@?/rdbms/admin/utlrp.sql

Compatible parameter was updated