AutoUpgrade enables customers to upgrade one or many Oracle databases at the command-line with a single command and a single configuration file. AutoUpgrade will run the preupgrade tasks, perform automated fixups where needed, execute the database upgrade, and finish by taking care of post-upgrade tasks. It includes automatic retry and fallback, the possibility to schedule upgrades for future points in time, and the ability to set, change or remove initialization parameters as desired.
Database can directly be upgraded to 19c from below releases: 11.2.0.3, 11.2.0.4, 12.1.0.1, 12.1.0.2, 12.2.0.1 and 18
Recommended Steps
Step 1: Take full backup of your database with controlfile and spfile. So that if anything goes wrong during upgrade, you can always restore your database.
run {
allocate channel demtest_backup_disk1 type disk format ‘C:\temp\full_backup_fidelio/%d_%U’;
allocate channel demtest_backup_disk2 type disk format ‘C:\temp\full_backup_fidelio/%d_%U’;
allocate channel demtest_backup_disk3 type disk format ‘C:\temp\full_backup_fidelio/%d_%U’;
allocate channel demtest_backup_disk4 type disk format ‘C:\temp\full_backup_fidelio/%d_%U’;
backup incremental level 0 database;
backup current controlfile;
release channel demtest_backup_disk1;
release channel demtest_backup_disk2;
release channel demtest_backup_disk3;
release channel demtest_backup_disk4;
}
Step 2: Pre-Upgrade actions.
- As SYS User, Empty the recycle bin
- PURGE DBA_RECYCLEBIN;
- Check for INVALID objects in SYS and SYSTEM
- col owner format a15
- col object_name format a45
- col object_type format a15
- select owner, object_name, object_type from dba_objects where owner in (‘SYS’,’SYSTEM’) and status=’INVALID’ order by owner,object_type;
Recompile invalids using utlrp.sql
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
- Check for duplicate objects in SYS and SYSTEM
- SELECT object_name, object_type, subobject_name, object_id
FROM dba_objects
WHERE object_name||object_type in
(SELECT object_name||object_type
FROM dba_objects
WHERE owner = ‘SYS’)
AND owner = ‘SYSTEM’
AND object_name NOT in (‘AQ$_SCHEDULES’,’AQ$_SCHEDULES_PRIMARY’,’DBMS_REPCAT_AUTH’,’DBMS_REPCAT_AUTH’) ;
- SELECT object_name, object_type, subobject_name, object_id
- Step 3: Gather Dictionary Statistics.
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
Actions to perform
- Step 1: Define Environment Variables
Windows Example
set ORACLE_HOME=D:\oracle\product\19.3.0\dbhome_1
set SQLPATH=.;%SQLPATH%
set JAVA_HOME=%ORACLE_HOME%\jdk\bin
set PATH=%ORACLE_HOME%\bin;%JAVA_HOME%;%PATH%
Linux Example
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/jdk/bin
export JAVA_HOME=$ORACLE_HOME/jdk/bin
- Step 2: Get the latest autoupgrade.jar java file
Get the latest autoupgrade.jar java file from Doc ID 2485457.1 and place it under under your 19c directory: $ORACLE_HOME/rdbms/admin
- Step 3: Check that you have Java 8 or newer
$ORACLE_HOME/jdk/bin/java -version
D:\oracle\product\19.0.0\dbhome_1\jdk/bin/java -version
Step 4: Create the config file
Create a directory to hold all upgrade config and log files.
mkdir C:\temp\19c-autoupg
cd C:\temp\19c-autoupg
Create an autoupgrade Sample Configuration File
D:\oracle\product\12.2.0\dbhome_1\jdk\bin\java -jar D:\oracle\product\19.3.0\dbhome_1\rdbms\admin\autoupgrade.jar -create_sample_file config
$JAVA_HOME/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -create_sample_file config
Create Config File
notepad C:\temp\19c-autoupg\fidelio_db_config.cfg
Windows Example:
global.autoupg_log_dir=C:\temp\19c-autoupg\
# Database fidelio
upg1.dbname=fidelio
upg1.source_home=D:\oracle\product\12.2.0\dbhome_1
upg1.target_home=D:\oracle\product\19.0.0\dbhome_1
upg1.start_time=NOW
upg1.sid=fidelio
upg1.log_dir=C:\temp\19c-autoupg\
upg1.target_version=19
upg1.upgrade_node=localhost
upg1.run_utlrp=yes
upg1.timezone_upg=yes
## This is required for databases in NOARCHIVELOG mode, to skip restore point creation.
## be aware that this means there will be no fallback plan if the upgrade fails
upg1.restoration=no
Linux Example:
global.autoupg_log_dir=/home/oracle/upgrade_to_19c
# Database fidelio
upg1.dbname=fidelio2
upg1.source_home=/u01/app/oracle/product/12.2.0.1/db_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.start_time=NOW
upg1.sid=fidelio2
upg1.log_dir=/home/oracle/upgrade_to_19c
upg1.target_version=19
upg1.upgrade_node=localhost
upg1.run_utlrp=yes
upg1.timezone_upg=yes
## This is required for databases in NOARCHIVELOG mode, to skip restore point creation.
## be aware that this means there will be no fallback plan if the upgrade fails
upg1.restoration=no
Step 5 : Copy listener.ora, sqlnet.ora and tnsnames.ora to 19c Folder
Copy D:\oracle\product\12.2.0\dbhome_1\network\admin\*.ora D:\oracle\product\19.3.0\dbhome_1\network\admin
cp /u01/app/oracle/product/12.2.0.1/db_1/network/admin/*.ora $ORACLE_HOME/network/admin
Step 6: Analyze the database
The Four Modes of AutoUpgrade processing described in Oracle Docs (ANALYZE, FIXUP, DEPLOY & UPGRADE).
- ANALYZE : This mode perform pre-checks on source database to see if it is ready for upgrade. It will only ANALYZE the source database and will to perform any changes.
- FIXUPS : This mode performs the checks that it also performs while in Analyze mode and after completing these checks, AutoUpgrade then performs all automated fixup tasks that are required to fix the earlier release source database before before the upgrade is commenced.
- DEPLOY : This mode will perform actual upgrade of the source database. If needed it can also perform fixups on database.
- UPGRADE : Upgrade mode enables you to upgrade the target Oracle Home in cases where you do not have access to source Oracle Home.
You can run auto upgrade directly in DEPLOY mode without running ANALYZE and FIXUPS mode. But if you do not want to take chances to see unforseen abortion of upgrade, you better run it in ANALYZE and FIXUPS mode before running it in DEPLOY mode.
Autoupgrade Analyze mode checks your database to see if it is ready for the upgrade. This will reads data from the database and does not perform any updates.
Execute autoupgrade in analyze mode with the below syntax,
Windows Example
%JAVA_HOME%\java -jar %ORACLE_HOME%\rdbms\admin\autoupgrade.jar -config fidelio_db_config.cfg -mode ANALYZE
Linux Example
$JAVA_HOME/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config fidelio_db_config.cfg -mode ANALYZE
We can monitor, manage and control the jobs from the autoupgrade console. Example:
lsj – to list the jobs
status – to show the job status. Example: status -job 100
tasks – shows the tasks executing
Check Tasks
Check Job Status
All Analyze logs are created under autoupg_log_dir
Once the AutoUpgrade finished in ANALYZE mode, you can view an HTML output of script under specified upg1.log_dir which is C:\temp\19c-autoupg in our case.
Location of HTML output file is 100/prechecks/ under above specified directory. Name would be <dbname>_preupgrade.html which is
C:\Temp\19c-autoupg\fidelio\100\prechecks\fidelio_preupgrade.html in our case.
You can also verify the precheck status by looking at specified global.autoupg_log_dir. Under this directory, navigate to cfgtoollogs/upgrade/auto/status under global.autoupg_log if you see <dbname>_prechecks.success, you’re good to proceed with DEPLOY mode.
We can review the html file (fidelio_preupgrade.html) which will list all precheck Errors, warnings and recommendations:
In the report you will see different severity levels: INFO , WARNING , ERROR , RECOMMEND
Of course “ERROR” indicates that you need Fix the issue before attempting to upgrade the database.
Step 7: Start Process
If there are no errors, you can execute the DEPLOY mode, otherwise is better to execute the FIXUPS Mode to make corrections.
So in this example, we didn’t have any critical warnings, but we will use the FIXUP Mode for demonstration purposes:
Windows Example
%JAVA_HOME%\java -jar %ORACLE_HOME%\rdbms\admin\autoupgrade.jar -config fidelio_db_config.cfg -mode FIXUPS
Linux Example
$ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config fidelio_db_config.cfg -mode FIXUPS
Once the corrections are made (again, this was not necessary in our example), we can execute the DEPLOY Mode. Autoupgrade Deploy mode performs the actual upgrade of the database from preugrade source database analysis to post-upgrade checks.
Windows Example
%JAVA_HOME%\java -jar %ORACLE_HOME%\rdbms\admin\autoupgrade.jar -config fidelio_db_config.cfg -mode DEPLOY
Linux Example
$JAVA_HOME/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config fidelio_db_config.cfg -mode DEPLOY
As soon as you run it in DEPLOY mode, consider reviewing the log under C:\Temp\19c-autoupg\FIDELIO\<job number>\dbupgrade\autoupgrade*fidelio.log
Or even better, use the new tools to monitor:
List running jobs
Name & Status of all tasks.
Get location of logs
- Status of AutoUpgrade
And here is the end of the script
After this step, you will have your DB running under 19c !!!