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 :-) …
- 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
1. Installation
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 …
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 keine Java JDK 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 Oracle Java Version gehen Sie in deen 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 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.
Sie können die Datein z.B in den Hauptordner des Config 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"
…
Unix/Linux:
bin/ords --config /opt/oracle/ords install
Interaktion mit dem Skript:
# bin/ords --config /opt/oracle/ords install
ORDS: Release 22.4 Produktion am Mi. März 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 via: http:server:8080/ords
4. oder neue Datenbank 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 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 via: http:server:80/ords/%DB_SERVICE%
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 gelesen werden? Wenn nicht bitte Lese/Schreibrechte 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 apex;
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;
Mehr Tipps & Tricks erfahren Sie in unserem Oracle ORDS und im APEX 2 Kurs. Wir freuen uns auf Sie!