Blog 
Oracle 12c DBUA und Datapatch

Mittlerweile sollten alle Kunden, die Oracle Datenbanken einsetzen, dabei sein, ihre Datenbanken auf Oracle 12c umzustellen. Während es für die Standard Edition Anwender immer noch die Einschränkung gibt, dass nur Version 12.1.0.1 verfügbar ist, können Enterprise Edition Anwender die Version 12.1.0.2 einsetzen. Es versteht sich dabei von selbst, dass neben dem Basisrelease auch die aktuelle PSU (Patch Set Unit) eingespielt wird.

Bei einer Installation, die ich in der vorherigen Woche in einem Projekt durchgeführt habe, ist mir dabei eine kleine aber wichtige Einschränkung aufgefallen:

Wenn man den Upgrade von 11g nach 12c mit dem dbua (Database Upgrade Assistant) durchführt, wird der Befehl datapatch nicht automatisch ausgeführt (obwohl dies in der Dokumentation explizit gesagt wird). Das führt dazu, dass zwar die Software auf dem neuesten Stand ist (also zum Zeitpunkt der Veröffentlichung dieses Blogs 12.1.0.2.4, d.h. inklusive PSU vom Juni 2015) nicht jedoch die Datenbank.

Weitere Informationen zu datapatch finden Sie hier: Oracle Premier Support – Oracle Database Support News – Issue November, 2014 Volume 46 (Doc ID 1954478.1)

Beispiel

Das Beispiel für den Upgrade der Datenbank „WOLFGANG“ von 11.2.0.4 auf 12.1.0.2.5 verdeutlicht dies.

upgrade12c 1

Wenn alle Voraussetzungen für den Upgrade erfüllt sind (z.B. Leeren der Recycle-Bin), dann wird der Upgrade in ca. 30 bis 45 Minuten durchgeführt sein.

upgrade12c 2

Aber was bedeutet das für den Upgrade der Datenbank?

Zunächst sieht alles ganz richtig aus:

SQL> SELECT * FROM v$version;
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production              0
PL/SQL Release 12.1.0.2.0 - Production                                                    0
CORE    12.1.0.2.0      Production                                                        0
TNS for Linux: Version 12.1.0.2.0 - Production                                            0
NLSRTL Version 12.1.0.2.0 - Production                                                    0

Doch was ist mit dem PSU?

SQL> SELECT patch_id, version, status, bundle_id, bundle_series
       FROM dba_registry_sqlpatch;
no rows selected

Das sollte eigentlich anders aussehen!

Im Logfile des Upgrades ($ORACLE_BASE/cfgtoollogs/dbua/WOLFGANG/upgrade1/catupgrd0.log) findet man folgende Informationen:

...
------------------------------------------------------
Phases [0-73]         End Time:[2015_07_22 10:24:42]
------------------------------------------------------

Grand Total Time: 1177s

catuppst.sql unable to run in Database:
REASON:
catuppst.sql unable to run -x option has been turned on

LOG FILES: (catupgrd*.log)

Upgrade Summary Report Located in:
/u01/app/oracle/product/12.1.0/dbhome_1/cfgtoollogs/WOLFGANG/upgrade/upg_summary.log

Grand Total Upgrade Time:    [0d:0h:19m:37s]

stdout from running datapatch to install upgrade SQL patches and PSUs:
SQL Patching tool version 12.1.0.2.0 on Wed Jul 22 10:22:58 2015
Copyright (c) 2015, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_6067_2015_07_22_10_22_58/sqlpatch_invocation.log

Connecting to database...OK
Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of SQL patches:
Bundle series PSU:
  ID 4 in the binary registry and not installed in the SQL registry <----

Adding patches to installation queue and performing prereq checks...
Installation queue:
  Nothing to roll back
  Nothing to apply <---- 

SQL Patching tool complete on Wed Jul 22 10:23:19 2015
stderr from running datapatch to install upgrade SQL patches and PSUs:

Function created.

Elapsed: 00:00:00.03

Oracle Database 12.1 Post-Upgrade Status Tool           07-22-2015 10:24:24

Component                               Current         Version  Elapsed Time
Name                                    Status          Number   HH:MM:SS

Oracle Server                          UPGRADED      12.1.0.2.0  00:15:33
Oracle Workspace Manager                  VALID      12.1.0.2.0  00:00:50
Oracle XML Database                       VALID      12.1.0.2.0  00:01:21
Final Actions                                                    00:01:27

Total Upgrade Time: 00:20:42

Obwohl erkannt wurde, dass es ein PSU gibt, endet das Patching mit „Nothing to apply„.

Wenn man sich dieser Einschränkung bewusst ist, kann man den Patch über datapatch sehr einfach nachinstallieren:

cd $ORACLE_HOME/OPatch
oracle@mozart[WOLFGANG]% ./datapatch
SQL Patching tool version 12.1.0.2.0 on Wed Jul 22 14:20:37 2015
Copyright (c) 2015, Oracle.  All rights reserved.

Connecting to database...OK
Determining current state...done
Adding patches to installation queue and performing prereq checks...done
Installation queue:
  Nothing to roll back
  The following patches will be applied:
    20831110 (Database Patch Set Update : 12.1.0.2.4 (20831110))

Installing patches...
Patch installation complete.  Total patches installed: 1

Validating logfiles...done
SQL Patching tool complete on Wed Jul 22 14:20:56 2015

Diesen Befehl sollten Sie immer benutzen, um zu überprüfen, ob die Datenbank auch auf dem aktuellen Stand des PSUs ist:

SQL> SELECT patch_id, version, status, bundle_id, bundle_series
       FROM dba_registry_sqlpatch;
  PATCH_ID VERSION              STATUS           BUNDLE_ID BUNDLE_SERIES
---------- -------------------- --------------- ---------- ------------------------------
  20831110 12.1.0.2             SUCCESS                  4 PSU

Weitere Informationen erhalten Sie beim Oracle Support und natürlich bei „Mr. Upgrade“ Mike Dietrich unter https://blogs.oracle.com/UPGRADE/entry/dbua_and_datapatch_some_things

Ich wünsche Ihnen viel Erfolg beim Upgrade und viel Spaß mit der Oracle 12c!

Keine Kommentare zu “Oracle 12c DBUA und Datapatch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Was kann CarajanDB für Sie tun?