Seit einiger Zeit ist die neue Oracle ORDS Version 23.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 :-) …
- Installation
- Prüfung im OS
- Silent Installation (Unix)
- Weitere Datenbank in ORDS eintragen (Unix)
- Silent Installation (Win)
- Zusätzliche Datenbank in ORDS eintragen (win)
- Prüfungen Im Betriebssystem
- Prüfungen in der Datenbank
- Gängige Fehler des ORDS
Laden Sie die Software von Oracle herunter und packen Sie das ZIP File in einem eigenen Ordner aus.
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
]
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
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
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
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
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.
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
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 apex241 secret db.password
Unsere Ordnerstruckur für den Ords sieht wie folgt aus:
Fehler 404 DispatcherNotFoundException
Hier war ein falscher Eintrag in der pool.xml Datei (unter Windows z.B. unter c:\oracle\ords\databases) schuld.
Der Parameter plsql.gateway.mode muss auf proxied stehen!
Für Windows:
set ORDS_HOME=c:\oracle\ords
set ORDS_CONFIG=c:\oracle\ords
%ORDS_HOME%\bin\ords --config %ORDS_CONFIG% config set plsql.gateway.mode proxied
Für Unix
export ORDS_HOME=/opt/oracle/ords
export ORDS_CONFIG=/opt/oracle/ords
$ORDS_HOME/bin/ords --config $ORDS_CONFIG config set plsql.gateway.mode proxied
Mehr Tipps & Tricks erfahren Sie in unserem Oracle ORDS und im APEX II Kurs. Wir freuen uns auf Sie!