Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_rest_data_service_multiple_databases

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
prog:oracle_rest_data_service_multiple_databases [2017/05/16 08:16]
gpipperr [Fehler - 404 Not Found The request could not be mapped to any database]
prog:oracle_rest_data_service_multiple_databases [2017/05/16 10:28] (aktuell)
gpipperr [ORDS überprüfen]
Zeile 1: Zeile 1:
 +=====Oracle ORDS 3.0 (Oracle REST Data Services) für mehrere APEX Datenbank Instancen betreiben=====
  
 +**<fc #800000>Aufgabe</fc>: 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
 +
 +<fc #008000>Vorteil:</fc> Trennung der Applikationen 
 +
 +<fc #800000>Nachteil:</fc> 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
 +
 +<fc #008000>Vorteil:</fc> Effektiver mit den Ressourcen der Maschine umgehen
 +<fc #800000>Nachteil:</fc> URL Mapping will gerade bei mir überhaupt nicht so wie beschrieben .-(
 +
 +
 +
 +----
 +
 +
 +===ORDS überprüfen ===
 +
 +Wo liegt das Konfigurationsverzeichnis mit **java -jar .\ords.war configdir**?
 +
 +<code powerschell>
 +java -jar .\ords.war configdir
 +
 +Mai 15, 2017 10:11:12 PM
 +INFO: The config.dir value is C:\oracle\ords
 +
 +</code>
 +
 +Sind die Metadaten des ORDS alle gültig und passt DB und ORDS Version zusammen mit **
 +java -jar .\ords.war validate**:
 +
 +<code powershell>
 +
 +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
 +</code>
 +
 +
 +----
 +
 +====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
 +
 +<code powershell>
 + java -jar .\ords.war setup --database gpi2
 +# alle Dialoge ausfüllen
 +</code>
 +
 +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:
 +<code powershell>
 +java -jar .\ords.war map-url --type base-path --workspace-id INTERNAL /gpi2 gpi2
 +</code>
 +
 +Eine Datei "url-mapping.xml" wird erzeugt
 +
 +<code xml>
 +<?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>
 +</code>
 +
 +====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 <nowiki>http://localhost:9090/ords/gpi2/</nowiki> aufzurufen. Darauf achten das am Ende auch der **/** nicht vergessen wird!
 +
 +
 +<code>
 +[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]]
 +</code>
 +
 +
 +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
 +<code xml>
 +<entry key="debug.debugger">true</entry>
 +<entry key="debug.printDebugToScreen">true</entry>
 +</code>
 +
 +Logging einschalten:
 +<code xml>
 +<entry key="log.logging">true</entry>
 +<entry key="log.maxEntries">500</entry>
 +</code>
 +
 +
 +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:
 +
 +<code sql>
 +select * from ords_metadata.apex_pool_config;
 +</code>
 +
 +
 +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
"Autor: Gunther Pipperr"
prog/oracle_rest_data_service_multiple_databases.txt · Zuletzt geändert: 2017/05/16 10:28 von gpipperr