Introduction
APEX and ORDS versions are tied together closely enough that upgrading one without the other usually isn't an option. In this guide, we'll upgrade Oracle APEX from 23.2 to 24.2, and ORDS from 22.3 to 25.2, on the same environment. Since ORDS 25.2 requires a newer JDK than what most 22.3 installs run on, we'll also upgrade Java to version 17 along the way.
Prerequisites
- Keep the
SYSuser password handy, you'll need it during both the APEX and ORDS installers. - Minimum Java 17 is required for ORDS 25.2.
- Take a full database backup before starting, in case you need to roll back.
Environment Used in This Guide
| Server | apex.oraeasy.com / 192.168.101.7 |
|---|---|
| APEX (current) | 23.2 |
| ORDS (current) | 22.3 |
| Database Name | APEXDB |
Download the Software
Part 1: Upgrade APEX
Step 1: Check Current APEX and ORDS Versions
Before touching anything, confirm the current versions of both APEX and ORDS, and note the existing IMAGE_PREFIX value, since you'll compare against it later if you hit the image directory issue covered further down.
SQL> col VERSION_NO for a20
SQL> col API_COMPATIBILITY for a20
SQL> col PATCH_APPLIED for a20
SQL> select * from apex_release;
VERSION_NO API_COMPATIBILITY PATCH_APPLIED
-------------------- -------------------- --------------------
23.2.0 2023.10.31 APPLIED
SQL> col NAME for a30
SQL> col VALUE for a60
SQL> select * from apex_instance_parameters where name='IMAGE_PREFIX';
NAME VALUE CREATED_O LAST_UPDA
---------------- ------------ --------- ---------
IMAGE_PREFIX /i/ 28-NOV-23 28-NOV-23
SQL> exit
[oracle@apex ~]$ cd /u01/app/ords/bin/
[oracle@apex bin]$ ./ords --version
2025-07-25T17:12:17.806Z INFO Your configuration folder /u01/app/ords/bin is located in ORDS product folder. Oracle recommends to use a different configuration folder.
ORDS: Release 22.3 Production on Fri Jul 25 17:12:17 2025
Copyright (c) 2010, 2025, Oracle.
Configuration:
/u01/app/ords/bin/
Oracle REST Data Services 22.3.3.r3111929
Step 2: Check Invalid Object Count and User Status
Taking a baseline invalid object count now gives you something to compare against after the upgrade, since recompiling APEX and ORDS packages temporarily invalidates a large number of objects. Also check the status of the APEX and ORDS related accounts so you know their current lock state before the upgrade changes them.
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*)
--------
508
SQL> select USERNAME,ACCOUNT_STATUS,EXPIRY_DATE,PROFILE from dba_users where USERNAME like '%ORDS%' or USERNAME like '%APEX%';
USERNAME ACCOUNT_STATUS EXPIRY_DA PROFILE
------------------------------ -------------------------------- --------- -------------------------
APEX_LISTENER LOCKED 21-NOV-23 DEFAULT
APEX_230100 OPEN DEFAULT
APEX_PUBLIC_USER OPEN 21-NOV-23 DEFAULT
APEX_REST_PUBLIC_USER LOCKED 21-NOV-23 DEFAULT
ORDS_METADATA OPEN DEFAULT
APEX_230200 OPEN DEFAULT
APEX_220100 LOCKED 21-NOV-23 DEFAULT
ORDSYS LOCKED 21-NOV-23 DEFAULT
ORDS_PUBLIC_USER OPEN ORDS_PUBLIC_USER_PROFILE
9 rows selected.
Step 3: Confirm the Existing URL Is Working
Before stopping any services, confirm the current ORDS URL is reachable. This gives you a known-good state to fall back to if something goes wrong mid-upgrade.
http://192.168.101.7:8080/ords/
Step 4: Stop the Existing ORDS Service
Both the running ORDS processes need to be stopped before we can upgrade APEX and swap in the new ORDS software. Identify the process IDs and kill them.
[oracle@apex bin]$ ps -ef|grep ords
oracle 17514 1 0 Jul21 ? 00:04:41 /u01/java/jdk-11.0.18/bin/java -Doracle.dbtools.cmdline.home=/u01/app/ords -Duser.language=en -Duser.region=IN -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dnashorn.args=--no-deprecation-warning -Doracle.dbtools.cmdline.ShellCommand=ords -Duser.timezone=UTC -jar /u01/app/ords/ords.war --config /etc/ords/config serve
oracle 18295 1 0 Jul21 ? 00:12:19 java -jar ords.war serve
oracle 19017 7299 0 22:56 pts/0 00:00:00 grep --color=auto ords
[oracle@apex bin]$ kill -9 17514
[oracle@apex bin]$ kill -9 18295
Step 5: Create a Directory and Place the APEX 24.2 Software
[oracle@apex app]$ mkdir apex242
[oracle@apex app]$ pwd
/u01/app/apex242
[oracle@apex software_dir]$ pwd
/u02/software_dir
[oracle@apex software_dir]$ unzip apex_24.2_en.zip -d /u01/app/apex242/
Step 6: Create a Tablespace
APEX 24.2 gets its own dedicated tablespace rather than reusing the 23.2 one, keeping the old and new versions cleanly separated on disk during the upgrade.
SQL> create tablespace apex242 datafile '/u01/app/oracle/oradata/APEXDB/datafile/apex242_01.dbf' size 2g autoextend on;
Tablespace created.
Step 7: Run the Installation Script
This is the core APEX upgrade step. Running apexins.sql with the new tablespace, temp tablespace, and image prefix installs APEX 24.2 into a fresh schema (APEX_240200) alongside the existing installation.
[oracle@apex ~]$ cd /u01/app/apex242/apex
[oracle@apex apex]$ ls -lrth apexins.sql*
-rw-r--r--. 1 oracle oinstall 1.6K Apr 22 22:15 apexins.sql
[oracle@apex apex]$ sqlplus / as sysdba
SQL> def
DEFINE _DATE = "26-JUL-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "APEXDB" (CHAR)
DEFINE _USER = "SYS" (CHAR)
DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1919000000" (CHAR)
DEFINE _EDITOR = "vi" (CHAR)
DEFINE _O_VERSION = "Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.19.0.0.0" (CHAR)
DEFINE _O_RELEASE = "1919000000" (CHAR)
SQL> @apexins.sql apex242 apex242 TEMP /i/
...set_appun.sql
PL/SQL procedure successfully completed.
...set_ufrom_and_upgrade.sql
PL/SQL procedure successfully completed.
Session altered.
FOO3
------------------------------
install2025-07-26_00-16-34.log
. ORACLE
.
. Oracle APEX Installation.
..........................................
.
...set_appun.sql
... Checking prerequisites (MANUAL)
.
. SYSDBA Privilege
. pass - Connection with SYSDBA privilege.
. Database rolling upgrade
. pass - No rolling upgrade.
. DB components
. pass - APEX: version=23.2.0
. pass - CATPROC: version=19.0.0.0.0
. pass - XDB: version=19.0.0.0.0
. XDB
. pass - is valid
. DB parameters
. pass - workarea_size_policy is AUTO
. PL/SQL Web Toolkit
. pass - version 11.2.0.0.1
. Tablespaces
. pass - found apex242
. pass - found apex242
. pass - found TEMP
. PHASES (1,2,3)...
PL/SQL procedure successfully completed.
....................................
....................................
Thank you for installing Oracle APEX 24.2.0
Oracle APEX is installed in the APEX_240200 schema.
The structure of the link to the Oracle APEX Administration Services is as follows:
http://host:port/ords/apex_admin
The structure of the link to the Oracle APEX development environment is as follows:
http://host:port/ords/apex
timing for: Phase 3 (Switch)
Elapsed: 0.57
timing for: Complete Installation
Elapsed: 7.98
SYS>
Step 8: Check the APEX Version
A quick check against apex_release confirms the installation completed and the database is now running APEX 24.2.0.
SQL> col VERSION_NO for a20
SQL> col API_COMPATIBILITY for a20
SQL> col PATCH_APPLIED for a20
SQL> select * from apex_release;
VERSION_NO API_COMPATIBILITY PATCH_APPLIED
-------------------- -------------------- --------------------
24.2.0 2024.11.30 APPLIED
Step 9: Run the Password Change and REST Config Scripts
These two scripts set the ADMIN password for the upgraded instance and configure the REST-related accounts. Keep whatever password you enter here safe, you'll need it to log in afterward.
SQL> @apxchpwd.sql
...set_appun.sql
========================================================================
This script can be used to change the password of an Oracle APEX
instance administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN]
User "ADMIN" exists.
Enter ADMIN's email [oraeasyy@gmail.com] oraeasyy@gmail.com
Enter ADMIN's password []
Changed password of instance administrator ADMIN.
SQL>
SQL> @apex_rest_config.sql
Enter a password for the APEX_LISTENER user []
Enter a password for the APEX_REST_PUBLIC_USER user []
...set_appun.sql
...setting session environment
...create APEX_LISTENER and APEX_REST_PUBLIC_USER users
...grants for APEX_LISTENER and ORDS_METADATA user
SQL>
Step 10: Unlock the APEX User
The new APEX_240200 schema comes out of the installer locked. Unlock it so ORDS and any direct connections can use it.
SQL> select username,account_status from dba_users where username like '%APEX%';
USERNAME ACCOUNT_STATUS
-------------------------------------------------- --------------------------------
APEX_LISTENER LOCKED
APEX_230100 OPEN
APEX_PUBLIC_USER OPEN
APEX_REST_PUBLIC_USER LOCKED
APEX_PUBLIC_ROUTER OPEN
APEX_230200 OPEN
APEX_220100 LOCKED
APEX_240200 LOCKED
SQL>
SQL> alter user APEX_240200 identified by Your@pass account unlock;
User altered.
SQL> select username,account_status from dba_users where username like '%APEX%';
USERNAME ACCOUNT_STATUS
-------------------------------------------------- --------------------------------
APEX_LISTENER LOCKED
APEX_230100 OPEN
APEX_PUBLIC_USER OPEN
APEX_REST_PUBLIC_USER LOCKED
APEX_PUBLIC_ROUTER OPEN
APEX_230200 OPEN
APEX_220100 LOCKED
APEX_240200 OPEN
That completes the APEX upgrade. Now let's move on to upgrading ORDS.
Part 2: Upgrade ORDS
Step 1: Back Up the ORDS Directory
Before touching the existing ORDS installation, keep a copy of it. If anything goes wrong during the uninstall or reinstall, you'll want this to fall back on.
[oracle@apex apex]$ cd /u01/app/ords
[oracle@apex app]$ cp -r ords ords_bkp_2507
[oracle@apex app]$ du -sh *
696M apex
747M apex23
818M apex232
651M apex242
260M audit
51G oracle
13M oraInventory
1.5G ords
1.5G ords_bkp_2507
Step 2: Uninstall the Existing ORDS
ORDS needs to be cleanly uninstalled from the database before the new version is installed, this removes the ORDS_METADATA and ORDS_PUBLIC_USER schemas and their objects so the new install starts from a clean state.
[oracle@apex ords]$ java -jar ords.war uninstall
Warning: Support for executing: java -jar ords.war has been deprecated.
Please add ords to your PATH and use the ords command instead.
Run the following command to add ords to your PATH:
echo -e 'export PATH="$PATH:/u01/app/ords/bin"' >> ~/.bash_profile
Start a new shell to pick up this change.
2025-07-25T19:03:59.630Z INFO Your configuration folder /u01/app/ords is located in ORDS product folder. Oracle recommends to use a different configuration folder.
ORDS: Release 22.3 Production on Sat Aug 200:33:59 2025
Copyright (c) 2010, 2025, Oracle.
Configuration:
/u01/app/ords/
Oracle REST Data Services - Interactive Uninstall
Enter a number to select the database pool to use or specify the database connection
[1] default jdbc:oracle:thin:@//192.168.101.7:1521/APEXDB
[2] Specify the database connection
Choose [1]: 1
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 url: jdbc:oracle:thin:@//192.168.101.7:1521/APEXDB
Retrieving information.
Uninstalling Oracle REST Data Services in NON_CDB
------------------------------------------------------------
Date : 26 Jul 2025 00:34:23
Release : Oracle REST Data Services 22.3.3.r3111929
Type : ORDS Uninstall
Database : Oracle Database 19c Standard Edition 2
DB Version : 19.19.0.0.0
------------------------------------------------------------
Container Name: NON_CDB
------------------------------------------------------------
[*** script: ords_alter_session_script.sql]
PL/SQL procedure successfully completed.
[*** script: ords_uninstall.sql]
Update schema status to UNINSTALLING
PL/SQL procedure successfully completed.
******************************************************
* INFO: REMOVING Oracle REST Data Services
******************************************************
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
drop user ORDS_METADATA
drop user ORDS_PUBLIC_USER
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Commit complete.
******************************************************
* INFO: Removed Oracle REST Data Services database objects
******************************************************
[*** script: ords_drop_app_contexts.sql]
PL/SQL procedure successfully completed.
[*** script: ords_drop_pub_synonyms.sql]
PL/SQL procedure successfully completed.
******************************************************
* INFO: Removed ORDS Public Synonyms
******************************************************
[*** script: ords_drop_database_roles.sql]
PL/SQL procedure successfully completed.
[*** script: ords_alter_session_script.sql]
PL/SQL procedure successfully completed.
Completed uninstall for Oracle REST Data Services. Elapsed time: 00:00:11.350
[*** Info: Completed uninstall for Oracle REST Data Services. Elapsed time: 00:00:11.350
]
[oracle@apex ords]$
Step 3: Remove the Old ORDS Directory and Unzip the New Software
[oracle@apex app]$ pwd
/u01/app/
[oracle@apex app]$ rm -rf ords
[oracle@apex app]$ mkdir ords
[oracle@apex software_dir]$ pwd
/u02/software_dir
[oracle@apex software_dir]$ unzip ords-latest.zip -d /u01/app/ords
Step 4: Place the Images Directory from APEX into the ORDS Directory
ORDS serves APEX's static images from this images folder, so it needs to exist under the new ORDS installation, otherwise you'll hit the image directory error covered later in this guide.
[oracle@apex dbs]$ cd /u01/app/apex242/
[oracle@apex apex]$ cp -r images /u01/app/ords/
Step 5: Upgrade Java
ORDS 25.2 requires Java 17. Extract the JDK and update your environment so the new version takes precedence on the PATH.
[oracle@apex app]$ mkdir java
[oracle@apex app]$ cd java/
[oracle@apex java]$ pwd
/u01/app/java
[oracle@apex java]$ ls -lrth
total 175M
-rw-r--r--. 1 oracle oinstall 175M Aug 2 00:56 jdk-17.0.12_linux-x64_bin.tar.gz
[oracle@apex java]$
[oracle@apex java]$ tar -xvf jdk-17.0.12_linux-x64_bin.tar.gz
[oracle@apex ~]$ vi .bash_profile
[oracle@apex ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
JAVA_HOME=/u01/app/java/jdk-17.0.12
export PATH=/u01/app/java/jdk-17.0.12/bin:$PATH.
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome
export ORACLE_SID=APEXDB
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
[oracle@apex ~]$ . .bash_profile
[oracle@apex ~]$ java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
Step 6: Create the Config Directory
[oracle@apex apex]$ cd /u01/app/ords
[oracle@apex ords]$ mkdir config
Step 7: Install ORDS
This is the interactive ORDS installer. Point it at the correct tablespace when prompted (option 4 below), rather than accepting the SYSAUX default, and cancel out once the standalone server starts automatically at the end, since we'll start it manually in a later step.
[oracle@apex ords]$ java -jar ords.war --config /u01/app/ords/config install
Warning: Support for executing: java -jar ords.war has been deprecated.
Please add ords to your PATH and use the ords command instead.
Run the following command to add ords to your PATH:
echo -e 'export PATH="$PATH:/u01/app/ords/bin"' >> ~/.bash_profile
Start a new shell to pick up this change.
2025-07-25T19:43:13.653Z WARNING Your configuration folder /u01/app/ords/config is located in ORDS product folder. Oracle recommends to use a different configuration folder.
Refer to Oracle REST Data Services Documentation on how to setup your configuration folder.
ORDS: Release 25.2 Production on Sat Aug 201:13:13 2025
Copyright (c) 2010, 2025, Oracle.
Configuration:
/u01/app/ords/config
The configuration folder /u01/app/ords/config does not contain any configuration files.
Oracle REST Data Services - Interactive Install
Created folder /u01/app/ords/config
Enter a number to select the TNS net service name to use from /u01/app/oracle/product/19.3/dbhome/network/admin/tnsnames.ora or specify the database connection
[1] APEXDB SERVICE_NAME=APEXDB
[S] Specify the database connection
Choose [1]: 1
Provide database user name with administrator privileges.
Enter the administrator username: sys
Enter the database password for SYS AS SYSDBA:
Retrieving information.
ORDS is not installed in the database. ORDS installation is required.
Enter a number to update the value or select option A to Accept and Continue
[1] Connection Type: TNS
[2] TNS Connection: TNS_NAME=APEXDB TNS_FOLDER=/u01/app/oracle/product/19.3/dbhome/network/admin
Administrator User: SYS AS SYSDBA
[3] Database password for ORDS runtime user (ORDS_PUBLIC_USER):
[4] ORDS runtime user and schema tablespaces: Default: SYSAUX Temporary TEMP
[5] Additional Feature: Database Actions
[6] Configure and start ORDS in Standalone Mode: Yes
[7] Protocol: HTTP
[8] HTTP Port: 8080
[9] APEX static resources location:
[A] Accept and Continue - Create configuration and Install ORDS in the database
[Q] Quit - Do not proceed. No changes
Choose [A]: 4
-- Provide tablespace as per need:
Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]: apex242
Enter the temporary tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [TEMP]: TEMP
Enter a number to update the value or select option A to Accept and Continue
[1] Connection Type: TNS
[2] TNS Connection: TNS_NAME=APEXDB TNS_FOLDER=/u01/app/oracle/product/19.3/dbhome/network/admin
Administrator User: SYS AS SYSDBA
[3] Database password for ORDS runtime user (ORDS_PUBLIC_USER):
[4] ORDS runtime user and schema tablespaces: Default: apex242 Temporary TEMP
[5] Additional Feature: Database Actions
[6] Configure and start ORDS in Standalone Mode: Yes
[7] Protocol: HTTP
[8] HTTP Port: 8080
[9] APEX static resources location:
[A] Accept and Continue - Create configuration and Install ORDS in the database
[Q] Quit - Do not proceed. No changes
Choose [A]: A
The setting named: db.connectionType was set to: tns in configuration: default
The setting named: db.tnsAliasName was set to: APEXDB in configuration: default
The setting named: db.tnsDirectory was set to: /u01/app/oracle/product/19.3/dbhome/network/admin 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: true in configuration: default
The global setting named: database.api.enabled was set to: true
The setting named: restEnabledSql.active was set to: true in configuration: default
The global setting named: standalone.http.port was set to: 8080
The global setting named: standalone.doc.root was set to: /u01/app/ords/config/global/doc_root
The setting named: security.requestValidationFunction was set to: ords_util.authorize_plsql_gateway in configuration: default
2025-07-25T19:43:52.989Z INFO Created folder /u01/app/ords/logs
2025-07-25T19:43:52.989Z INFO The log file is defaulted to the current working directory located at /u01/app/ords/logs
2025-07-25T19:43:53.052Z INFO Installing Oracle REST Data Services version 25.2.1.r1942034 in NON_CDB
2025-07-25T19:43:54.427Z INFO ... Verified database prerequisites
2025-07-25T19:43:54.986Z INFO ... Created Oracle REST Data Services proxy user
2025-07-25T19:43:55.454Z INFO ... Created Oracle REST Data Services schema
2025-07-25T19:43:55.955Z INFO ... Granted privileges to Oracle REST Data Services
2025-07-25T19:44:03.279Z INFO ... Created Oracle REST Data Services database objects
2025-07-25T19:44:18.302Z INFO Completed installation for Oracle REST Data Services version 25.2.1.r1942034. Elapsed time: 00:00:25.226
2025-07-25T19:44:18.337Z INFO Completed configuring PL/SQL gateway user for Oracle REST Data Services version 25.2.1.r1942034. Elapsed time: 00:00:00.34
2025-07-25T19:44:18.339Z INFO Log file written to /u01/app/ords/logs/ords_install_2025-07-26_011352_99004.log
2025-07-25T19:44:18.903Z INFO HTTP and HTTP/2 cleartext listening on host: 0.0.0.0 port: 8080
2025-07-25T19:44:18.935Z INFO Disabling document root because the specified folder does not exist: /u01/app/ords/config/global/doc_root
2025-07-25T19:44:18.935Z INFO Default forwarding from / to contextRoot configured.
2025-07-25T19:44:22.525Z INFO Configuration properties for: |default|lo|
db.connectionType=tns
db.tnsAliasName=APEXDB
db.tnsDirectory=/u01/app/oracle/product/19.3/dbhome/network/admin
db.username=ORDS_PUBLIC_USER
feature.sdw=true
plsql.gateway.mode=proxied
restEnabledSql.active=true
security.requestValidationFunction=ords_util.authorize_plsql_gateway
database.api.enabled=true
standalone.doc.root=/u01/app/ords/config/global/doc_root
standalone.http.port=8080
config.required=true
resource.templates.enabled=false
db.password=******
conf.use.wallet=true
2025-07-25T19:44:22.528Z WARNING *** jdbc.MaxLimit in configuration |default|lo| is using a value of 10, this setting may not be sized adequately for a production environment ***
2025-07-25T19:44:23.026Z INFO Created Pool: |default|lo|-2025-07-25T19-44-22.438716300Z at: 2025-07-25T19:44:22.438716300Z
2025-07-25T19:44:23.032Z INFO
Mapped local pools from /u01/app/ords/config/databases:
/ords/ => default => VALID
2025-07-25T19:44:23.186Z INFO Oracle REST Data Services initialized
Oracle REST Data Services version : 25.2.1.r1942034
Oracle REST Data Services server info: jetty/12.0.18
Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286 mixed mode, sharing)
-- Cancel this:
Step 8: Add ORDS Home to the Environment and Check Its Version
[oracle@apex ~]$ export PATH=/u01/app/java/jdk-17.0.12/bin:/u01/app/ords/bin:$PATH.
[oracle@apex ~]$ ords --version
ORDS: Release 25.2 Production on Fri Jul 25 20:03:19 2025
Copyright (c) 2010, 2025, Oracle.
Configuration:
/home/oracle
Oracle REST Data Services 25.2.1.r1942034
[oracle@apex ~]$
Step 9: Start the ORDS Service
[oracle@apex ~]$ nohup ords --config /u01/app/ords/config serve &
[1] 19755
[oracle@apex ~]$ nohup: ignoring input and appending output to ‘nohup.out’
[oracle@apex ~]$ ps -ef|grep ords
oracle 19755 7299 0 01:21 pts/0 00:00:00 /bin/bash /u01/app/ords/bin/ords --config /u01/app/ords/config serve
oracle 19789 19755 99 01:21 pts/0 00:00:08 /u01/app/java/jdk-17.0.12/bin/java -Doracle.dbtools.cmdline.home=/u01/app/ords -Duser.language=en -Duser.region=IN -Dfile.encoding=UTF-8 -Djava.awt.headless=t rue -Doracle.dbtools.cmdline.ShellCommand=ords -Duser.timezone=UTC -XX:+IgnoreUnrecognizedVMOptions -jar /u01/app/ords/ords.war --config /u01/app/ords/config serve
oracle 19865 7299 0 01:21 pts/0 00:00:00 grep --color=auto ords
[oracle@apex ~]$
Step 10: Log In and Verify
Log in to the following URL using the ADMIN user and the password you set in Step 9 of the APEX upgrade.
http://192.168.101.7:8080/ords/apex_admin
Step 11: Run UTLRP and Verify the Invalid Object Count
With APEX and ORDS both upgraded, recompile invalid objects and compare the count against your Step 2 baseline. Some invalid objects are expected right after an upgrade like this, and utlrp.sql clears most of them.
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*)
----------
592
SQL> @?/rdbms/admin/utlrp
SQL> select count(*) from dba_objects where status='INVALID';
COUNT(*)
----------
467
Troubleshooting: Image Directory Issue
When trying to log in to APEX after the upgrade, you might see the following error:
| There is a problem with your environment because the Oracle APEX files have not been loaded. Please verify that you have copied the images directory to your application server as instructed in the Installation Guide. In addition, please verify that your image prefix path is correct. Your current path is /i/ (it should contain both starting and ending forward slashes, such as the default /i/). Use the SQL script reset_image_prefix.sql if you need to change it. |
This happens when the IMAGE_PREFIX parameter still points at the old local path instead of the CDN location for the new version. Update it as follows:
SQL> set lines 333 pages 333
SQL> col NAME for a30
SQL> col VALUE for a60
SQL> select * from apex_instance_parameters where name='IMAGE_PREFIX';
NAME VALUE CREATED_O LAST_UPDA
------------------------------ ------------ --------- ---------
IMAGE_PREFIX /i/ 26-JUL-25 26-JUL-25
SQL> begin
apex_instance_admin.set_parameter(p_parameter=>'IMAGE_PREFIX', p_value=>'https://static.oracle.com/cdn/apex/24.2.0/');
commit;
end;
/
PL/SQL procedure successfully completed.
SQL> select * from apex_instance_parameters where name='IMAGE_PREFIX';
NAME VALUE CREATED_O LAST_UPDA
------------------------------ ------------------------------------------------------------ --------- ---------
IMAGE_PREFIX https://static.oracle.com/cdn/apex/24.2.0/ 26-JUL-25 26-JUL-25
Note that the value https://static.oracle.com/cdn/apex/24.2.0/ is specific to version 24.2. If you're upgrading to a different APEX version, use the CDN path for that version instead.
Thank you for reading!
I hope this content has been helpful to you. Your feedback and suggestions are always welcome, feel free to leave a comment or reach out with any queries.
Abhishek Shrivastava
Oracle DBA with hands-on experience managing production Data Guard, RAC, GoldenGate, and APEX environments. I write practical, tested installation and troubleshooting guides based on real deployment work.




Comments
Post a Comment