====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 "15.0.2" 2021-01-19 Java(TM) SE Runtime Environment (build 15.0.2+7-27) Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing) **Apache http:** apachectl -v Server version: Apache/2.4.37 (Oracle Linux) Server built: Nov 4 2020 05:17:03 **Apache tomcat:** /srv/tomcat/tomcat/bin/version.sh .. Server version: Apache Tomcat/9.0.44 Server built: Mar 4 2021 21:49:34 UTC Server number: 9.0.44.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 **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 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm # Java installieren dnf install --nogpgcheck jdk-21_linux-x64_bin.rpm # Java aktivieren # Neue Java Version dem OS bekannt geben /usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk-21.0.1 2101 # Versionen anzeigen /usr/sbin/alternatives --display java # Version einstellen /usr/sbin/alternatives --config java # Version /usr/lib/jvm/jdk-21-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 # dnf list installed jdk* 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 [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 #after the db start After=dbora.service 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: 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 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: mv /opt/oracle/product/apex /opt/oracle/product/apex20_2 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 === 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 ===Patchen === Patch DB: # 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 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