====Oracle ORDS und APEX 22/23 auf den neuesten Stand halten - Upgrade APEX / ORDS/ Tomcat / Apache unter Linux====
**Aufgabe**
Eine Apache/Tomcat/ORDS/APEX 22/23 Umgebung unter Oracle Linux soll auf den neusten Stand gehoben werden.
Die Installation wurde zu vor nach folgenden Muster durchgeführt => [[prog:oracle_apex_20_2_install_windows_19c_linux_8|Oracle Apex 21.1 / ORDS 21.2 / Tomcat 9 / Apache 2.4 mit der Oracle Datenbank 19c unter Oracle Linux 8 - Installation]]
Betriebsystem:
* Oracle Linux 8
Datenbank:
* Oracle Datenbank 19c => https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
Web Produktstack:
* Apache Webserver
* Apache Tomcat 9
* Oracle ORDS => https://www.oracle.com/database/technologies/appdev/rest.html
* Oracle APEX => https://www.oracle.com/tools/downloads/apex-downloads.html
Architektur Übersicht:
{{ :prog:apex:apex_apache_tomcat_ords_overview.png | Oracle APEX mit Oracle Apache / Tomcat / ORDS }}
----
** ab ORDS 22 **
Mit dem ORDS in der Version 22 hat sich der Upgrade Prozess etwas geändert, ein neues Tool soll/kann die Konfiguration erleichterten.
Zuvor alles in APEX und ORDS definierten Rest Service sicheren (PL/SQL Export der Service Definitionen durchführen!
Ablauf:
* Aktuelle Versionen ermitteln
* Backup Eigenentwicklung
* Backup der ORDS / APEX Rest API Definition (falls im Einsatz) als PL/SQL Skript erstellen
* Backup der bisherigen ORDS Konfiguration
* Ermitteln aller Passwörter der ORDS/APEX User in der DB wie ORDS_PUBLIC_USER,APEX_PUBLIC_USER
* Backup alle APEX Applikationen und der Workspaces
* Snapshot des Applikationsservers anlegen
* Start Downtime 1
* Betriebssystem und Apache http upgraden; reboot
* Java aktualisieren
* Apache Tomcat aktualisieren
* Test APEX App - Muss noch funktionieren da keine Änderung am Oracle Stack bis zu diesem Punkt!
* ORDS aktualisieren
* Rest Service testen und bei Bedarf neu anlegen
* Ende Downtime 1
* Test Rest API und APEX
* Start Downtime 2
* ORDS stoppen
* APEX in Datenbank upgraden
* APEX Statische Ressourcen wie Bilder und Java Skripte / CSS Libs austauschen
* APEX Patch in DB einspielen und auch statische Objekte aktualisieren
* ORDS Start
* Test
* Ende Downtime 2
----
==== Vorbereitung ====
Prüfen welche Versionen im Einsatz sind:
**Java :**
/usr/bin/java -version
java version "21.0.1" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
**Apache http:**
apachectl -v
Server version: Apache/2.4.37 (Oracle Linux)
Server built: Oct 24 2023 23:52:21
**Apache tomcat:**
/srv/tomcat/tomcat/bin/version.sh
..
Server version: Apache Tomcat/9.0.83
Server built: Nov 9 2023 20:57:42 UTC
Server number: 9.0.83.0
..
**ORDS Version vor 22:**
# in das ORDS Home wechseln
cd /srv/ords/ords
/usr/bin/java -jar ords.war version
Oracle REST Data Services 20.4.3.r0501904
**ORDS Version ab 22:**
./bin/ords --version
Oracle REST Data Services 23.3.0.r2891830
**APEX Version**
# an der DB mit sys anmelden
# falls Container DB auf den richtigen Container achten!
select * from DBA_REGISTRY WHERE COMP_ID = 'APEX';
Oracle Application Express
20.2.0.00.20
#Patch Stand:
select patch_version, installed_on from apex_patches;
PATCH_VERSION INSTALLED_ON
------------------------------ ----------------------------------------------------------------------------
2021.03.21 2021-03-27 17:20:43
**APEX Image Dir**
Eine wichtige Frage in einer Umgebung ist auch der Wert des Image Prefix, besonders wenn die statischen Ressourcen zum Beispiel vom Apache HTTP ausgeliefert werden sollen.
Dann muss dazu ja auch das passende Alias angelegt sein und dort müssen später die statischen Dateien angepasst werden!
Die Information ist im Package **wwv_flow_image_prefix** als Konstante hinterlegt und lässt sich im Sourcecode einsehen.
----
==== Backup APEX und ORDS Rest API ====
=== ORDS Rest API ===
Sichern über den SQL*Developer bzw. SQLCl oder SQL*Plus.
siehe dazu auch => https://www.thatjeffsmith.com/archive/2018/12/how-to-export-your-restful-services/
=== SQLcl ===
Download über https://www.oracle.com/de/database/sqldeveloper/technologies/sqlcl/download/
Bei Java Fehler zuvor ein JAVA_HOME setzen!
export JAVA_HOME=/usr/lib/jvm/jdk-19-oracle-x64
sql / as sysdba
help rest
REST
------
Use REST to export/import modules or list objects from Oracle REST Data Services.
REST export - Export all modules
REST export - Export a specific module
REST export - Export a specific module related to the given prefix
REST modules - List the available modules
REST privileges - List the existing privileges
REST schemas - List the available schemas
REST import - Imports a swagger 2.0 or openapi 3.0 swagger file.
It will return skeleton calls that can recreate a
similar service in ORDS.
REST schemas
PARSING_SCHEMA PATTERN STATUS
-------------- ------- -------
GPI gpi ENABLED
REST modules
NAME PREFIX STATUS ITEMS_PER_PAGE
---- ------ ------ --------------
xxxx
#Mit spool und REST export exportieren
=== Backup APEX ===
siehe z.B. => [[prog:apex_export_source_code_and_git|Oracle Apex Source Code automatisch exportieren und einchecken mit Git unter Windows mit der PowerShell]]
----
==== Betriebssystem und Apache http upgraden ====
OS Update als root:
#alles
dnf upgrade
#oder nur den HTTPd
dnf upgrade httpd.x86_64
apachectl -v
Server version: Apache/2.4.37 (Oracle Linux)
Server built: Aug 5 2022 04:59:17
----
----
====Java aktualisieren====
Hier kann nun Oracle Java eingesetzt werden da der ORDS zum Einsatz kommen soll und nur für diese Oracle Produkt Java verwendet wird.
Notwendige Java Version prüfen und JDK nach Bedarf installieren.
!Achtung! Nur wenn Java auch ausschließlich mit Oracle Produkten verwendet wird! Lizenzbedingungen beachten!!
Siehe dazu die Node => Support Entitlement for Java SE When Used As Part of Another Oracle Product (Doc ID 1557737.1)
** Als User root! **
Kopieren jdk-21_linux-x64_bin.rpm von https://www.oracle.com/java/technologies/downloads/ und installieren:
cd /tmp
https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.rpm
# sha256 checksum prüfen
#67d89edc87326c80f94efeb8970860053700170ddea1d900e8c0a7461e858e57 von der Webseite
67d89edc87326c80f94efeb8970860053700170ddea1d900e8c0a7461e858e57 jdk-22_linux-x64_bin.rpm
# Java installieren
dnf install --nogpgcheck jdk-22_linux-x64_bin.rpm
# Java aktivieren
# Neue Java Version dem OS bekannt geben
/usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk-22.0.2 2202
# Versionen anzeigen
/usr/sbin/alternatives --display java
# Version einstellen
/usr/sbin/alternatives --config java
# Version /usr/lib/jvm/jdk-22-oracle-x64/bin/java auswählen
# testen
java -version
java version "21.0.1" 2023-10-17 LTS
# alte Java Version deinstallieren
dnf list installed java*
dnf erase java-11-openjdk.x86_64 java-11-openjdk-headless.x86_64
# älter JDK's wieder deinstallieren
dnf list installed jdk*
#
dnf remove jdk-21.x86_64
Das Programm jps sollte auf dem Server im Pfad liegen/funktionieren, ist sehr hilfreich für die Wartung
Nach einem Java Upgrade muss das Kommando jps evlt. wieder neu verlinkt werden:
#testen ob notwendig, in 15.0 hat es aber mit alternatives richtig geklappt
jps -m
# falls fehler
# über /usr/bin verlinken
rm /usr/bin/jps
ln -s /usr/java/jdk-21-oracle-x64/bin/jps /usr/bin/jps
----
----
====Apache Tomcat Upgrade====
Im Zuge des Upgrades ist es sehr sinnvoll auch per Verlinkung auf eine generische Datei Struktur umzustellen.
D.h. die Installation von Tomcat findet in ein Verzeichnis mit der Versionsnummer statt, die Konfiguration aber in einem generischen Tomcat Verzeichnis, über eine Verlinkung wird das zusammen "verwoben".
Das hat den Vorteil das bei einem Update nur der Link angepasst werden muss, die bestehende Konfiguration verbleibt unverändert.
Siehe zur Grundsturuktur die eigentliche Installation unter [[prog:oracle_apex_20_2_install_windows_19c_linux_8#tomcat9|Oracle Apex 21.1 / ORDS 21.2 / Tomcat 9 Installation]]
Software über => https://tomcat.apache.org/download-90.cgi herunterladen.
Tomcat Sofware installieren:
su - tomcat
cd /srv/tomcat
mkdir install
cd install
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
sha512sum apache-tomcat-9.0.83.tar.gz
3f022ec8552bce1b72eb85d0778c93052ccb00226de3302544ec844ab93a9991e19c2db56ed06c18f03e5d75f34a46cedac46ae83bdd225518a55c62fc69ea04 apache-tomcat-9.0.83.tar.gz
# mit dem Key der Webseite vom Tomcat vergleichen um sicher zu sein das alles auch da und unverändert ist!
# in dieser Verzeichnis auspacken
cd ..
mkdir apache-tomcat-9.0.83
tar xzf ./install/apache-tomcat-9.0.83.tar.gz
#aber dann neu verlinken!
rm /srv/tomcat/tomcat
ln -s /srv/tomcat/apache-tomcat-9.0.83/ /srv/tomcat/tomcat
#prüfen
cd /srv/tomcat/tomcat/bin
./version.sh
Server version: Apache Tomcat/9.0.83
Server built: Jul 14 2022 12:28:53 UTC
!Achtung mit Java 18 haben sich einige Memory Parameter geändert!
Siehe dazu auch https://www.oracle.com/java/technologies/javase/8-compatibility-guide.html
..
The command line flags PermSize and MaxPermSize have been removed and are ignored
Replace -XX:MaxPermSize with -XX:MaxMetaspaceSize.
..
D.h. wir müssen unseren vorherigen Einstellung unter /etc/systemd/system/tomcat.service anpassen!
vi /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat - instance
After=syslog.target network.target dbora.service
[Service]
Type=forking
User=tomcat
Group=tomcat
WorkingDirectory=/srv/tomcat/config
Environment="JAVA_HOME=/usr/java/latest"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Dconfig.url=/srv/ords/config"
Environment="CATALINA_PID=/srv/tomcat/config/run/tomcat.pid"
Environment="CATALINA_BASE=/srv/tomcat/config"
Environment="CATALINA_HOME=/srv/tomcat/tomcat"
Environment="CATALINA_OPTS=-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -server -XX:+UseParallelGC"
ExecStart=/srv/tomcat/tomcat/bin/startup.sh
ExecStop=/srv/tomcat/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Und für die neue **ORDS 22** Konfiguration den Parameter **"-Dconfig.url=/srv/ords/config"** mit aufnehmen!
Als root service neu starten und prüfen
systemctl stop tomcat.service
systemctl daemon-reload
systemctl start tomcat.service
systemctl status tomcat.service
Teste ob noch ein Anmelden am APEX Workspace möglich ist, bisher haben wir die eigentliche ORDS/APEX Welt ja noch nicht angepasst, an diesem Punkt sollte noch alles funktionieren!
----
====ORDS aktualisieren====
Im nächsten Schritt kann der Update des ORDS durchgeführt werden als der User oracle.
Hierbei ist zu beachten:
* Bisherige ORDS Konfiguration sichern - wird so nicht mehr verwendet und muss neu erzeugt werden falls zuvor der ORDS < 22
* In einer reinen APEX Umgebung Keine Feature installieren um nicht unnötige Sicherheitslücken zu erzeugen
* bin/ords Script für die Konfigurtion verwenden
* Pfad zur Config muss über Java Option an Tomcat übergeben werden, Start Skripte müssen angepasst werden
=== Software bereitstellen ===
Dazu die aktuelle Version herunterladen und mit der Versionsnummer in ein eigenes Verzeichnis entpacken.
Über https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/ die Version 22.2.1.202.1302 - July 28, 2022 des ORDS herunterladen.
Checksum prüfen, ob diese mit der Website angegebenen übereinstimmt:
sha1sum ords-latest.zip
b6c1f847714453f4053583e96d8a52bff40bfe92 ords-latest.zip
Auspacken als User "oracle" und wieder neu verlinken:
su - oracle
mkdir -p /srv/ords/ords-23.3.0
#Auspacken
unzip /srv/install/ords-latest.zip -d /srv/ords/ords-23.3.0
# verlinken
rm /srv/ords/ords
ln -s /srv/ords/ords-23.3.0/ /srv/ords/ords
Version prüfen:
cd /srv/ords/ords/bin
./ords --version
ORDS: Release 23.3.0 Production on Tue Sept 13 15:51:02 2022
Copyright (c) 2010, 2023, Oracle.
Configuration:
/srv/ords/ords-23.3.0/bin/
Oracle REST Data Services 23.3.0.r2021302
=== Konfiguration sichern und neues Verzeichnis zur Verfügung stellen ===
Unsere Konfiguration liegt schon extra außerhalb der ORDS Software unter "/srv/ords/config".
Diese erstmal sichern:
/srv/ords
cp -r config/ config_ords_20
mv config config_old
mkdir config
Vor 22 wurde dieser Pfad im War File hinterlegt, aber der Version 22 muss der Pfad extra als Variable beim Aufruf
mit übergeben werden! Parameter "export _JAVA_OPTIONS=-Dconfig.url=/srv/ords/config"
=== ORDS Meta Repository in der DB upgraden und DB Pool Konfiguration neu erzeugen ===
Aufruf des Upgardes mit dem ORDS Kommandozeilen Tool unter $ORDS_HOME/bin:
cd /srv/ords/ords/bin
./ords --config /srv/ords/config/ install -i
ORDS: Release 22.2 Production on Tue Sept 13 16:13:36 2022
Copyright (c) 2010, 2022, Oracle.
Configuration:
/srv/ords/config/
The configuration folder /srv/ords/config does not contain any configuration files.
Oracle REST Data Services - Interactive Install
Enter a number to select the type of installation
[1] Install or upgrade ORDS in the database only
[2] Create or update a database pool and install/upgrade ORDS in the database
[3] Create or update a database pool only
Choose [2]: 2
Enter a number to select the database connection type to use
[1] Basic (host name, port, service name)
[2] TNS (TNS alias, TNS directory)
[3] Custom database URL
Choose [1]: 1
Enter the database host name [localhost]: 10.10.10.90
Enter the database listen port [1521]: 1521
Enter the database service name [orcl]: SRV_GPIDB_MAIN
Provide database user name with administrator privileges.
Enter the administrator username: sys
Enter the database password for SYS AS SYSDBA:
Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//10.10.10.90:1521/SRV_GPIDB_MAIN
Retrieving information.
Connecting to database user: ORDS_PUBLIC_USER url: jdbc:oracle:thin:@//10.10.10.90:1521/SRV_GPIDB_MAIN
Enter a number to select additional feature(s) to enable:
[1] Database Actions (Enables all features)
[2] REST Enabled SQL and Database API
[3] REST Enabled SQL
[4] Database API
[5] None
Choose [1]: 5
Enter a number to configure and start ORDS in standalone mode
[1] Configure and start ORDS in standalone mode
[2] Skip
Choose [1]: 2
The setting named: db.connectionType was set to: basic in configuration: default
The setting named: db.hostname was set to: 10.10.10.90 in configuration: default
The setting named: db.port was set to: 1521 in configuration: default
The setting named: db.servicename was set to: SRV_GPIDB_MAIN in configuration: default
The setting named: plsql.gateway.mode was set to: proxied in configuration: default
The setting named: db.username was set to: ORDS_PUBLIC_USER in configuration: default
The setting named: db.password was set to: ****** in configuration: default
The setting named: feature.sdw was set to: false in configuration: default
The global setting named: database.api.enabled was set to: false
The setting named: restEnabledSql.active was set to: false in configuration: default
The setting named: security.requestValidationFunction was set to: wwv_flow_epg_include_modules.authorize in configuration: default
2022-09-13T16:16:24.818Z INFO Upgrading Oracle REST Data Services schema 20.4.3.r0501904 to version 22.2.1.r2021302 in NON_CDB
------------------------------------------------------------
Date : 13 Sept 2022 16:16:24
Release : Oracle REST Data Services 22.2.1.r2021302
Type : ORDS Upgrade from 20.4.3.r0501904 to 22.2.1.r2021302
Database : Oracle Database 19c Enterprise Edition
DB Version : 19.9.1.0.0
------------------------------------------------------------
Container Name: NON_CDB
------------------------------------------------------------
...
[*** Info: Completed updating database password for ORDS_PUBLIC_USER. Elapsed time: 00:00:00.78
]
Erzeugte Konfiguration anzeigen lassen:
./ords --config /srv/ords/config/ config list
ORDS: Release 22.2 Production on Tue Sept 13 16:45:51 2022
Copyright (c) 2010, 2022, Oracle.
Configuration:
/srv/ords/config/
Database pool: default
Setting Value Source
---------------------------------- -------------------------------------- -----------
database.api.enabled false Global
db.connectionType basic Pool
db.hostname 10.10.10.90 Pool
db.password ****** Pool Wallet
db.port 1521 Pool
db.servicename SRV_GPIDB_MAIN Pool
db.username ORDS_PUBLIC_USER Pool
feature.sdw false Pool
plsql.gateway.mode proxied Pool
restEnabledSql.active false Pool
security.requestValidationFunction wwv_flow_epg_include_modules.authorize Pool
== Konfiguration anpassen / tunen ==
Was lässt sich konfigurieren:
./ords --config /srv/ords/config/ config info
..
z.B. Pool Größen anpassen mit jdbc.MaxLimit auf 50 ,jdbc.MinLimit auf 10 ,jdbc.InitialLimit auf 10:
[oracle@apex01:bin ]$ ./ords --config /srv/ords/config/ config set jdbc.MaxLimit 50
ORDS: Release 22.2 Production on Tue Sept 13 16:49:40 2022
Copyright (c) 2010, 2022, Oracle.
Configuration:
/srv/ords/config/
The setting named: jdbc.MaxLimit was set to: 50 in configuration: default
./ords --config /srv/ords/config/ config set jdbc.MinLimit 10
./ords --config /srv/ords/config/ config set jdbc.InitialLimit 10
=== War File unter Tomcat austauschen ===
War File austauschen als User Tomcat:
#tomcat stoppen!
srvctl stop tomcat
# ----
cp /srv/ords/ords/ords.war /srv/tomcat/config/webapps/ords.war
ls -la /srv/tomcat/config/webapps/ords.war
-rw-r--r-- 1 tomcat tomcat 86737998 Sep 13 18:31 /srv/tomcat/config/webapps/ords.war
=== Config Pfad hinterlegen ===
==Für den Tomcat User für das Manuelle Starten des Tomcat==
Als user Tomcat:
su - tomcat
vi .bash_profile
..
export JAVA_OPTS="-Dconfig.url=/srv/ords/config"
..
==Für den Root User für den Tomcat Service ==
Als User Root die Service Definition von Tomcat anpassen:
vi /etc/systemd/system/tomcat.service
..
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Dconfig.url=/srv/ords/config"
..
Service neu einlesen:
systemctl daemon-reload
systemctl stop tomcat.service
systemctl start tomcat.service
systemctl status tomcat.service
#Log vom ersten Start prüfen
grep ords /srv/tomcat/config/logs/catalina.out
2022-09-13T16:31:24.951Z INFO Deploying web application archive [/srv/tomcat/config/webapps/ords.war]
2022-09-13T16:31:30.059Z INFO Deployment of web application archive [/srv/tomcat/config/webapps/ords.war] has finished in [5,107] ms
13-Sep-2022 18:32:51.444 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dconfig.url=/srv/ords/config
13-Sep-2022 18:32:52.654 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/srv/tomcat/config/webapps/ords.war]
config.url=/srv/ords/config
2022-09-13T16:33:00.887Z INFO Deployment of web application archive [/srv/tomcat/config/webapps/ords.war] has finished in [8,234] ms
----
====Rest Service testen und bei Bedarf neu anlegen===
Wie angekündigt sind die zuvor definierten Rest Service in einer Test Umgebung alles mit dem Upgrade gelöscht und müssen neu angelegt werden!
Allerdings habe in einer anderen produktiven Umgebung die Services überlebt ...
Also nicht vergessen zuvor auch ein Backup zu legen! Sicher ist sicher!
----
==== Upgrade von APEX ====
===Software bereitstellen ===
Aktuelle Version auf den DB Server herunterladen über https://www.oracle.com/tools/downloads/apex-downloads.html
Checksum prüfen und mit der Website vergleichen:
sha256sum apex-latest.zip
f3b79cedc8cc0b75a2eb8f5f9d96dbc62ba5104f6e45623235cae460a78b43eb apex-latest.zip
**Als User oracle**
Falls schon ein Verzeichnis apex exisitert, diese sichern:
su - oracle
mv /opt/oracle/product/apex /opt/oracle/product/apex20_1
Auspacken in eine frisches APEX Verzeichnis:
unzip /tmp/apex_latest.zip -d /opt/oracle/product/
=== Upgrade ===
siehe auch https://docs.oracle.com/en/database/oracle/apex/22.1/htmig/upgrading_from_previous_oracle_application_expressr_release.html
# db Umgebung setzen
# aus Container DB achten, hier noch eine NON CDB DB!
sqlplus / as sysdba
# falls cdp richtigen Container setzen!
# alter session set container=ans;
spool /tmp/install_apex.log
select * from DBA_REGISTRY WHERE COMP_ID = 'APEX';
Oracle Application Express
20.2.0.00.20
select patch_version, installed_on from apex_patches;
PATCH_VERSION INSTALLED_ON
------------------------------ ----------------------------------------------------------------------------
2021.03.21 2021-03-27 17:20:43
select username,default_tablespace, temporary_tablespace from dba_users where username like 'APEX_2%';
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------
APEX_200200
SYSAUX TEMP
#@apexins.sql tablespace_apex tablespace_files tablespaces_temp images
@apexins.sql SYSAUX SYSAUX TEMP /i/
...
# 20 min später
...
spool off
exit
==Sprachpakete installieren==
Soll auch Deutsch in einer APP zum Einsatz kommen das deutsche Sprachpaket installieren, siehe auch [[prog:oracle_apex_german_deutsch|APEX Applikation in deutscher Sprache erstellen - Sprachpaket installieren]]
cd /opt/oracle/product/apex/builder/de
export NLS_LANG=American_America.AL32UTF8
sqlplus / AS sysdba
-- bei Bedarf Container setzen mit ALTER SESSION SET CONTAINER = FREEDB1;
@load_de.sql
=== Bilder/CSS/JavaScript updaten===
die Bilder/JavaScript/CCS Libs liegen unter /srv/apex/images/
als User root
/bin/cp -rf /opt/oracle/product/apex/images/ /srv/apex/
=== Probleme ===
**Problem 404 Not Found - The procedure named apex could not be accessed **
Im Catalina Log:
tail -f /srv/tomcat/config/logs/catalina.out
..
ProcedureForbiddenException [statusCode=404, logLevel=INFO, errorCode=ORDS-22001: The procedure named f could not be accessed or found Cause: The procedure may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access Action: Check the spelling of the procedure, check that the execute privilege has been granted to the caller and check the configured security.requestValidationFunction function]
..
Siehe Support Portal : ORDS-22001 After Upgrading Apex And Ords To 22.1 (Doc ID 2881783.1)
select * from ords_metadata.plsql_gateway_allow_list;
# Zeigt noch auf altes Scheam
#
#bereinigen mit:
begin
ords_admin.clear_plsql_gateway_procedures(p_owner => 'APEX_220100');
end;
/
als root Tomcat stoppen und neu starten:
systemctl stop tomcat.service
systemctl start tomcat.service
systemctl status tomcat.service
Funktioniert wieder!
----
==== Patch von APEX ====
Aktuellen Patch laden Patch Set Bundle for Oracle APEX 22.1 ( 34020981) vom Support Portal
unter https://support.oracle.com/epmos/faces/PatchDetail?patchId=34020981 .
PSE BUNDLE FOR APEX 22.1 (PSES ON TOP OF 22.1.0) (Patch)
p34020981_2210_Generic.zip 1.7 MB (1772530 bytes)
SHA-1 6F6325346A8A68DEDEBBE26A8A09DA385A462045
SHA-256 264B5CAAE9BA594CD4E845073792B2B53D3439221E7162284717B5EBE0843007
===APEX Patchen ===
Patch DB:
su - oracle
# Upload nach /opt/oracle/install/patch/
sha1sum /tmp/p35895964_2320_Generic.zip
f7741994ff1c32b43bade2e48a998b6b3ba60539 p32598392_2110_Generic.zip
cp /tmp/p35895964_2320_Generic.zip /opt/oracle/install/patch/
#einspielen als Oracle User und gesetzter Datenbank Umgebung
cd /opt/oracle/install/patch/
unzip p35895964_2320_Generic.zip
cd 35895964
#DB Umgebung setzen
#Zeichensatz setzen
export NLS_LANG=American_America.AL32UTF8
#Patch je nach Umgebung einspielen
# sqlplus "sys/ as sysdba" @catpatch.sql -- for Oracle Database 12.1 and newer, for non-CDB, for CDB where Oracle APEX is not installed in the root, and for PDB where APEX is not installed in the root
# sqlplus "sys/ as sysdba" @catpatch_con.sql -- for CDB where Oracle APEX is installed in the root
# sqlplus "sys/ as sysdba" @catpatch_appcon.sql -- for installations where Oracle APEX is installed in an application container
# in aktueller Umgebung
sqlplus "/ as sysdba" @catpatch.sql
sqlplus / as sysdba
@?/rdbms/admin/utlrp.sql
#Patch Stand prüfen
sqlplus / as sysdba
select patch_version, installed_on from apex_patches;
Statische Dateien kopieren als root
su -
cd /opt/oracle/install/patch/35895964
# mit dem \ orginal cp verwenden und nicht den alias um die Überschreiben nachfrage zu unterdrücken
\cp -rf images /srv/apex
#Patch Verzeichnis wieder aufräumen
rm -rf /opt/oracle/install/patch/35895964
----
----
Damit ist die System Umgebung auf den neusten Stand. Die Apps in Apex laufen aber alle noch im Compatible Modus, erst ein Upgrade der APP im Workspace aktiviert auch am Ende alle neuen Feature von APEX!
----
----
==== Bei Bedarf das ORDS Public User Passwort setzen ====
Darauf achten das nach 180 Tagen beim ORDS User nicht das Passwort abläuft! Auf das richtige Profile achten!
Auf die Zieldatenbank anmelden und das User Passwort setzen:
cd /oracle/product/sqlcl/22.4/bin
./sql "sys@//10.10.10.1:1521/GPIDB as sysdba"
ALTER USER ords_public_user IDENTIFIED BY " ACCOUNT UNLOCK;
User prüfen, ob er nicht nach 180 Tagen durch sein Profile nicht nach 180 Tage abläuft!
Password im ORDS Pool hinterlegen mit:
cd /srv/ords/ords/bin
./ords --config /srv/ords/config/ config --db-pool default secret db.password
ORDS: Release 22.4 Production on Wed Jan 11 13:10:43 2023
Copyright (c) 2010, 2023, Oracle.
Configuration:
/oracle/product/ords/config/
Enter the database password:
Confirm password:
The setting named: db.password was set to: ****** in configuration: default
----
==== Netzwerk ACLS auf den neuen APEX Owner umziehen ====
als sys prüfen was im Einsatz ist:
SELECT *
FROM DBA_NETWORK_ACLS
JOIN DBA_NETWORK_ACL_PRIVILEGES USING (ACL, ACLID);
Neu setzen mit z.b. auf den APEX Owner APEX_230200:
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'APEX_230200',
principal_type => xs_acl.ptype_db));
END;
/
----
==== Quellen ====
Web:
* https://www.thatjeffsmith.com/archive/2022/06/ords-22-1-1-upgrading-using-the-new-cli-and-installer/
* https://oracle-base.com/blog/2022/04/22/oracle-rest-data-services-ords-22-1-all-change/
* https://www.promatis.de/2022/07/13/lessons-learned-while-upgrading-apex-and-ords-to-22-1/
* https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-installation-on-tomcat-22-onward