📋 Detailed Blog Post Summary
🎯 Article Title
“How to Install Oracle Database 21c XE on Debian Using Docker (Complete Guide)”
📂 Category
Database Administration | DevOps | Oracle
🏷️ Tags
Oracle Database, Docker, Debian, Linux, SQL, Database Installation, SQL*Plus, Development Environment, Oracle XE, Containerization
📖 Article Structure
1. Introduction
- Problem: Oracle installation on Debian is complex
- Solution: Docker simplifies everything
- What you’ll learn
- Prerequisites
2. Why Use Docker for Oracle?
- Quick setup (5 minutes vs hours)
- No dependency issues
- Easy cleanup and version management
- Isolation from host system
3. Step-by-Step Installation
3.1 Install Docker
bash
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER newgrp docker
3.2 Run Oracle Container
bash
docker run -d --name oracle-xe \ -p 1521:1521 \ -e ORACLE_PASSWORD=oracle \ -e APP_USER=myuser \ -e APP_USER_PASSWORD=mypass \ --shm-size=1g \ gvenzl/oracle-xe:21-slim
3.3 Wait for Initialization
- First startup takes 2-3 minutes
- Monitor with:
docker logs -f oracle-xe - Wait for: “Pluggable database XEPDB1 opened read write”
4. Connecting to Oracle
4.1 Connect as SYSTEM User
bash
docker exec -it oracle-xe sqlplus system/oracle
4.2 Connect as App User
bash
docker exec -it oracle-xe sqlplus myuser/mypass@XEPDB1
5. Verification
sql
SELECT * FROM v$version;
Expected Output:
text
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0
6. Working with SQL*Plus
6.1 Basic SQL Operations
sql
-- Create table
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);
-- Insert data
INSERT INTO employees VALUES (1, 'John Doe', 50000);
INSERT INTO employees VALUES (2, 'Jane Smith', 60000);
-- Query
SELECT * FROM employees;
-- Commit changes
COMMIT;
6.2 Handling Duplicates
sql
-- Remove duplicates
DELETE FROM employees
WHERE ROWID NOT IN (
SELECT MIN(ROWID)
FROM employees
GROUP BY id, name, salary
);
7. Useful SQL*Plus Commands
| Command | Purpose |
|---|---|
EXIT; | Exit SQL*Plus |
SHOW USER; | Show current user |
DESC tablename; | Describe table structure |
SELECT * FROM tab; | List all tables |
CLEAR SCREEN; | Clear screen |
/ (slash) | Re-run last command |
8. Database Management
8.1 Start/Stop Database
bash
docker start oracle-xe # Start container docker stop oracle-xe # Stop container docker ps # Check status
8.2 Connection Details
| Item | Value |
|---|---|
| Database Name | XE |
| PDB Name | XEPDB1 |
| SYSTEM Password | oracle |
| App User | myuser |
| App Password | mypass |
| Port | 1521 |
| Connection String | //localhost:1521/XEPDB1 |
9. Quick Query Methods
Interactive:
bash
docker exec -it oracle-xe sqlplus myuser/mypass@XEPDB1
One-Liner:
bash
docker exec oracle-xe sqlplus -s myuser/mypass@XEPDB1 <<< "SELECT * FROM employees;"
Multi-Command Script:
bash
docker exec -i oracle-xe sqlplus myuser/mypass@XEPDB1 << 'EOF' SELECT * FROM employees; INSERT INTO employees VALUES (3, 'Bob Johnson', 55000); COMMIT; SELECT * FROM employees; EXIT; EOF
10. Troubleshooting
Issue 1: ORA-01034 / ORA-27101
- Cause: Database still starting up
- Solution: Wait 60-90 seconds, check logs
Issue 2: “SP2-0734: unknown command”
- Cause: Copy-pasting prompts into SQL*Plus
- Solution: Type commands one at a time or use script files
Issue 3: Duplicate Data
- Cause: Running INSERT multiple times
- Solution: Use DELETE with ROWID or recreate table with constraints
Issue 4: “bash: command not found: sqlplus”
- Cause: Oracle not installed locally
- Solution: Use
docker execto run commands inside container
11. Advanced Topics (Optional)
11.1 Data Persistence
bash
docker run -d --name oracle-xe \ -v oracle_data:/opt/oracle/oradata \ -p 1521:1521 \ -e ORACLE_PASSWORD=oracle \ gvenzl/oracle-xe:21-slim
11.2 Resource Limits
bash
docker run -d --name oracle-xe \ --memory=2g \ --cpus=2 \ -p 1521:1521 \ -e ORACLE_PASSWORD=oracle \ gvenzl/oracle-xe:21-slim
12. Conclusion
- Summary of what was accomplished
- Benefits of this approach
- Next steps for learning
13. References
- Official Oracle Docker Images: https://github.com/gvenzl/oci-oracle-xe
- Oracle Documentation: https://docs.oracle.com/en/database/
- Docker Documentation: https://docs.docker.com/
🎨 Blog Meta Data
Meta Title:
text
Install Oracle Database 21c XE on Debian with Docker - Complete Guide
Meta Description:
text
Learn how to install Oracle Database 21c Express Edition on Debian using Docker. Complete step-by-step guide with SQL*Plus tips, troubleshooting, and cheat sheet for developers.
URL Slug:
text
/install-oracle-database-debian-docker-guide
Canonical URL:
text
https://yourblog.com/install-oracle-database-debian-docker-guide
📊 SEO Keywords
Primary Keywords:
- Oracle Database Debian install
- Install Oracle 21c Docker
- Oracle Docker Debian
- SQL*Plus Debian
Secondary Keywords:
- Oracle container Debian
- Oracle XE Docker
- SQL development environment
- Database containerization
- Oracle Linux Debian Docker
📅 Blog Settings
| Setting | Value |
|---|---|
| Category | Database / DevOps |
| Tags | Oracle, Docker, Debian, SQL, Database |
| Reading Time | 10-12 minutes |
| Difficulty Level | Intermediate |
| Publish Date | September 9, 2026 |
💾 Save This File
I recommend saving this entire summary as a markdown file for future reference:
bash
# Save as: oracle-debian-docker-guide.md
🚀 Quick Commands Reference Card
bash
# Install Docker sudo apt update && sudo apt install -y docker.io # Run Oracle docker run -d --name oracle-xe -p 1521:1521 -e ORACLE_PASSWORD=oracle --shm-size=1g gvenzl/oracle-xe:21-slim # Connect docker exec -it oracle-xe sqlplus system/oracle # Stop/Start docker stop oracle-xe && docker start oracle-xe # Verify docker exec oracle-xe sqlplus -s system/oracle <<< "SELECT * FROM v$version;" # Remove docker stop oracle-xe && docker rm oracle-xe
Oracle Database Quick Start

Oracle Software Delivery Cloud
