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/technetwork/developer-tools/apex/downloads/index.html
Der Folgende Tipp soll Ihnen beschreiben, wie Sie den Metalink-Patch (8548651) erfolgreich installieren können:
COL http_port NEW_VALUE http_port
select dbms_xdb.gethttpport as http_port FROM dual;
exec dbms_xdb.sethttpport(0);
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:
@D:\p8548651_111060_GENERIC\patch\apxpatch.sql
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:
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
select owner,object_name,status FROM dba_objects
where (owner = 'FLOWS_FILES' or owner = 'APEX_030200')
and status<>'VALID'
@?/rdbms/admin/utlrp
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
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
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).
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.