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 |
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
FREEPDB1is 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_HOMEORACLE_SIDPATH
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: