Have you checked out my YouTube Channel yet? See all these posts demonstrated from end-to-end

The Correct Way to Install Oracle APEX 26.1 & ORDS 26.1.1 on Oracle 26ai Free (Docker) – End-to-End Guide

This guide walks through a clean, repeatable, and production-aligned setup of:

  • Oracle Database 26ai Free (Docker)
  • Java 17+ (required by ORDS 26.1.1)
  • Oracle APEX 26.1 (inside the database)
  • Oracle REST Data Services (ORDS 26.1.1)

Rather than just listing commands, this guide explains why each step is required, so you understand the architecture and can troubleshoot confidently.


The Correct Way to Install Oracle APEX 26.1 & ORDS 26.1.1 on Oracle 26ai Free (Docker) – End-to-End Guide
The Correct Way to Install Oracle APEX 26.1 & ORDS 26.1.1 on Oracle 26ai Free (Docker) – End-to-End Guide


1. Architecture Overview (Why These Components Exist)

Component Role
Oracle Database 26ai Free Stores APEX metadata, applications, REST modules, and user data
Oracle APEX 26.1 Oracle’s low-code development platform that runs entirely inside the database
ORDS 26.1.1 Java-based mid-tier server exposing APEX and REST APIs over HTTP/HTTPS
Java 17+ Required runtime for executing ORDS 26.1.1
Docker Provides an isolated, portable, and reproducible environment

Key concept: Oracle APEX runs inside the database, but it cannot directly serve web pages. ORDS acts as the bridge between the browser and the database.


2. Pull and Run Oracle Database 26ai Free

2.1 Pull the Docker image

docker pull container-registry.oracle.com/database/free:latest

This image already contains:

  • Oracle Database 26ai Free
  • A Container Database (CDB)
  • Default Pluggable Database (FREEPDB1)
  • Required Oracle Linux dependencies

2.2 Run the container

docker run -d --name oracle26ai-apex261 -p 1521:1521 -p 5500:5500 -p 8080:8080 -e ORACLE_PWD=YourPassword123 container-registry.oracle.com/database/free:latest
  • 1521 → Oracle Listener / SQL Connections
  • 5500 → Enterprise Manager Express
  • 8080 → ORDS and APEX HTTP traffic

2.3 Monitor startup

docker logs oracle26ai-apex261 --tail 50 -f

Wait until you see:

DATABASE IS READY TO USE!

3. Verify Database Connectivity

sql system/YourPassword123@//localhost:1521/FREEPDB1

This verifies:

  • The database listener is active
  • FREEPDB1 is open
  • Your credentials are valid

4. Copy Java and APEX Files into the Container

Download the following before continuing:

  • Java 17 or above (Linux x64 tar.gz)
  • Oracle APEX 26.1 ZIP

4.1 Copy Java into container

docker cp C:\Users\YourUser\Downloads\jdk-17.0.12_linux-x64_bin.tar.gz oracle26ai-apex261:/opt

4.2 Copy APEX into container

docker cp C:\Users\YourUser\Downloads\apex-latest.zip oracle26ai-apex261:/opt

The /opt directory is typically used for optional third-party software and keeps Oracle Home clean and maintainable.


5. Install Java 17+ (Required for ORDS 26.1.1)

5.1 Enter the container

docker exec -it oracle26ai-apex261 bash

5.2 Switch to root

su -

5.3 Extract Java

cd /opt
tar -xzf jdk-17.0.12_linux-x64_bin.tar.gz

5.4 Create symbolic link

ln -s /opt/jdk-17.0.12/bin/java /usr/bin/java

5.5 Verify Java installation

java -version

The symbolic link ensures Java is accessible globally and avoids PATH-related issues while running ORDS.


6. Extract Oracle APEX 26.1

cd /opt
unzip apex-latest.zip

This creates:

/opt/apex

The directory contains:

  • APEX installation scripts
  • Static image files
  • Administrative utilities

7. Prepare Oracle Environment (Critical Step)

7.1 Switch to oracle user

su - oracle

7.2 Load Oracle environment

. /opt/oracle/product/26ai/dbhomeFree/bin/oraenv

This sets critical Oracle environment variables such as:

  • ORACLE_HOME
  • ORACLE_SID
  • PATH

In most cases, the ORACLE_SID value would be:

FREE

7.3 Make the environment persistent

vi ~/.bash_profile
export ORACLE_SID=FREE
export ORAENV_ASK=NO
. /opt/oracle/product/26ai/dbhomeFree/bin/oraenv

export PATH=$PATH:/opt/ords/bin
export ORDS_CONFIG=/opt/ords-config

This avoids reconfiguring the Oracle environment every time the container restarts or a new shell session is opened.


8. Install Oracle APEX 26.1

8.1 Open SQL*Plus as SYSDBA

sqlplus / as sysdba

8.2 Switch to the PDB

ALTER SESSION SET CONTAINER=FREEPDB1;

8.3 Navigate to APEX directory

cd /opt/apex

8.4 Install APEX

@apexins.sql SYSAUX SYSAUX TEMP /i/

This installs:

  • APEX schemas
  • Metadata repository
  • Runtime components
  • Internal workspaces

9. Prepare ORDS Directories

9.1 Switch back to root user

exit

9.2 Create ORDS directories

mkdir -p /opt/ords
mkdir -p /opt/ords-config

9.3 Configure permissions

chown -R oracle:oinstall /opt/ords /opt/ords-config
chmod -R 775 /opt/ords-config

Proper permissions are important because ORDS writes configuration, logs, and wallet files into the config directory.


10. Download and Extract ORDS 26.1.1

10.1 Switch to oracle user

su - oracle

10.2 Navigate to ORDS directory

cd /opt/ords

10.3 Download ORDS 26.1.1

curl -L -o ords.zip https://download.oracle.com/otn_software/java/ords/ords-latest.zip

10.4 Extract ORDS

unzip ords.zip

11. Install and Configure ORDS 26.1.1

11.1 Run ORDS installation

ords install

During installation:

  • Select the database connection type
  • Provide SYS credentials
  • Specify the ORDS config directory
  • Enable standalone mode
  • Configure HTTP port 8080

11.2 Start ORDS standalone

ords serve

Once started successfully, ORDS will begin serving Oracle APEX applications over HTTP.


12. Set the APEX ADMIN Password

sqlplus / as sysdba
ALTER SESSION SET CONTAINER=FREEPDB1;
@/opt/apex/apxchpwd.sql

This sets the password for the internal APEX ADMIN workspace account.


13. Access Oracle APEX

  • APEX Builder: http://localhost:8080/ords/r/apex
  • APEX Administration: http://localhost:8080/ords/r/apex_admin
  • ORDS Landing Page: http://localhost:8080/ords

14. Fix APEX Images Mapping (Only if Images Do Not Load)

In some environments, APEX static files may not map correctly after ORDS installation.

14.1 Create doc_root directory

mkdir -p /opt/ords-config/global/doc_root

14.2 Create symbolic link for APEX images

ln -s /opt/apex/images /opt/ords-config/global/doc_root/i

This maps:

/i/

to the APEX images directory required for UI rendering.


Conclusion

Installing Oracle APEX 26.1 with ORDS 26.1.1 on Oracle Database 26ai Free using Docker may initially feel overwhelming, but once you understand the purpose behind each layer, the entire architecture becomes logical, maintainable, and production-friendly.

In this guide, we didn’t just install software — we:

  • Understood how Oracle Database, APEX, Java, and ORDS work together
  • Learned the role of critical ports such as 1521, 5500, and 8080
  • Followed best practices for container-based Oracle environments
  • Configured a proper Java runtime for ORDS 26.1.1
  • Avoided common environment and permission-related pitfalls
  • Built a modern, containerized Oracle APEX development platform

This setup forms a strong foundation for:

  • Building enterprise-grade Oracle APEX applications
  • Developing and exposing REST APIs using ORDS
  • Experimenting with Oracle Database 26ai capabilities
  • Creating CI/CD-friendly development environments
  • Deploying scalable cloud-ready architectures

Once you fully understand this setup, you move beyond simply running commands — you gain architectural clarity over the complete Oracle APEX stack.

In upcoming posts and videos, we’ll extend this setup further by:

  • Securing ORDS with HTTPS
  • Configuring REST-enabled schemas
  • Enabling AI features in Oracle APEX 26.1
  • Integrating external AI and REST services
  • Exploring real-world Oracle 26ai use cases

If you found this guide useful, feel free to share it, bookmark it, or drop your questions in the comments — I’ll be happy to help and also cover requested topics in future posts and videos.

Welcome to the journey — Into the Oracle Verse 🚀

No comments:

Powered by Blogger.