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 [inlinecode]dbua[/inlinecode] (Database Upgrade Assistant) durchführt, wird der Befehl [inlinecode]datapatch[/inlinecode] 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.
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.
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!