=====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**
{{ :prog:apex:ords_multiple_database_v02.png?800 | Multiple Tomcat instances with Oracle ORDS}}
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**
{{ :prog:apex:ords_multiple_database_v01.png?800 | Oracle ORDS Multi Pooling}}
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 ** 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 ** 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
====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 m( 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
true
true
Logging einschalten:
true
500
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 ====
* https://smartdogservices.com/single-ords-install-multiple-databases/
* https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-configure-multiple-databases
* http://json-rest-oracledb.blogspot.de/2015/08/rest-services-viele-datenbanken-eine.html
ORDS Übersicht
* http://www.opal-consulting.de/downloads/presentations/2015-06-ODTUG-KScope-ORDS-in-production/daust.settingUpOrds.pdf