Release Update einspielen mit Autoupgrade

20. Juli 2022 Aus Von Markus Flechtner

Vor etwa einer Woche hat Oracle eine neue Version des Autoupgrade-Tools veröffentlicht, dass nicht nur Updates sondern auch Patches kann. Gestern kam das quartalsmäßige Release Update heraus. Grund genug, diese beiden Dinge miteinander zu verbinden und den RU mit AutoUpgrade einzuspielen.

Dabei macht AutoUpgrade nur den Datenbank-Teil, d.h. vorher muss ein neues Oracle-Home-Verzeichnis mit dem gewünschten Ziel-Patchstand vorbereitet werden.

Mitspieler in meinem Labor-Test sind also:

1. Die aktuelle Version von AutoUpgrade – erhältlich über die MOS-Note 2485457.1

2. Ein installiertes Oracle-Home mit Oracle Database 19c – Stand 19.15 (Release-Update April 2022) – auf diesem Stand ist meine Test-Datenbank

oracle@abel:~/ echo $ORACLE_HOME
/u00/app/oracle/product/19.15-ee

oracle@abel:~/  $ORACLE_HOME/OPatch/opatch lspatches
33912872;DATABASE PERL UPDATE IN 19C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE)
33808367;OJVM RELEASE UPDATE: 19.15.0.0.220419 (33808367)
33806152;Database Release Update : 19.15.0.0.220419 (33806152)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.

3. Ein installiertes Oracle-Home mit Oracle Database 19c – Stand 19.16 (Release-Update Juli 2022) – das ist der Ziel-Release-Stand für meine Test-Datenbank

oracle@abel:~/ echo $ORACLE_HOME
/u00/app/oracle/product/19.16-ee

oracle@abel:~/ $ORACLE_HOME/OPatch/opatch lspatches
34113634;JDK BUNDLE PATCH 19.0.0.0.220719
33912872;DATABASE PERL UPDATE IN 19C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE)
34086870;OJVM RELEASE UPDATE: 19.16.0.0.220719 (34086870)
34133642;Database Release Update : 19.16.0.0.220719 (34133642)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

4. Eine Datenbank, die im 19.15-er Oracle-Home läuft. In meinem Fall ist es einen Non-CDB namens “DEMONCDB”.

 

Für Autoupgrade brauchen wir eine Konfigurationsdatei, die im Minimalfall etwa so aussieht:

oracle@abel:/u00/app/oracle/stage/  cat autoupgrade_patch_DEMONCDB.txt
patch_DEMONCDB.log_dir=/home/oracle/
patch_DEMONCDB.sid=DEMONCDB
patch_DEMONCDB.source_home=/u00/app/oracle/product/19.15-ee
patch_DEMONCDB.target_home=/u00/app/oracle/product/19.16-ee
patch_DEMONCDB.start_time=NOW
patch_DEMONCDB.run_utlrp=yes

Erster Schritt ist dann das “analyze”, bei dem Autoupgrade prüft, ob es ggf. zu Problemen kommen könnte:

oracle@abel:/u00/app/oracle/stage/  $ORACLE_HOME/jdk/bin/java \
-jar /u00/app/oracle/stage/autoupgrade.jar \
-config /u00/app/oracle/stage/autoupgrade_patch_DEMONCDB.txt \
-mode analyze
No parameter 'global.autoupg_log_dir' found in config file, using /u00/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 22.4.220712 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be analyzed
Type 'help' to list console commands
upg> Job 101 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]

Please check the summary report at:
/u00/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u00/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log

Der Job war erfolgreich, d.h. AutoUpgrade erwartet keine Probleme. Sicherheitshalber schauen wir uns noch die Log-Datei an:

oracle@abel:/u00/app/oracle/stage/  cat /u00/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
==========================================
          Autoupgrade Summary Report
==========================================
[Date]           Wed Jul 20 10:17:02 CEST 2022
[Number of Jobs] 1
==========================================
[Job ID] 101
==========================================
[DB Name]                DEMONCDB
[Version Before Upgrade] 19.15.0.0.0
[Version After Upgrade]  19.16.0.0.0
------------------------------------------
[Stage Name]    PRECHECKS
[Status]        SUCCESS
[Start Time]    2022-07-20 10:16:54
[Duration]
[Log Directory] /home/oracle/DEMONCDB/101/prechecks
[Detail]        /home/oracle/DEMONCDB/101/prechecks/demoncdb_preupgrade.log
                Check passed and no manual intervention needed
------------------------------------------

Es sieht alles gut aus und wir können somit das eigentliche Patchen starten. Vorher müssen natürlich die Applikationen heruntergefahren werden, denn für den Wechsel des Oracle-Homes muss auch die Datenbank kurz heruntergefahren werden.

oracle@abel:/u00/app/oracle/stage/  $ORACLE_HOME/jdk/bin/java \
-jar /u00/app/oracle/stage/autoupgrade.jar \
-config /u00/app/oracle/stage/autoupgrade_patch_DEMONCDB.txt \
-mode deploy

No parameter 'global.autoupg_log_dir' found in config file, using /u00/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 22.4.220712 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be processed
Type 'help' to list console commands
upg> Job 102 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs restored                  [0]
Jobs pending                   [0]

---- Drop GRP at your convenience once you consider it is no longer needed ----
Drop GRP from DEMONCDB: drop restore point AUTOUPGRADE_9212_DEMONCDB1915000


Please check the summary report at:
/u00/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u00/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log

Es scheint alles erfolgreich gelaufen zu sein, aber kontrollieren wir doch mal:

oracle@abel:~/ [rdbms21] grep DEMONCDB /etc/oratab
DEMONCDB:/u00/app/oracle/product/19.16-ee:Y

Die oratab-Datei ist also korrekt angepasst.

Und wie sieht es in der Datenbank aus?

oracle@abel:~/ [DEMONCDB] sqlplus "/ as sysdba"

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jul 20 10:32:56 2022
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.16.0.0.0

SQL> set pagesize 100
SQL> column comp_name format a40
SQL> column version_full format a20
SQL> column status format a15
SQL> select COMP_NAME,VERSION_FULL,STATUS from dba_registry;

COMP_NAME                                VERSION_FULL         STATUS
---------------------------------------- -------------------- ---------------
Oracle Database Catalog Views            19.16.0.0.0          VALID
Oracle Database Packages and Types       19.16.0.0.0          VALID
Oracle Real Application Clusters         19.16.0.0.0          OPTION OFF
JServer JAVA Virtual Machine             19.16.0.0.0          VALID
Oracle XDK                               19.16.0.0.0          VALID
Oracle Database Java Packages            19.16.0.0.0          VALID
OLAP Analytic Workspace                  19.16.0.0.0          VALID
Oracle XML Database                      19.16.0.0.0          VALID
Oracle Workspace Manager                 19.16.0.0.0          VALID
Oracle Text                              19.16.0.0.0          VALID
Oracle Multimedia                        19.16.0.0.0          VALID
Spatial                                  19.16.0.0.0          VALID
Oracle OLAP API                          19.16.0.0.0          VALID

13 rows selected.

Alle Komponenten sind “Valid” und auf “Release-Stand” 19.16 – Perfekt.

Wenn wir nicht mehr zum alten Stand (19.15) zurückwollen, dann können (und sollten!) wir auch den Restore Point löschen, den AutoUpgrade gesetzt hat:

SQL> select time,name from v$restore_point;

TIME                             NAME
-------------------------------- ----------------------------------------
20-JUL-22 10.18.59.000000000 AM  AUTOUPGRADE_9212_DEMONCDB1915000


SQL> drop restore point AUTOUPGRADE_9212_DEMONCDB1915000;
Restore point dropped.


SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.16.0.0.0

Damit wäre das Patchen mit AutoUpgrade abgeschlossen. In diesem Fall mit einer Non-CDB, aber mein Test mit einer 19c-CDB war genauso erfolgreich.

 

Links & weitere Informationen:

 

Nachtrag:

Auf einem weiteren Testsystem ist mir ein Fehler aufgefallen, den ich allerdings noch weiter analysieren muss 🙂

Beim Start einer Datenbank-Instanz nach dem Upgrade via Autoupgrade kann die Instanz die Patch-Informationen nicht auslesen. Die Meldungen in der alert.log-Datei sind:

2022-07-20T23:40:40.189717+02:00
Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is not loaded into table
ORA-06512: at "SYS.DBMS_QOPATCH", line 2327
ORA-06512: at "SYS.DBMS_QOPATCH", line 854
ORA-06512: at "SYS.DBMS_QOPATCH", line 937
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at "SYS.DBMS_QOPATCH", line 932
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-29400: data cartridge error
KUP-04095: preprocessor command /u00/app/oracle/product/19.16-ee/QOpatch/qopiprep.bat encountered error "pipe read timeout"
ORA-06512: at "SYS.DBMS_QOPATCH", line 919
ORA-06512: at "SYS.DBMS_QOPATCH", line 2286
ORA-06512: at "SYS.DBMS_QOPATCH", line 817
ORA-06512: at "SYS.DBMS_QOPATCH", line 2309

===========================================================
Dumping current patch information
===========================================================
Unable to obtain current patch information due to error: 20001
===========================================================

Das Problem betrifft sowohl 19.16 als auch 21.7. Nachdem ich dann manuell datapatch für die Datenbanken aufgerufen habe – wobei da kein Patch in die Datenbank eingespielt wurde, trat der Fehler nicht mehr auf.

 

Amazon-Partner-Link