What Autoupgrade Won’t Catch for You when Moving to 19c Part1: Ghost OLAP
Kosseila Hd
Jan 10, 2024 7:31:00 PM
So far, I have used Oracle AutoUpgrade, many times in 3 different OS’. Yet the more you think you’ve seen it all and reached the highest confidence level, another Upgrade will come to bite you in the butt. The truth is every maintenance in any software or platform is unique, Oracle databases are no exception.
Automation will not solve all your problems which means organizations will still need humans when things get nasty.
This is my last series on AutoUpgrade troubleshooting as I anticipate reduced work on DBs shortly. but I wanted to document a few fixes to save your production upgrade from blowing up. Enjoy
Despite some issues, AutoUpgrade remains the best option to upgrade databases to 19c and it’s easy to agree, after checking the below methods available to upgrade/migrate to 19c in this migration white paper.
In my case, I needed to migrate my 12c CDB to 19c, while preserving the Data Guard setup & reducing downtime.
Platform | Source CDB database SI | Target CDB SI | Grid /ASM | Dataguard |
Linux RHEL 8 | 12.1.0.2 Enterprise Edition | 19.17.0.0 Enterprise Edition | Yes | YES |
AutoUpgrade
19c jdk | autoupgrade.jar |
1.8.0_201 | Build.version 22.4.220712 |
While the upgrade process itself isn’t covered here, I’ll mention the steps required to reproduce our AutoUpgrade in a Data Guard-protected environment. If you want to look further into the steps, check out the excellent article by Daniel Overby Hansen called How to Upgrade with AutoUpgrade and Data Guard.
Prerequisites
The following is assumed to be already completed on both primary and standby hosts:
Install and patch a new 19c Oracle Database Home to the latest RU
Installing and patching a new 19c grid infrastructure to the latest RU
Upgrading the existing 12c grid into the new one (19c)
The steps
Stop Standby Database
Upgrade the primary DB
Run AutoUpgrade with the appropriate Config file [analyze, fixups, deploy]
After Upgrade
Restart Data Guard
Update the listener and /etc/oratab on the standby host.
Upgrade the DB by updating the Oracle Home information (srvctl upgrade database)
Re-enable Data Guard
Update the RMAN catalog to the new 19c client’s version
After running AutoUpgrade Analyze to clear all warnings from the prechecks. The deployment unfortunately crashed.
The Configuration
– The Config file as shown below, can defer redo transport & stop Data Guard broker automatically if in use.
#Global configurations
global.autoupg_log_dir=/u01/install/Autoupgrade/UPG_logs
###################
# Database number 1
###################
upgd1.sid=PROD
upgd1.source_home=/u01/app/oracle/product/12.2.0.1/dbhome_1
upgd1.target_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.log_dir=/u01/install/Autoupgrade/UPG_logs/PROD
upg1.run_utlrp=yes
upg1.source_tns_admin_dir=/u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin
upg1.timezone_upg=yes
upg1.restoration=yes
1. Autoupgrade Analyze
C:\> java -jar autoupgrade.jar -config UP19_PROD.cfg -mode analyze
2. Autoupgrade Deploy
The environment was ready for a go so I launched the deployment phase
C:\> java -jar autoupgrade.jar -config UP19_PROD.cfg -mode deploy
... An hour later
upg> lsj
+----+-------+---------+---------+-------+--------------+--------+------------+
|Job#|DB_NAME| STAGE |OPERATION| STATUS| START_TIME | UPDATED| MESSAGE |
+----+-------+---------+---------+-------+--------------+--------+------------+
| 110| PROD |DBUPGRADE|STOPPED | ERROR | Nov 02 16:42 | |UPG-1400 |
+----+-------+---------+---------+-------+--------------+--------+------------+
upg>
----------------------------------------------
Errors in database [PROD-MYPDB1] Stage [DBUPGRADE]
Operation [STOPPED] Status [ERROR]
Info [ Error: UPG-1400 UPGRADE FAILED [FSUAT]
Cause: Database upgrade failed with errors
REASON: ORA-00604: error occurred at recursive SQL level 1
The upgrade phase never finished but most of the PDBs were having issues halfway through the upgrade (incomplete catalog)
This is just an example of one of the errors received by most of the PDBs in the source 12c CDB ORA-00604
When I check the line described in the error in catupgrd log file we can see the below excerpt
When we look at the status of the components on those impacted PDBs we can see that OLAP API is Invalid
Furthermore, if we check the plugging database violations for these PDBs we find 2 OLAP culprits
NAME CAUSE MESSAGE STATUS
-------- -------- ------------------------------------------------------- ---------
MYPDB1 OPTION Database option APS mismatch:PDB installed version PENDING
19.0.0.0.0. CDB in stalled version NULL.
MYPDB1 OPTION Database option XOQ mismatch: PDB installed version PENDING
19.0.0.0.0. CDB in stalled version NULL.
Cause
This occurred because their previous upgrade from 11g to 12c didn’t properly remove the deprecated 11g OLAP component from their PDBs after the conversion to multitenant. Refer to the upgrade run note below.
Indeed looking back at the Autoupgrade prechecks, we can notice that most PDBs have APS (Analytic Workspace)and XOQ (OLAP API) components that are there but market as ‘OPTION OFF’.
Expectation
This is where AutoUpgrade should come in and flag these sorts of issues as critical right from the early Analyze stage to help DBAs avoid upgrade crashes during a production upgrade. Opening an SR is already a loss in terms of planned downtime.
We’ll have to manually clean OLAP remnants before resuming the upgrade as described in Doc ID 1940098.1
I have gathered all the sequenced commands in 2 scripts olap_remove.sql along with remove_olap_leftovers.sql
$ vi olap_remove.sql
col name new_val pdb_name noprint
select name from v$pdbs;
spool &pdb_name..log
prompt ----> Remove OLAP Catalog
@?/olap/admin/catnoamd.sql
prompt ----> Remove OLAP API
@?/olap/admin/olapidrp.plb
@?/olap/admin/catnoxoq.sql
prompt ----> Deinstall APS - OLAP AW component
@?/olap/admin/catnoaps.sql
@?/olap/admin/cwm2drop.sql
prompt ----> cleanup leftovers and Recompile invalids
@remove_olap_leftovers.sql
@?/rdbms/admin/utlrp.sql
spool off
Run the cleanup script for each PDB
SQL> alter session set container=MYPDB1; @olap_remove
@remove_olap_leftovers.sql
alter session set container=MYPDB2; @olap_remove
@remove_olap_leftovers.sql
------ Repeat for all PDBs
Checks
Once the removal performed, we should verify that there is no conflicting OLAP issue is left in the environment
------ Repeat for all PDBs
1. The status of the components
SQL> select COMP_ID, COMP_NAME, VERSION, STATUS from dba_registry;
---- No OLAP component should be listed (Valid 19c options only)
2. Confirm there is no violations remaining
SQL> SELECT name, cause, message,status
FROM pdb_plug_in_violations
where STATUS != 'RESOLVED' ORDER BY time;
Resume the Job
upg> resume -job 110
After this the Auto upgrade was completed successfully and the standby database was re-enabled as expected in the remaining steps.
While automation tools like AutoUpgrade are powerful, they can’t predict and fix all potential bottlenecks.
Staying vigilant and utilizing troubleshooting skills remains crucial.
However, the integrated flagging of known issues would go a long way toward improving the user experience of DBAs fostering greater adoption in the future.