Fehler 404 – die Lösung
- Walter Hochreiner
- Kategorie: Oracle APEX, Tipps & Tricks
In der Programmierung ist wohl nichts ärgerlicher wie Fehlermeldungen die uns nicht zum tatsächlichen Problem führen. Der “404 – Not Found” Fehler ist ein solcher Kandidat. Die Ursache für diesen Fehler ist vielfältig.
Bei Verwendung des Oracle Application Servers (mod_plsql):
Die wirklich sprechende Fehlermeldung kann man hier zunächst am Apache Server finden. Im File Apache\Apache\logs\error_log.xxxxx kann der im Hintergrund aufgetretene Fehler ausgemacht werden:
[Thu Apr 3 ...] mod_plsql: /pls/htmldb/wwv_flow.accept HTTP-404 wwv_flow.accept: SIGNATURE (parameter names) MISMATCH VARIABLES IN FORM NOT IN PROCEDURE: P_T02XXX NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM:
Allerdings hat der Entwickler oft keinen Zugang zum Applikationsserver. Aber auch hier gibt es eine Lösung ohne jedes mal auf den Applikationsserver zugreifen zu müssen. Es muss nur folgendes Codestück in das dads.conf/marvel.conf File eintragen werden:
Location /pls/apex> ... PlsqlErrorStyle DebugStyle ...
Mit dieser mod_plsql Konfiguration bekommen Sie eine aussagekräftige Fehlermeldung direkt im Browser angezeigt ohne weiterhin in Log Dateien nachsehen zu müssen. Mehr Information über den “PlsqlErrorStyle” gibt es auch in der Oracle Dokumentation.
Achtung: Diesen Tipp sollten Sie aus Sicherheitsgründen nur auf Entwicklungssystemen anwenden!
Bei Verwendung von Oracle XE mit EPG:
Wenn Sie mit einer Oracle XE Datenbank arbeiten, gibt es weder einen Applikationsserver von dem man log-Files auslesen kann, noch ein mod_plsql File welches konfiguriert werden kann. Aber mit XE wird die DBMS_EPG Schnittstelle mitgeliefert mit der dies möglich ist. Mit folgendem Aufruf in SQL erhalten wir für eine XE Datenbank die aussagekräftige Fehlermeldung wieder im Browser sofort angezeigt:
SQL>exec dbms_epg.set_dad_attribute('APEX', 'error-style', 'DebugStyle');
Wenn diese Einstellung nicht mehr gewünscht wird, kann sie natürlich wieder rückgängig gemacht werden:
SQL>exec dbms_epg.delete_dad_attribute('APEX', 'error-style');
Das sollte uns doch das Fehlersuchen wesentlich leichter machen!
Danke an Patrick Wolf und Dietmar Aust für diesen wertvollen Tipp.


Das is doch kein richtige Losung! Die wirkliche Losung wurde mich mehr interessieren.
Der genannte Lösungsansatz behebt natürlich nicht alle Probleme, hilft aber bei der eigentlichen Fehlersuche weiter.
Erst durch das Sichtbarmachen des tatsächlichen Fehlers kann die Ursache für das gerade anliegende Problem gefunden und behoben werden.