Dann musste man nur noch den HTTP-Port anpassen und öffnen, im Browser “http://<-host-name>:<http-port>/apex” eingeben und los ging's.
Für DBAs, die nur "mal kurz" eine kleine APEX-Anwendung einrichten wollten, war die Einstiegsschwelle damit sehr niedrig.
Das änderte sich mit der APEX-Version 20.2. Beim Versuch, auf einer Oracle-19c-Test-Datenbank auf Windows 10 APEX zu installieren, bekam ich eine Fehlermeldung
@apex_epg_config.sql e:\Oracle\stage
SP2-0310: Datei "apex_epg_config.sql" konnte nicht geöffnet werden
Das war kein Bug, sondern ein Feature, wie sich nach kurzer Suche in der Doku für APEX 20.2 herausstellte (siehe https://docs.oracle.com/en/database/oracle/application-express/20.2/htmig/installing-and-configuring-apex-and-ords.html#GUID-8EE981AD-B1F9-46C2-BB5A-C9FE60CCD4AA)
"6.1.2 Deprecated Web Listeners
As of this release, support for the following web listeners is deprecated:
• Oracle HTTP Server (mod_plsql)
• Embedded PL/SQL Gateway
In the future, Application Express will only support Oracle REST Data Services."
Damals bin ich einfach auf das ältere APEX 20.1 umgestiegen, aber inzwischen sind wir ja schon bei APEX 23.2 und ich habe mehr Zeit zum Basteln. Deshalb startete ich einen neuen Versuch, diesmal auf einer 21cXE, wieder auf Windows.
Dazu holte ich mir folgende "Zutaten":
- apex_23.2_en.zip (https://download.oracle.com/otn_software/apex/apex_23.2.zip)
- ords-23.4.0.346.1619.zip (https://download.oracle.com/otn_software/java/ords/ords-latest.zip)
- jdk-21_windows-x64_bin.exe (https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe)
- apache-tomcat-9.0.86.exe (https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87-windows-x64.zip).
Bei der Installation habe ich unklugerweise das Experimentieren angefangen und alles versaut. Dass ich jetzt ein funktionsfähiges APEX besitze, verdanke ich allein Marco Patzwahl von Muniqsoft Training, der das Chaos auf meiner Windowskiste komplett beseitigt hat, während ich daneben saß und staunte.
Nochmal Tausend Dank dafür, Marco!!!
Ich will hier nicht die 100ste Anleitung zur APEX-Installation schreiben, sondern nur das auflisten, was ich bei meinen Experimenten und Marcos Reparatur gelernt habe.
1. APEX-Installation
APEX in einer CDB zu installieren, sollte laut Doku zwar möglich sein, führte bei mir aber dazu, dass der Bildschirm mit Debug-Meldungen geflutet wurde und die Installation hängen blieb.
Also immer erst in die PDB wechseln und dann das Install-Skript aufrufen:
ALTER SESSION SET container=xyz;
@apexins.sql apex_tbs apex_tbs temp /i/
2. ORDS-Installation
Die hat sich ja seit der Version 22 grundlegend geändert.
Für die Installation unter Windows gibt es zum Beispiel Tipps bei Tim Hall (siehe https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-installation-on-tomcat-windows) und bei Muniqsoft (siehe https://www.muniqsoft-training.de/ords/oracle/r/muso_training/schulung/tipp-index → ORDS
Empfehlungen:
- Verwenden Sie wie empfohlen, einen dedizierten Ordner für die ORDS-Konfiguration
- Installieren Sie auch ORDS in der PDB
- Geben Sie bei der Installation den Hostnamen oder die IP-Adresse an, die im Listener eingetragen ist, nicht localhost.
- Verwenden Sie ansonsten die Defaults
- Wenn Sie doch experimentieren wollen, erstellen Sie im ORDS-Ordner einen Ordner für Logs und geben ihn mit der Option --log-folder <Pfad> bei der Installation an
Der Aufruf für die Installation sähe dann so aus:
E:\ords>ords --config e:\ords\config install
ORDS: Release 23.4 Produktion am Mi. Apr. 10 16:26:06 2024
..…
Geben Sie eine Zahl zur Auswahl des Installationstyps ein
[1] ORDS nur in der Datenbank installieren oder upgraden
[2] Datenbankpool erstellen oder aktualisieren und ORDS in der Datenbank installieren/upgraden
[3] Nur Datenbankpool erstellen oder aktualisieren
Choose [2]:
Geben Sie eine Zahl zur Auswahl des zu verwendenden Datenbankverbindungstyps ein.
[1] Basis (Hostname, Port, Servicename)
[2] TNS (TNS-Alias, TNS-Verzeichnis)
[3] Benutzerdefinierte Datenbank-URL
Choose [1]:
Geben Sie den Hostnamen der Datenbank ein [localhost]: Windowskiste
Listener-Port der Datenbank eingeben [1521]:
Datenbankservicename eingeben [orcl]: xepdb1
Geben Sie einen Datenbankbenutzernamen mit Administratorberechtigungen an.
Geben Sie den Administratorbenutzernamen ein: sys
Datenbankkennwort für SYS AS SYSDBA eingeben:....
Geben Sie den Default Tablespace für ORDS_METADATA und ORDS_PUBLIC_USER ein [SYSAUX]:
Geben Sie den Temporary Tablespace für ORDS_METADATA und ORDS_PUBLIC_USER ein [TEMP]:
Geben Sie eine Zahl ein, um zusätzliche Features zum Aktivieren auszuwählen:
[1] Datenbankaktionen (aktiviert alle Features)
[2] REST-fähige SQL und Datenbank-API
[3] REST-fähige SQL
[4] Datenbank-API
[5] Kein Wert
Choose [1]:
Geben Sie eine Zahl zum Konfigurieren und Starten von ORDS im Standalone-Modus ein.
[1] ORDS im Standalone-Modus konfigurieren und starten
[2] Überspringen
Choose [1]: 2
Die Konfigurationsdatei im XML-Format finden Sie dann unter
“<Config-Ordner>\databases\default\pool.xml”
Tragen Sie in der Datei pool.xml folgende Zeilen ein, um den Debug-Modus zu aktivieren:
<entry key="debug.debugger">true</entry>
<entry key="debug.printDebugToScreen">true</entry>
<entry key="log.logging">true</entry>
<entry key="log.maxEntries">500</entry>
Sie können die Inhalte der Datei auch über folgenden Befehl abfragen.
ords --config <Config-Ordner> config list
Eine Warnung:
Ich habe versucht, ORDS als Standalone-Webserver zu konfigurieren und dabei durch noch Verlinkung des APEX-Images-Ordner bei der Installation Platz zu sparen.
Das ging gründlich schief.
Geben Sie eine Zahl zum Konfigurieren und Starten von ORDS im Standalone-Modus ein.
[1] ORDS im Standalone-Modus konfigurieren und starten
[2] Überspringen
Choose [1]:
.....
Geben Sie das Speicherort der statischen APEX-Ressourcen ein: E:\apex\images
Die Konfiguration sah dann folgendermaßen aus:
e:\ords>ords --config e:\ords\config config list
..…
→ Siehe Tabelle rechts oben (zum Vergrößern bitte anklicken)
Sieht eher merkwürdig aus!
Wenn man dann spaßeshalber den standalone.context.path manuell auf E:\ords setzt, kann der Standalone-Server nicht mehr starten, weil die Pfade intern verkettet werden.
Bad PathResource: file:/e:/ords/E/:apex/images java.nio.file.InvalidPathException: Illegal char <:> at index 10:
3. Tomcat-Installation
Hier gibt's einen schönen Artikel von Tim Hall (siehe https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-installation-on-tomcat-windows). Tipps zum Troubleshooting findet man dann wieder bei Muniqsoft.
Hier nur ein paar Ergänzungen aus meiner Session mit Marco.
Ohne den Debug-Modus ist man bei der Fehlersuche ziemlich aufgeschmissen.
Wenn Fehlermeldungen wie ...InternalServerException [statusCode=500... auftauchen, empfiehlt es sich, ORDS neu zu installieren. Nach der Reparatur der ORDS-Installation kamen wir dann zunächst nur auf die ORDS-Landing-Page, aber nicht weiter.
Bei der Fehlersuche hilft manchmal der Einbau von Fehlern, in unserem Fall die Angabe eines falschen Hostnames in der Datei pool.xml. Wenn man dann keine Meldung à la The Network Adapter could not establish the connection bekommt, kann Oracle nicht auf die Verbindungsdaten zugreifen.
Sobald die ORA-DBA-Gruppen ebenfalls Vollzugriff auf die Datei hatten (bei der 21c Express Edition sind das ORA_DBA und ORA_OraDB21Home1_SVCACCTS) und der Hostname wieder berichtigt war, klappte die Verbindung.
Fazit:
- Alles ist einfacher, wenn man die richtigen Leute kennt!
- Oracle und Windows sind keine gute Kombination und das wird auch sicher nicht besser. Unter Linux macht die Installation von APEX und ORDS (und auch fast allem anderen) einfach weniger Ärger.
- Für den wirklich "schnellen" Einstieg in APEX bieten sich die Pre-Built Developer VMs an. Die laufen auch unter Windows 11.
Elke Fritsch
DOAG Themenverantwortliche Tuning



