Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_rest_data_service_multiple_databases

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

 Multiple Tomcat instances with Oracle ORDS

ORDS mehrfach unter verschiedenen WAR Namen in Tomcat aufsetzen

Ablauf:

  1. Im ORDS War Pfad zu den Bildern hinterlegen
  2. ORDS War in gewünschten Pfad umbenennen/kopieren wie „ordsAbteilungA.war“
  3. Konfig Directory pro Abteilung anlegen
  4. Konfig Directory im ORDS War hinterlegen
  5. Konfig für das „ordsAbteilungA.war“ anlegen
  6. 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

 Oracle ORDS Multi Pooling

Ablauf:

  1. Pool für die neue Datenbank anlegen
  2. 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:

  1. Im ORDS War Pfad zu den Bildern hinterlegen
  2. ORDS War in gewünschten Pfad umbenennen/kopieren wie „ordsAbteilungA.war“
  3. Konfig Directory pro Abteilung anlegen
  4. Konfig Directory im ORDS War hinterlegen
  5. Konfig für das „ordsAbteilungA.war“ anlegen
  6. War in den Tomcat kopieren und dort deployen
  7. 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 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

<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

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
prog/oracle_rest_data_service_multiple_databases.txt · Zuletzt geändert: 2017/05/16 10:28 von Gunther Pippèrr