Tipps & Tricks: September 2009 Bereich: APEX Erstellung: 09/2009 MP Versionsinfo: ?? Letzte Überarbeitung: 09/2009 MP APEX 3.2.1 Patchinstallation Liebe Apex-Gemeinde, es ist mal wieder soweit. Oracle hat einen neuen Patch für APEX Version 3.2 zur Verfügung gestellt. Leider kann der Einzel-Patch nur über Metalink bezogen werden. Wer jedoch APEX komplett neu installieren möchte, kann sich die aktuelle Version von folgender Webseite herunterladen: http://www.oracle.com/technology/products/database/application_express/download.html Der Folgende Tipp soll Ihnen beschreiben, wie Sie den Metalink-Patch (8548651) erfolgreich installieren können: 1. Stellen Sie sicher, dass kein Benutzer aktuell mit APEX arbeiten kann. 1a. Wenn Sie den XML DB HTTP Server verwenden, setzen Sie den Port auf 0. Merken Sie sich aber auch den alten Port, damit dieser nach der Patchinstallation wieder eingesetzt werden kann: COL http_port NEW_VALUE http_port select dbms_xdb.gethttpport as http_port FROM dual; exec dbms_xdb.sethttpport(0); 1b. Wenn der Apache eingesetzt wird stoppen Sie ihn. Beispiel für Oracle 10g: <ORACLE_BASE>\<ORACLE_HTTPSERVER_HOME>\opmn\bin\opmnctl stopproc ias-component=HTTP_Server Ab 11g kann Error Logging aktiviert werden. Damit werden alle Fehler, die im Skript aufgetreten sind, in einer Tabelle gespeichert: CREATE TABLE system.apex_patch_errlog ( USERNAME VARCHAR(256), TIMESTAMP TIMESTAMP, SCRIPT VARCHAR(1024), IDENTIFIER VARCHAR(256), MESSAGE CLOB, Statement CLOB); SET ERRORLOGGING ON TABLE system.apex_patch_errlog Nun starten wir den Patch: Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 1 von 4 @D:\p8548651_111060_GENERIC\patch\apxpatch.sql 2. Prüfen Sie nun im Logfile oder in der Errlog Tabelle, ob Fehler aufgetreten sind: select * from system.apex_patch_errlog; /* Nur 11g*/ SQL> host find "ORA-" D:\apex_3.2.1_p8548651_111060_GENERIC\patch\apxpatch.log ---------- D:\P8548651_111060_GENERIC\PATCH\APXPATCH.LOG Hinweis: In Version 11.1.0.7 kann ( wird :-) ) der folgende Fehler beim Einspielen des Patches auftreten: ORA-00600: internal error code, arguments: [kgiinb_invalid_obj] Dafür stellt Oracle einen Patch zur Verfügung (Patch 7420394 ). Leider ist dieser nur auf folgenden Plattformen (Stand August 2009) verfügbar: Linux x86 HP-UX PA-RISC (64-bit) Sun Solaris SPARC (64-bit) Linux x86-64 IBM AIX on POWER Systems (64-bit) HP-UX Itanium 2a. Sie können auch im Repository nachsehen, ob Fehler aufgetreten sind: col comp_name FORMAT a30 col version format a15 select comp_name,version,status,modified from dba_registry where comp_id='APEX'; COMP_NAME VERSION STATUS MODIFIED ------------------------------ --------------- ----------- -------------------Oracle Application Express 3.2.1.00.10 VALID 27-AUG-2009 10:27:11 2b. Wer es noch genauer haben möchte kann nachsehen, ob Objekte Invalid geworden sind: select owner,object_name,status FROM dba_objects where (owner = 'FLOWS_FILES' or owner = 'APEX_030200') and status<>'VALID' 2c. Falls Invalide Objekte auftreten, können Sie als Benutzer SYS folgendes Skript starten: @?/rdbms/admin/utlrp 3. Nun werden neue Bilder/Dokumente auf den Server hochgeladen (bitte nur Durchführen, wenn Apache nicht Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 2 von 4 Nun werden neue Bilder/Dokumente auf den Server hochgeladen (bitte nur Durchführen, wenn Apache nicht eingesetzt wird). Das Skript wird mit einem Parameter aufgerufen, der den Pfad zum Patchverzeichnis angeben sollte. Schauen Sie sich beim Einsatz des XML DB HTTP Servers vorher die Anzahl der Dokumente im /i[mages]/doc Ordner an, dann können Sie feststellen, ob der Uploadprozess geklappt hat: SELECT count(*) FROM PATH_VIEW WHERE UNDER_PATH(res, '/i/doc',1)>0; /* für 10g*/ SELECT count(*) FROM PATH_VIEW WHERE UNDER_PATH(res, '/images/doc',1)>0; /* für 11g*/ COUNT(*) ---------------------2567 spool d:\p8548651_111060_GENERIC\patch\apex_images_patch.log REM Für 11g können wir wieder unsere Fehlertabelle auspacken: SET ERRORLOGGING ON TABLE system.apex_patch_errlog @D:\p8548651_111060_GENERIC\patch\apxldimg.sql D:\p8548651_111060_GENERIC\patch spool off Auch hier sollte nach Fehlern gesucht werden und ggf. das Skript neu starten (meist liegt der Fehler in einer falschen Pfadangabe). Zum Prüfen, ob die Bilder\Dokumente richtig hochgeladen wurden können wir die Anzahl der Dateien im /images/doc /*11g*/ bzw. /i/doc /*10g*/ zählen: SELECT count(*) FROM PATH_VIEW WHERE UNDER_PATH(res, '/images/doc',1)>0; /*11g für 10g bitte /i/doc verwenden*/ COUNT(*) ---------------------3015 3b. Falls Apache eingesetzt wird, werden die Bilder in das Verzeichnis auf dem Server kopiert: Für Windows xcopy /E /I D:\p8548651_111060_GENERIC\patch\images <ORACLE_HTTPSERVER_HOME>\Apache\Apache\images Für UNIX cp -rf /opt/oracle/p8548651_111060_GENERIC/patch/images ORACLE_HTTPSERVER_HOME/Apache/Apache Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 3 von 4 4. Nun kann der XML DB HTTP Port (falls Sie keinen Apache/IAS/OHS verwenden) wieder auf seinen Ursprungswert zurückgesetzt werden: exec dbms_xdb.sethttpport(&http_port) ###### Happy End ###### oder bis zum nächsten Patch .... Wenn Sie APEX nicht durch mühsames Probieren selbst erlernen wollen, kommen Sie doch in eine von unseren beiden 5 Tages Schulungen (Grundlagen / Fortschritt). Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 4 von 4