Auswahl  

 

Oracle
APEX
APEX 5.0:APEX 5.1:APEX 18.1
ORDS, ords.war, APEX, Installation, Oracle REST Data Services
05.07.18
MP
30.07.18
MP

Body

Nachdem wir in den letzten Jahren schon viele Male den Ords installiert haben und in diverse Probleme gelaufen sind, wird es Zeit hier mal etwas Licht ins Dunkel zu bekommen... :-)

1. Wie installiert man die Java-Applikation "ords.war"?

Zuerst muss wie immer die neueste Version heruntergeladen werden.

Idealerweise hat man bereits eine JDK Version 1.8 (wir hatten mit 1.9 und ords 18.1 ein paar Probleme...) installiert.

Vorbereitung: Wir richten ein config-Verzeichnis für die folgende Installation ein:

Windows:
java -jar ords.war configdir c:\app

 

Linux:
java -jar ords.war configdir /u01/app

Achtung: Dann wird dort bei der Installation ein Verzeichnis "ords/" angelegt mit folgendem Inhalt:

  • conf (Verzeichnis)
  • defaults.xml

Die Datei "defaults.xml" besteht z.B. aus folgenden Zeilen:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Saved on Thu Jul 05 06:20:04 CEST 2018</comment>
<entry key="cache.caching">false</entry>
<entry key="cache.directory">/tmp/apex/cache</entry>
<entry key="cache.duration">days</entry>
<entry key="cache.expiration">7</entry>
<entry key="cache.maxEntries">500</entry>
<entry key="cache.monitorInterval">60</entry>
<entry key="cache.procedureNameList"/>
<entry key="cache.type">lru</entry>
<entry key="db.hostname">localhost</entry>
<entry key="db.port">1521</entry>
<entry key="db.servicename">o12c2</entry>
<entry key="debug.debugger">false</entry>
<entry key="debug.printDebugToScreen">false</entry>
<entry key="error.keepErrorMessages">true</entry>
<entry key="error.maxEntries">50</entry>
<entry key="jdbc.DriverType">thin</entry>
<entry key="jdbc.InactivityTimeout">1800</entry>
<entry key="jdbc.InitialLimit">3</entry>
<entry key="jdbc.MaxConnectionReuseCount">1000</entry>
<entry key="jdbc.MaxLimit">10</entry>
<entry key="jdbc.MaxStatementsLimit">10</entry>
<entry key="jdbc.MinLimit">1</entry>
<entry key="jdbc.statementTimeout">900</entry>
<entry key="log.logging">false</entry>
<entry key="log.maxEntries">50</entry>
<entry key="misc.compress"/>
<entry key="misc.defaultPage">apex</entry>
<entry key="security.disableDefaultExclusionList">false</entry>
<entry key="security.maxEntries">2000</entry>
<entry key="security.requestValidationFunction">wwv_flow_epg_include_modules.authorize</entry>
<entry key="security.validationFunctionType">plsql</entry>
</properties>

Falls Sie https einsetzen und beim Aufruf einer Seite in Google Chrome erhalten Sie die Fehlermeldung:

The Request cannot be processed because this resource doest not support Cross Origin Sharing request...

Dafür gibt es auch ein MOS Doc:

403 Forbidden Error" When Trying To Access The Apex Application Configured with ORDS 3.0.4 Or Higher Using the Google Chrome Browser
(Doc ID 2139195.1)

dann sollten Sie als Lösung zusätzlich noch folgenden Parameter in die Datei defaults.xml eintragen:

<entry key="security.forceHTTPS">true</entry>

Interssant sind in der Datei die folgenden Parameter für das Debugging (bitte ggf. von "false" auf "true" setzen):

<entry key="debug.debugger">true</entry>
<entry key="debug.printDebugToScreen">true</entry>

Mögliche Parameter (Auswahl) beim Aufruf von "ords.war":

Hilfe ausgeben:

java -jar ords.war help

Config Verzeichnis vorab angeben:

java -jar ords.war configdir <path>

Oracle Rest Data Service installieren:

java -jar ords.war install

Datenbank Verbinding einrichten:

java -jar ords.war setup

ORDS_METADATA,, Proxy Benutzer und zugehörige Objekte deinstallieren:

java -jar ords.war uninstall

ORDS Konfiguration prüfen:

java -jar ords.war validate

Kommen wir zur Installation von ORDS:

Folgende Vorüberlegungen / Vorbereitungen sollten Sie machen:

1. Welche Datenbank soll am Applicationserver (Tomcat) angebunden werden (Hostname/IP, Portnummer, Instanzname)?
2. Welche Passwörter möchten Sie verwenden für die Benutzer APEX_PUBLIC_USER, APEX LISTENER, APEX_REST_PUBLIC_USER)?

Hinweis: Ein bereits vorhandener APEX_PUBLIC_USER berkommt nur ein neues Passwort, wird aber nicht automatisch entsperrt!

java -jar ords.war
Name des Datenbankservers eingeben [localhost]:
Listener-Port der Datenbank eingeben [1521]:
1 eingeben, um den Servicenamen der Datenbank anzugeben, oder 2, um die Datenbank-SID anzugeben [1]:
Datenbankservicename eingeben:o12c2
Datenbankkennwort für ORDS_PUBLIC_USER eingeben:***
Kennwort bestätigen:***
Erfordert SYS AS SYSDBA, um das Oracle REST Data Services-Schema zu verifizieren.
Datenbankkennwort für SYS AS SYSDBA eingeben:***
Kennwort bestätigen:***
Informationen werden abgerufen.
Geben Sie 1 ein, wenn Sie das PL/SQL-Gateway verwenden möchten, oder 2, um diesen Schritt zu überspringen.
Wenn Sie Oracle Application Express verwenden oder eine Migration von mod_plsql durchführen, müssen Sie 1 eingeben [1]:
Datenbankkennwort für APEX_PUBLIC_USER eingeben:***
Kennwort bestätigen:***
Geben Sie 1 ein, um Kennwörter für Application Express RESTful Services-Datenbankbenutzer anzugeben (APEX_LISTENER, APEX_REST_PUBLIC_USER), oder 2, um diesen Schritt zu überspringen [1]:
Datenbankkennwort für APEX_LISTENER eingeben:***
Kennwort bestätigen:***
Datenbankkennwort für APEX_REST_PUBLIC_USER eingeben:***
Kennwort bestätigen:***
Jul 05, 2018 6:20:04 AM
INFORMATION: Updated configurations: defaults, apex, apex_pu, apex_al, apex_rt
Oracle REST Data Services Version 18.2.0.r1831332 wird installiert
... Logdatei in C:\Users\vaiomarco\ords_install_core_2018-07-05_062004_00605.log geschrieben
... Datenbankvoraussetzungen wurden verifiziert
... Oracle REST Data Services-Schema wurde erstellt
... Oracle REST Data Services-Proxybenutzer wurde erstellt
... Berechtigungen für Oracle REST Data Services wurden erteilt
... Oracle REST Data Services-Datenbankobjekte wurden erstellt
... Logdatei in C:\Users\vaiomarco\ords_install_datamodel_2018-07-05_062017_00179.log geschrieben
... Logdatei in C:\Users\vaiomarco\ords_install_apex_2018-07-05_062019_00485.log geschrieben
Installation für Oracle REST Data Services Version 18.2.0.r1831332 wurde abgeschlossen. Verstrichene Zeit: 00:00:17.460

Nun wurde die "ords.war" Datei konfiguriert und muss MANUELL in folgendes Verzeichnis kopiert werden:

Windows:
C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps

 

Linux:
/opt/tomcat*/webapps

Wenn Sie den Applicationserver (Tomcat) durchgestartet haben, sollte er aus dem "ords.war" einen Ordner "ords" mit einigen Unterordnern angelegt haben.

Verzeiuchnisse des ORDS

2. Troubleshooting / Fehlerbehebung von ORDS-Problemen:

ORDS 404 Fehler

Der Klassiker ... ein "404 not Found"-Fehler. Wir schalten mal das Debugging ein (siehe oben) und starten Tomcat durch.

ORDS DEBUG 404

Na, das ist doch gleich viel besser :-) "Could not find any dispatcher to handle request..." heisst also u.a. APEX_PUBLIC_USER Account ist nicht offen:

Wir prüfen das Mal:

SELECTusername,account_status,lock_date from dba_users
WHERE username like 'APEX%'
OR username like 'ORDS%'
OR username like 'FLOWS%'
OR username ='ANONYMOUS'
order by 1;
USERNAME ACCOUNT_STATUS LOCK_DATE
ANONYMOUS OPEN  
APEX_INSTANCE_ADMIN_USER EXPIRED  
APEX_LISTENER OPEN  
APEX_PUBLIC_USER LOCKED 05.07.2018 07:46:00
APEX_REST_PUBLIC_USER OPEN  
APEX_050100 EXPIRED & LOCKED 24.03.2018 14:27:52
APEX_180100 EXPIRED & LOCKED 29.06.2018 06:25:44
FLOWS_FILES EXPIRED & LOCKED 29.06.2018 06:25:45
ORDS_METADATA EXPIRED & LOCKED 05.07.2018 06:20:06
ORDS_PUBLIC_USER OPEN  
ORDSYS EXPIRED & LOCKED 08.03.2017 17:06:16

Na da haben wir ja den Schuldigen: APEX_PUBLIC_USER ist gesperrt.

ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;

Vergessen Sie nicht nach jeder Änderung, den Applicationserver (Tomcat) durchzustarten!

2. Problem: Die Bilder-/ CSS-/ Java-Script-Dateien fehlen, oder liegen im falschen Verzeichnis.

APEX Fehlende Bilder

Prüfen Sie bitte, ob ein Ordner mit Namen "i" im Verzeichnis .. tomcat/WebApps/ROOT liegt, ansosnten könnte die Seite (weil die CSS-Dateien nicht geladen werden) so aussehen:

APEX Fehler ohne CSS

Wenn dann aber die Bilder-/ CSS-/ Java-Script-Dateien an richtiger Stelle liegen, haben wir zur Belohnung die Anmeldemaske:

APEX Anmeldung

3. Es kommt die Fehlermeldung, dass die Version der Bilder, nicht zur Version von APEX passt.

Da muss einfach der Browser Cache geleert werden.

4. Die "ords.war"-Datei funktioniert in Verbindung mit Tomcat einfach nicht:

Prüfen Sie die Konsistenz der Datei mit:

java -jar ords.war validate

Dann sollte folgende Ausgabe erscheinen:

Name des Datenbankservers eingeben [localhost]:
Listener-Port der Datenbank eingeben [1521]:
Datenbankservicename eingeben [o12c2]:
Erfordert SYS AS SYSDBA, um das Oracle REST Data Services-Schema zu verifizieren.
Datenbankkennwort für SYS AS SYSDBA eingeben:
Kennwort bestätigen:
Informationen werden abgerufen.
Oracle REST Data Services wird validiert.
Oracle REST Data Services-Schemaversion 18.2.0.r1831332 wird validiert
... Logdatei in C:\Users\vaiomarco\ords_validate_core_2018-07-05_082720_00677.log geschrieben
Validierung der Oracle REST Data Services-Version 18.2.0.r1831332 wurde abgeschlossen. Verstrichene Zeit: 00:00:03.937

Sie können natürlich auch noch die dazugehörige Log-Datei analysieren. Da sollte dann z.B. u.a. folgendes zu finden sein:

INFO: 08:27:22 Validating objects for Oracle REST Data Services.
VALIDATION: 08:27:22 Starting validation for schema: ORDS_METADATA
VALIDATION: 08:27:22 Validating objects
VALIDATION: 08:27:23 Validating ORDS Public Synonyms
VALIDATION: 08:27:24 Total objects: 259, invalid objects: 0
VALIDATION: 08:27:24     72  INDEX
VALIDATION: 08:27:24      1  JOB
VALIDATION: 08:27:24     11  PACKAGE
VALIDATION: 08:27:24     11  PACKAGE BODY
VALIDATION: 08:27:24     43  PUBLIC SYNONYM
VALIDATION: 08:27:24      1  SEQUENCE
VALIDATION: 08:27:24     14  SYNONYM
VALIDATION: 08:27:24     27  TABLE
VALIDATION: 08:27:24     26  TRIGGER
VALIDATION: 08:27:24     19  TYPE
VALIDATION: 08:27:24      6  TYPE BODY
VALIDATION: 08:27:24     28  VIEW
VALIDATION: 08:27:24 Validation completed.
INFO: 08:27:24 Completed validating objects for Oracle REST Data Services.

Zu guter letzt: Ein Problem, was mir vier Wochen Suche beschert hat. Wir hatten bei der Installation von ORDS immer das Problem, dass sich die Installation an einer Stelle aufgehängt hatte. Sie hing ca. 15 min und stüzte dann ab mit " IO Error: Connection reset by Peer".
Das Problem war, dass Java auf unserem System (CentOS 7) mit "/dev/random" nicht genügend viele Zufallszahlen berechnen konnte und stattdessen "/dev/urandom" nehmen musste.

Dazu müssen Sie bei der Installation folgendes zuätzlich angeben:

java -Djava.security.egd=file:///dev/urandom -jar ords.war

Allerdings kann man auch dem Pool der Zufallszahlen von "/dev/random" etwas mehr Entropie verleihen und daher weiterhin "/dev/random" nutzen. Dazu installiert man sich ein entsprechendes Tool:

yum install haveged
systemctl enable haveged; systemctl start haveged;

 

So, das war es mit einer Kurzübersicht :-) zur Installation und Troubleshooting. Weitere Tipps erhalten Sie in einem unserer beliebten APEX-Kurse.