Skip to Main Content

 

Auswahl  

Oracle ORDS 22.x Installation und Fehlerbehebung / ORDS Troubleshooting 

Oracle
APEX:ORDS
ORDS 22.2:ORDS 23.1:ORDS 23.2
15.03.23 (MP)
12.03.24(MP)
Oracle, ORDS 22.x/23.x , Installation

Passende Schulungen zum Thema

Seit nun fast einem Jahr (Mai 2022)  ist die neue Oracle ORDS Version 22.x zum Download verfügbar. Wie heisst ein berühmtes Zitat: Mann muss in einem System jeden Fehler gemacht haben um das System verstanden zu haben.         
Na dann sind wir kurz davor alles zu wissen :-) …

  1. Installation
  2. Prüfung im OS
  3. Silent Installation (Unix)
  4. Weitere Datenbank in ORDS eintragen (Unix)
  5. Silent Installation (Win)
  6. Zusätzliche Datenbank in ORDS eintragen (win)
  7. Prüfungen Im Betriebssystem
  8. Prüfungen in der Datenbank
  9. Gängige Fehler des ORDS

1. Installation

Laden Sie die Software von Oracle herunter und packen Sie das ZIP File in einem eigenen Ordner aus.      

 

2. Prüfung im OS

   
Prüfen Sie nun Ihre installierte Java Version:

Unix / Linux

java --version
    java 11.0.16.1 2022-08-18 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)
                                    

Das sieht gut aus … OpenJDK wird offiziell von Oracle nicht unterstützt und kann Probleme verursachen! Verwenden Sie Java 11 oder Java 17

Windows:

java.exe --version
    openjdk 11 2018-09-25
    OpenJDK Runtime Environment 18.9 (build 11+28)
    OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

Das ist schlecht, weil Oracle unterstützt wie gesagt keine Java OpenJDK Version. KEINE !         
Es kann funktionieren, bei uns trat meist ein Webserver Fehler 500 auf (ohne große Begründung)         
Unterstützt werden nur die Oracle Java Versionen 11 und 17.

Nach erfolgreicher Installation der Oracle Java Version gehen Sie in den ausgepackten Ordner (z.B. cd c:\temp\ords)

Dort sollte ein “bin” Ordner liegen und da drin eine ords.exe und eine ords Datei

Tragen Sie Java in Ihren Pfad ein:

Windows:

set PATH=%PATH%;"C:\Program Files\Java\jdk-11\bin"

UNIX:

export PATH=$PATH:/usr/bin/

Wenn Java in Ihrem Pfad eingetragen wurde, starten Sie die Installation mit:

Windows:
    bin/ords.exe --config c:\oracle\ords install

Tipp: Sie sollten auch nach der Installation des Ords das “bin” Verzeichnis des ORDS und die Datei ords.war nicht wegwerfen. Für nachtägliche Wartungsarbeiten benötigt man die Dateien eventuell nochmal. 
Sie können die Dateien z.B in den Hauptordner des Config-Verzeichnisses kopieren, also z.B. C:\oracle\ords für Windows, oder /opt/oracle für Linux.

Ab ORDS Version 22.2.x wird der Pfad für den Config Ordner beim Tomcat unter UNIX im Service File eingetragen:

cat /etc/systemd/system/tomcat.service:

…
    Environment="JAVA_HOME=/usr/lib/jvm/jre"
    Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Dconfig.url=/opt/oracle/ords"
…

 

Windows (wird im Tomcat (tomcat9w.exe) Eigenschaftsfenster Reiter “Java” im Bereich “Java Options” (nicht “Java 9 Options” !!!) eingetragen)

-Dconfig.url=c:\oracle\ords

Unix/Linux:

 bin/ords --config /opt/oracle/ords install

Interaktion mit dem Skript:

# bin/ords --config /opt/oracle/ords install
    ORDS: Release 23.4 Produktion am Mi. Dez 15 06:49:08 2023
    Copyright (c) 2010, 2023, Oracle.
    Konfiguration:/opt/oracle/ords/
    Der Konfigurationsordner /opt/oracle/ords enthält keine Konfigurationsdateien.
    Oracle REST Data Services - Interaktive Installation
    Geben Sie eine Zahl zur Auswahl des Installationstyps ein
    [1] ORDS nur in der Datenbank installieren oder upgraden
    [2] Datenbankpool erstellen oder aktualisieren und ORDS in der Datenbank installieren/upgraden
    [3] Nur Datenbankpool erstellen oder aktualisieren
    Choose [2]:
    Geben Sie eine Zahl zur Auswahl des zu verwendenden Datenbankverbindungstyps ein
    [1] Basis (Hostname, Port, Servicename)
    [2] TNS (TNS-Alias, TNS-Verzeichnis)
    [3] Benutzerdefinierte Datenbank-URL
    Choose [1]:
    Geben Sie den Hostnamen der Datenbank ein [localhost]: 172.30.30.141
    Listener-Port der Datenbank eingeben [1521]:
    Datenbankservicename eingeben [orcl]: apex222
    Geben Sie einen Datenbankbenutzernamen mit Administratorberechtigungen an.
    Geben Sie den Administratorbenutzernamen ein: sys
    Datenbankkennwort für SYS AS SYSDBA eingeben:
    Verbindung zu Datenbankbenutzer: SYS AS SYSDBA URL: jdbc:oracle:thin:@//172.30.30.141:1521/apex222 wird hergestellt
    Informationen werden abgerufen.
    Geben Sie den Default Tablespace für ORDS_METADATA und ORDS_PUBLIC_USER ein [SYSAUX]:
    Geben Sie den Temporary Tablespace für ORDS_METADATA und ORDS_PUBLIC_USER ein [TEMP]:
    Geben Sie eine Zahl ein, um zusätzliche Features zum Aktivieren auszuwählen:
     [1] Datenbankaktionen (aktiviert alle Features)
     [2] REST-fähige SQL und Datenbank-API
     [3] REST-fähige SQL
     [4] Datenbank-API
     [5] Kein Wert
    Choose [1]:
     Geben Sie eine Zahl zum Konfigurieren und Starten von ORDS im Standalone-Modus ein
     [1] ORDS im Standalone-Modus konfigurieren und starten
     [2] Überspringen
     Choose [1]: 2
     …
     INFO: 08:19:07 Validating objects for Oracle REST Data Services.
     VALIDATION: 08:19:07 Starting validation for schema: ORDS_METADATA
     VALIDATION: 08:19:07 Validating objects
     VALIDATION: 08:19:08 Validating roles granted to ORDS_METADATA and
     ORDS_PUBLIC_USER
     VALIDATION: 08:19:08 Validating ORDS Public Synonyms
     VALIDATION: 08:19:08 Total objects: 306, invalid objects: 0, missing objects: 0
     VALIDATION: 08:19:08     94  INDEX
     VALIDATION: 08:19:08      3  LOB
     VALIDATION: 08:19:08     15  PACKAGE
     VALIDATION: 08:19:08     14  PACKAGE BODY
     VALIDATION: 08:19:08      1  PROCEDURE
     VALIDATION: 08:19:08     52  PUBLIC SYNONYM
     VALIDATION: 08:19:08      1  SEQUENCE
     VALIDATION: 08:19:08     32  TABLE
     VALIDATION: 08:19:08     32  TRIGGER
     VALIDATION: 08:19:08     20  TYPE
     VALIDATION: 08:19:08      6  TYPE BODY
     VALIDATION: 08:19:08     36  VIEW
     VALIDATION: 08:19:08 Validation completed.
     INFO: 08:19:08 Completed validation for Oracle REST Data Services.
     PL/SQL-Prozedur erfolgreich abgeschlossen.
     Commit abgeschlossen.
     ------------------------------------------------------------
     Containername: APEX222
     Skripts für scheduler werden ausgeführt
     ------------------------------------------------------------
     …
     PL/SQL-Prozedur erfolgreich abgeschlossen.
     Commit abgeschlossen.
     2023-03-15T07:19:15.030Z INFO        Installation für Oracle REST Data Services Version 22.4.4.r0411526 wurde abgeschlossen. Verstrichene Zeit: 00:00:27.496
     [*** Informationen: Installation für Oracle REST Data Services Version 22.4.4.r0411526 wurde abgeschlossen. Verstrichene Zeit: 00:00:27.496
     ]
     ------------------------------------------------------------
     Containername: APEX222
     ------------------------------------------------------------
     [*** script: ords_configure_gateway.sql]
     Configured PL/SQL Gateway user APEX_PUBLIC_USER to be proxiable from
     ORDS_PUBLIC_USER
     PL/SQL-Prozedur erfolgreich abgeschlossen.
     2023-03-15T07:19:15.130Z INFO        Konfiguration von PL/SQL-Gatewaybenutzer für Oracle REST Data Services Version 22.4.4.r0411526 wurde abgeschlossen. Verstrichene Zeit: 00:00:00.95
     [*** Informationen: Konfiguration von PL/SQL-Gatewaybenutzer für Oracle REST Data Services Version 22.4.4.r0411526 wurde abgeschlossen. Verstrichene Zeit: 00:00:00.95
     ]

3. Silent Installation (Unix)

export DB_PORT=1521
    export DB_SERVICE=apex231
    export SYSDBA_USER=SYS
    export SYSDBA_PASSWORD=sys
    export ORDS_PASSWORD=ords
    export ORDS_HOME=/opt/oracle/ords
    export ORDS_CONFIG=/opt/oracle/ords
    export ORDS_LOGS=$ORDS_CONFIG/logs
    export PATH=$PATH:$ORDS_HOME/bin
ords --config $ORDS_CONFIG install \
    --log-folder $ORDS_LOGS \
    --admin-user $SYSDBA_USER \
    --db-hostname 127.0.0.1 \
    --db-port $DB_PORT \
    --feature-db-api true \ 
    --feature-rest-enabled-sql true \
    --feature-sdw true \
    --gateway-mode proxied \
    --gateway-user APEX_PUBLIC_USER \
    --proxy-user 

Zugriff dann im Browser via: http:server:8080/ords

4. oder neue Datenbank bzw. Alias zusätzlich in ORDS (Unix) eintragen:

ords --config $ORDS_CONFIG install \
    --db-pool $DB_SERVICE \
    --admin-user $SYSDBA_USER \
    --db-hostname 127.0.0.1 \
    --db-port $DB_PORT \
    --db-servicename $DB_SERVICE \
    --feature-db-api true \ 
    --feature-rest-enabled-sql true \
    --feature-sdw true \
    --gateway-mode proxied \
    --gateway-user APEX_PUBLIC_USER \
    --proxy-user 
     Zugriff dann via: http:server:8080/ords/$DB_SERVICE

5. Silent Installation unter Windows:

set DB_PORT=1521
    set DB_SERVICE=apex231
    set SYSDBA_USER=SYS
    set SYSDBA_PASSWORD=sys
    set ORDS_PASSWORD=ords
    set ORDS_HOME=c:\oracle\ords
    set ORDS_CONFIG=c:\oracle\ords
    set ORDS_LOGS=%ORDS_CONFIG%\logs
    set PATH=%PATH%;%ORDS_HOME%\bin
ords --config %ORDS_CONFIG% install ^ 
    --log-folder %ORDS_LOGS% ^
    --admin-user %SYSDBA_USER% ^
    --db-hostname 127.0.0.1 ^
    --db-port %DB_PORT% ^
    --db-servicename %DB_SERVICE% ^
    --feature-db-api true ^
    --feature-rest-enabled-sql true ^
    --feature-sdw true ^
    --gateway-mode proxied ^
    --gateway-user APEX_PUBLIC_USER ^
    --proxy-user 
    

6. Zusätzliche Datenbank oder Alias in ORDS eintragen (Windows)

ords --config %ORDS_CONFIG% install ^ 
    --log-folder %ORDS_LOGS% ^
    --db-pool %DB_SERVICE% ^
    --admin-user %SYSDBA_USER% ^
    --db-hostname 127.0.0.1 ^
    --db-port %DB_PORT% ^
    --db-servicename %DB_SERVICE% ^
    --feature-db-api true ^
    --feature-rest-enabled-sql true ^
    --feature-sdw true ^
    --gateway-mode proxied ^
    --gateway-user APEX_PUBLIC_USER ^
    --proxy-user 
    Zugriff dann im Browser via: http:server:80/ords/%DB_SERVICE%
    Hinweis: der Tomcat Dienst benötigt Leserechte im ORDS Config Verzeichnis !!!
    icacls %ORDS_CONFIG% /T /grant Benutzer:R

7. Prüfung im OS

Wir oben beschrieben muss die richtige Java Version installiert worden sein (Oracle Java 11 oder 17)         
Kann der config Ordner von Oracle/Tomcat Benutzer gelesen werden? Wenn nicht bitte Lese/Schreibrechte an die Dateien vergeben.

 

8. Prüfung in der Datenbank

Sind alle notwendigen Accounts NICHT gesperrt und stimmt das Passwort ?

select username,account_status,lock_date,expiry_date
    from dba_users
    where username like '%PUBLIC%';
    USERNAME                 ACCOUNT_STATUS     LOCK_DATE           EXPIRY_DATE        
    ------------------------ ------------------ ------------------- -------------------
    APEX_PUBLIC_USER         LOCKED             15.03.2023 07:57:59                    
    APEX_REST_PUBLIC_USER    OPEN                                   11.09.2024 08:08:32

Das schaut hier nicht gut aus, der Benutzer APEX_PUBLIC_USER ist gesperrt!.

Entsperren mittels:

ALTER USER apex_public_user ACCOUNT UNLOCK IDENTIFIED BY <mein_geheimes_passwort>;

Danach starten wir dem TomCat nochmal durch.

Windows:

net stop TomCat9
net start TomCat9

Für den Fall, dass Sie das Passwort vom ORDS_PUBLIC_USER in der DB geändert haben und das im ORDS nachtragen möchten:

Für den Default Pool: (wenn der Config Ordner unter /opt/oracle/ords liegt)

ords --config /opt/oracle/ords config --db-pool default secret db.password

Für einen anderen Pool (hier apex231)

ords --config /opt/oracle/ords config --db-pool apex231 secret db.password

 

Fehlermeldung: Benutzer oder Kennwort für den Verbindungspool namens |default|lo| ist ungültig oder abgelaufen, oder der Account wurde gesperrt 

Die naheliegenden Lösungen wären natürlich:

  • Passwort falsch
  • Account abgelaufen

aber in unserem Fall war die Datenbank (pluggable Database Container) im restricted Modus:

Die Lösung war:

alter pluggable database <containername> close immediate;
alter pluggable database <containername> open;

 

Fehlermeldung: Service Unavailable

ORDS_Fehler_503.jpeg

HTTP Status Code: 503

Request ID: bI7hBYBLvXJ1aZXhH61iMA

Request Timestamp: 2023-10-21T08:58:05.233483445Z

Das Datenbankkennwort-Secret fehlt in dem mit dem Pool |default|lo| verknüpften Wallet


Hier fehlt das Passwort für den ORDS_PUBLIC_USER, oder es ist veraltet oder abgelaufen. 
Die Lösung unter LINUX ist, das Wallet mit dem Passwort neu anzulegen mittels:

cd /opt/oracle/ords
    REM dort liegt der Ordner bin aus der Installtion des ORDS!, wenn nicht, gehen Sie bitte in den entsprechenden Ordner
    sudo bin/ords --config /opt/oracle/ords config secret db.password
    REM zweimal das Passwort eingeben
    REM wenn Sie noch weitere Pools besitzen, muss auch hier das Passwort geöndert werden (Pool-Name apex231)
    sudo bin/ords --config /opt/oracle/ords config --db-pool apex231 secret db.password
    REM TomCat durchstarten
    sudo systemctl restart tomcat

 

Für Windows würde die Lösung so aussehen:

cd c:\oracle\ords
    bin\ords --config c:\oracle\ords config --db-pool default secret db.password
    bin\ords --config c:\oracle\ords config --db-pool apex231 secret db.password

Unsere Ordnerstruckur für den Ords sieht wie folgt aus:

ORDS_Ordner.png

 

Mehr Tipps & Tricks erfahren Sie in unserem Oracle ORDS und im APEX II Kurs. Wir freuen uns auf Sie!