How to install Oracle Apex with ORDS and Apache Tomcat on Oracle Database 19c

Mohsin Ali
4 min readJan 14, 2024

--

This document shows how to install and configure Oracle Apex 22.2 with ORDS and Apache Tomcat 8 on Oracle Database 19c PDB.

Download Oracle Apex 22.2, ORDS, Apache Tomcat and JDK 11:

wget --no-check-certificate https://download.oracle.com/otn_software/apex/apex-latest.zip   ##With this link version keeps on changing, Download 21.2 from internet  
wget --no-check-certificate https://download.oracle.com/otn_software/java/ords/ords-latest.zip
wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.91/bin/apache-tomcat-8.5.91.tar.gz
Download JDK 11 - https://www.oracle.com/pk/java/technologies/javase/jdk11-archive-downloads.html

Place the Oracle Apex 22.2, ORDS, Apache Tomcat and JDK 11 in /u01 (as per your environment) and unzip and create environment file:

[oracle@himstest]$ vi /home/oracle/apex.env

export APEX_HOME=/u01/apex
export ORDS_HOME=/u01/ords
export ORDS_CONFIG=/u01/ords
export TOMCAT_HOME=/u01/apache-tomcat-8.5.91
export PATH=$ORDS_HOME/bin:$JAVA_HOME/bin:$PATH

Copy images from APEX extracted folder to Tomcat webapps, and rename the folder from “images” to “i”:

[oracle@himstest]$ source /home/oracle/apex.env

[oracle@himstest]$ cp -Rp $APEX_HOME/images $TOMCAT_HOME/webapps
[oracle@himstest]$ mv $TOMCAT_HOME/webapps/images $TOMCAT_HOME/webapps/i

We are going to install APEX in PDB. Before doing that, we need to uninstall APEX, if it already exists:

[oracle@himstest]$ export ORACLE_PDB_SID=TEST
[oracle@himstest]$ sqlplus / as sysdba

SQL> SELECT STATUS FROM DBA_REGISTRY WHERE COMP_ID = 'APEX';

If query returns APEX, it means default APEX exists, then remove it:

SQL> @$ORACLE_HOME/apex/apxremov.sql

Verify the status to make sure APEX is uninstalled:


[oracle@himstest]$ export ORACLE_PDB_SID=TEST
[oracle@himstest]$ sqlplus / as sysdba

SQL> SELECT STATUS FROM DBA_REGISTRY WHERE COMP_ID = 'APEX';

Create APEX_DATA and APEX_FILES tablespaces:

[oracle@himstest]$ export ORACLE_PDB_SID=TEST
[oracle@himstest]$ sqlplus / as sysdba

SQL> create tablespace APEX_DATA datafile '/u01/app/oracle/oradata/APEX/datafile/apex_data01.dbf' size 2G;
SQL> create tablespace APEX_FILES datafile '/u01/app/oracle/oradata/APEX/datafile/apex_files01.dbf' size 2G;

Disable default password complexity rules:

[oracle@himstest]$ sqlplus / as sysdba
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNTION NULL;

Now we install Apex 21.2 in PDB:

[oracle@himstest]$ export ORACLE_PDB_SID=TEST

[oracle@himstest]$ cd /u01/apex/
[oracle@himstest apex]$ sqlplus / as sysdba

SQL> @apexins APEX_DATA APEX_FILES TEMP /i/

Check validity of installation:

[oracle@himstest apex]$ export ORACLE_PDB_SID=TEST
[oracle@himstest apex]$ sqlplus / as sysdba

SQL> SELECT STATUS FROM DBA_REGISTRY WHERE COMP_ID = 'APEX';
SQL> SET LINESIZE 500
SQL> COLUMN username FORMAT A25
SQL> SELECT * FROM ALL_USERS WHERE username LIKE '%APEX%' OR username LIKE '%FLOWS%';

Unlock Public user and setup up Apex Admin Password:

[oracle@himstest]$ cd /u01/apex/
[oracle@himstest apex]$ export ORACLE_PDB_SID=TEST

[oracle@himstest apex]$ sqlplus / as sysdba
SQL> ALTER USER apex_public_user IDENTIFIED BY "welcome1" ACCOUNT UNLOCK;

Setting up Apex Admin Password:
SQL> @apxchpwd.sql

Enable Network Services (change the value of principal_name according to your installation schema):

[oracle@himstest]$ export ORACLE_PDB_SID=TEST
[oracle@himstest]$ sqlplus / as sysdba

SQL> BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'APEX_220200',
principal_type => xs_acl.ptype_db));
END;
/

Principal_Name must be the result of below query:
select username,created from all_users where USERNAME like '%APEX%';

Configure RESTful Services. In this step you will need to provide credentials for the users: APEX_LISTENER and APEX_REST_PUBLIC_USER:

[oracle@himstest]$ cd /u01/apex/
[oracle@himstest apex]$ export ORACLE_PDB_SID=TEST
[oracle@himstest apex]$ sqlplus / as sysdba

SQL> @apex_rest_config.sql

Enter a password for the APEX_LISTENER user [] welcome1
Enter a password for the APEX_REST_PUBLIC_USER user [] welcome1

Install ORDS:

[oracle@himstest]$ . /home/oracle/apex.env
[oracle@himstest]$ cd $ORDS_HOME
[oracle@himstest ords]$ ords install

If above does not work then use:
[oracle@himstest ords]$ java -jar ords.war install
[oracle@himstest ords]$ ords install
2023-03-29T06:29:57.375Z INFO Your configuration folder /u01/ords is located in ORDS product folder. Oracle recommends to use a different configuration folder.

ORDS: Release 22.4 Production on Wed Mar 29 06:29:57 2023

Copyright (c) 2010, 2023, Oracle.

Configuration:
/u01/ords

The configuration folder /u01/ords 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]: himstest
Enter the database listen port [1521]:
Enter the database service name [orcl]: TEST
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:@//himstest:1521/TEST

Retrieving information.
Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]: APEX_DATA
Enter the temporary tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [TEMP]:
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]:
Enter a number to configure and start ORDS in standalone mode
[1] Configure and start ORDS in standalone mode
[2] Skip
Choose [1]:
Enter a number to select the protocol
[1] HTTP
[2] HTTPS
Choose [1]:
Enter the HTTP port [8080]:
Enter the APEX static resources location: /u01/apache-tomcat-8.5.91/webapps/i
After ORDS installation completes, It automatically starts the Services, 
we have to stop it:

CTRL + C
KILL ords process

Copy ords.war in Apache Webapps:

[oracle@himstest]$ . /home/oracle/apex.env
[oracle@himstest]$ cp $ORDS_HOME/ords.war $TOMCAT_HOME/webapps

Start Apex services from Apache Tomcat:


[oracle@himstest]$ cd $TOMCAT_HOME/bin
[oracle@himstest bin]$ ./startup.sh

Login to the APEX console as the INTERNAL workspace and user ADMIN:

http://hostname:8080/ords/

To Stop Apex Services:

[oracle@himstest]$ cd $TOMCAT_HOME/bin
[oracle@himstest bin]$ ./startup.sh

Add Environment file in bash profile:

[oracle@himstest]$ vi .bash_profile

export APEX_HOME=/u01/apex
export ORDS_HOME=/u01/ords
export ORDS_CONFIG=/u01/ords
export TOMCAT_HOME=/u01/apache-tomcat-8.5.91
export PATH=$ORDS_HOME/bin:$JAVA_HOME/bin:$PATH

save

To Stop Apex Services:

[oracle@himstest]$ cd $TOMCAT_HOME/bin
[oracle@himstest bin]$ ./shutdown.sh

Configure this on TEST environment and then move to othe Environment.

--

--