=====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