This guide walks through a clean, repeatable, and production-aligned setup of:
- Oracle AI Database 26ai Free (Docker)
- Java 17 (required by ORDS)
- Oracle APEX 24.2 (inside the database)
- Oracle REST Data Services (ORDS 25.4)
Rather than just listing commands, this guide explains why each step is required, so you understand the architecture and can troubleshoot confidently. I have a YouTube video on this topic - Do check it out:
1. Architecture Overview (Why These Components Exist)
| Component | Role |
|---|---|
| Oracle DB 26ai Free | Stores APEX metadata, applications, users |
| Oracle APEX | Low-code platform that runs inside the database |
| ORDS | Java-based web server exposing APEX over HTTP |
| Java 17 | Runtime required to execute ORDS |
| Docker | Provides an isolated, reproducible environment |
Key concept: APEX cannot serve web pages on its own. ORDS is mandatory.
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 includes Oracle 26ai Free, a CDB, a default PDB (FREEPDB1),
and all required OS libraries.
2.2 Run the container
docker run -d --name oracle26ai-free -p 1521:1521 -p 5500:5500 -p 8080:8080 -e ORACLE_PWD=YourPassword123 container-registry.oracle.com/database/free:latest
- 1521 → Database connections
- 5500 → Enterprise Manager Express
- 8080 → ORDS / APEX HTTP traffic
2.3 Monitor startup
docker logs oracle26ai-free --tail 50 -f
Wait until you see DATABASE IS READY.
3. Verify Database Connectivity
sql system/YourPassword123@//localhost:1521/FREEPDB1
This confirms the listener is running, the PDB is open, and credentials are valid.
4. Copy Java and APEX Files into the Container
docker cp C:\Users\jenis\Downloads\jdk-17.0.12_linux-x64_bin.tar.gz oracle26ai-free:/opt
docker cp C:\Users\jenis\Downloads\apex_24.2.zip oracle26ai-free:/opt
/opt is a standard location for optional third-party software and keeps Oracle Home clean.
5. Install Java 17 (Required for ORDS)
5.1 Enter container as root
docker exec -it oracle26ai-free bash
su -
5.2 Extract JDK and register Java
cd /opt
tar -xzf jdk-17.0.12_linux-x64_bin.tar.gz
ln -s /opt/jdk-17.0.12/bin/java /usr/bin/java
java -version
The symbolic link guarantees Java works for all users and avoids PATH issues.
6. Extract Oracle APEX
unzip apex_24.2.zip
This creates /opt/apex, containing SQL install scripts and static images.
7. Prepare Oracle Environment (Critical)
su - oracle
. /opt/oracle/product/26ai/dbhomeFree/bin/oraenv
This sets ORACLE_HOME, ORACLE_SID, and enables SQL*Plus. Password would mostly be same as username (oracle).
7.1 Make it permanent
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
8. Install Oracle APEX 24.2
sqlplus / as sysdba
ALTER SESSION SET CONTAINER=FREEPDB1;
@apexins.sql SYSAUX SYSAUX TEMP /i/
9. Install ORDS
9.1 Prepare directories (root)
mkdir -p /opt/ords
mkdir -p /opt/ords-config
chown -R oracle:oinstall /opt/ords /opt/ords-config
chmod -R 775 /opt/ords-config
9.2 Download ORDS (oracle)
cd /opt/ords
curl -L -o ords.zip https://download.oracle.com/otn_software/java/ords/ords-latest.zip
unzip ords.zip
10. Install ORDS
ords install
11. Set APEX Admin Password
@/opt/apex/apxchpwd.sql
12. Access URLs
- APEX Builder: http://localhost:8080/ords/apex
- APEX Admin: http://localhost:8080/ords/apex_admin
13. Fix APEX Images Mapping (only in case of issues)
mkdir -p /opt/ords-config/global/doc_root
ln -s /opt/apex/images /opt/ords-config/global/doc_root/i
Conclusion
Installing Oracle APEX 24.2 with ORDS 25.4 on Oracle Database 26ai Free using Docker may look overwhelming at first, but once you understand the why behind each step, the entire setup becomes structured, repeatable, and reliable.
In this guide, we didn’t just install software — we:
-
Understood how Oracle Database, APEX, and ORDS work together
-
Learned the purpose of critical ports (1521, 5500, 8080) and how they fit into the architecture
-
Followed best practices for user management (
rootvsoracle) -
Avoided common pitfalls related to environment variables, SQL tools, and editor issues
-
Built a production-ready, containerized APEX environment that is easy to maintain and scale
This setup forms a solid foundation for:
-
Developing modern low-code applications with Oracle APEX
-
Exposing secure REST APIs using ORDS
-
Experimenting with Oracle 26ai features in a safe, isolated environment
-
Building CI/CD-friendly, cloud-ready database architectures
If you’ve reached this point, you now have complete control over your Oracle APEX environment, not just a copy-paste installation. That understanding is what truly differentiates a developer from an architect.
📌 In upcoming posts and videos, we’ll extend this setup by:
-
Securing ORDS and APEX
-
Enabling REST APIs
-
Integrating external services
-
Exploring Oracle 26ai capabilities in real-world APEX applications
If you found this guide helpful, 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 content.
Welcome to the journey — Into the Oracle Verse 🚀
data:post.title
Written by
Published on December 27, 2025

No comments: