Inhaltsverzeichnis
Oracle ORDS 3.0 (Oracle REST Data Services) für mehrere APEX Datenbank Instancen betreiben
Aufgabe: Eine zentrale Serverumgebung soll für alle APEX Instanzen im Haus zuständig sein.
Lösung 1 - Ein Tomcat hält pro Datenbank eine eigene ORDS Umgebung
ORDS mehrfach unter verschiedenen WAR Namen in Tomcat aufsetzen
Ablauf:
- Im ORDS War Pfad zu den Bildern hinterlegen
- ORDS War in gewünschten Pfad umbenennen/kopieren wie „ordsAbteilungA.war“
- Konfig Directory pro Abteilung anlegen
- Konfig Directory im ORDS War hinterlegen
- Konfig für das „ordsAbteilungA.war“ anlegen
- War in den Tomcat kopieren und dort deployen
Vorteil: Trennung der Applikationen
Nachteil: Mehr Patch Aufwand bei einem ORDS Upgrade/Patch
Lösung 2 - Ein ORDS ist für mehrere Datenbanken (mit je eine APEX Instance) zuständig über mehrere Pools
Ablauf:
- Pool für die neue Datenbank anlegen
- URL Mapping definieren
Vorteil: Effektiver mit den Ressourcen der Maschine umgehen Nachteil: URL Mapping will gerade bei mir überhaupt nicht so wie beschrieben .-(
ORDS überprüfen
Wo liegt das Konfigurationsverzeichnis mit java -jar .\ords.war configdir?
java -jar .\ords.war configdir Mai 15, 2017 10:11:12 PM INFO: The config.dir value is C:\oracle\ords
Sind die Metadaten des ORDS alle gültig und passt DB und ORDS Version zusammen mit java -jar .\ords.war validate:
java -jar .\ords.war validate Enter the name of the database server [10.10.10.1]: Enter the database listen port [1521]: Enter the database service name [GPI]: Please login with SYSDBA privileges to verify Oracle REST Data Services schema. Enter the username with SYSDBA privileges to verify the installation [SYS]: Enter the database password for SYS: Confirm password: Oracle REST Data Services will be validated. Validating Oracle REST Data Services schema version 3.0.9.348.07.16 ... Log file written to C:\oracle\products\ords\logs\ords_validate_core_2017-05-15_220644_00629.log Completed validating Oracle REST Data Services version 3.0.9.348.07.16. Elapsed time: 00:00:03.450
Lösung 1 - Ein Tomcat hält pro Datenbank eine eigene ORDS Umgebung
Das ORDS WAR wird mehrfach unter verschiedenen WAR Namen in Tomcat deployed.
Jede Datenbank Verbindung läuft damit über einen eigenen Tomcat Container
Ablauf:
- Im ORDS War Pfad zu den Bildern hinterlegen
- ORDS War in gewünschten Pfad umbenennen/kopieren wie „ordsAbteilungA.war“
- Konfig Directory pro Abteilung anlegen
- Konfig Directory im ORDS War hinterlegen
- Konfig für das „ordsAbteilungA.war“ anlegen
- War in den Tomcat kopieren und dort deployen
- Apache Konfiguration prüfen und bei Bedarf anpassen
Lösung 2 - Ein ORDS ist für mehrere Datenbanken (mit je eine APEX Instance) zuständig über mehrere Pools
Pool für die neue Datenbank hinzufügen
mit java -jar .\ords.war setup –database <database_name> die neuen Pools anlegen
java -jar .\ords.war setup --database gpi2 # alle Dialoge ausfüllen
Nun werden im ords/conf/ Verzeichniss alle Pool Dateien mit „gpi2_“ angelegt.
URL Mapping definieren
Wie erfolgt das Mapping? Anzeige der Hilfe mit java -jar .\ords.war help map-url.
Mit java -jar .\ords.war map-url –type base-path –workspace-id INTERNAL <URL_PATH> <DB_POOLNAME> wird das Mapping angelegt:
java -jar .\ords.war map-url --type base-path --workspace-id INTERNAL /gpi2 gpi2
Eine Datei „url-mapping.xml“ wird erzeugt
<?xml version="1.0" encoding="UTF-8"?> <pool-config xmlns="http://xmlns.oracle.com/apex/pool-config"> <pool name="gpi2" base-path="/gpi2" workspace-id="INTERNAL" updated="2017-05-15T20:25:49.646Z"/> </pool-config>
Fehler - 404 Not Found The request could not be mapped to any database
Soweit die Theorie mit dem ORDS Multi Pooling ⇒ leider bekomme ich nur eine 404 wenn ich versuche die URL http://localhost:9090/ords/gpi2/ aufzurufen. Darauf achten das am Ende auch der / nicht vergessen wird!
[TE] url-mapping start: 2017-05-15T20:07:13.396Z duration: 184ms [TE] GET /ords/gpi2/ start: 2017-05-15T20:07:13.396Z duration: 185ms URLMappingNotFoundException [statusCode=404, reasons=[The request could not be mapped to any database. Check the request URL is correct, and that URL to database mappings have been correctly configured]]
Nun ist guter Rat teuer ….
Nach dem ersten Aufruf nur die Seite „404 Page Not found“ erhalten, hier läuft etwas falsch …..
Debugging / logging aktivieren über die default.xml
<entry key="debug.debugger">true</entry> <entry key="debug.printDebugToScreen">true</entry>
Logging einschalten:
<entry key="log.logging">true</entry> <entry key="log.maxEntries">500</entry>
Immer noch keine Lösung, bin noch weiter am Suchen, was hier für ein trivialer aber nerviger Fehler vorliegt.
Kontrolle der Metadaten des ORDS:
SELECT * FROM ords_metadata.apex_pool_config;
demnächst mehr
Quellen
ORDS Übersicht