Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_apex_upgrade

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 ⇒ 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:

Web Produktstack:

Architektur Übersicht:

 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 <module_name>    -      Export a specific module
             REST export <module_prefix>  -      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 <json_file_path> -      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

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 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 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 <PASSWORT aus dem Key Pass File >" 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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
prog/oracle_apex_upgrade.txt · Zuletzt geändert: 2024/08/01 13:43 von gpipperr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki