Oracle Database on Docker for Development
Table of Contents
Lets set up an Oracle Database instance for development purpose using Docker is very easy. And it also runs in WSL2 over Windows.
Let’s use the oracleinanutshell/oracle-xe-11g image. https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g
Table Of Contents #
- Running Oracle Database On Docker
- Set Up a New User and Configure the Tablespace
- Connect Using SQL Developer
Running Oracle Database on Docker #
Run the following commands in your terminal.
#pulls the images from docker hub
docker pull oracleinanutshell/oracle-xe-11g
#runs the image using port forwarding
docker run -d -p 49161:1521 oracleinanutshell/oracle-xe-11g
Pull and Run Oracle XE 11g
The output should be something like this.

Set Up a New User and Configure the Tablespace #
With the Application running in the background let’s create a new Oracle User and set up the appropriate tablespace and grants.
Get the running container Id and attach it running bash.
docker exec -it 82 bash
Type sqlplus to open SQLPlus in the terminal.
sqlplus
Connect using the username and password below.
Database Information
hostname: localhost
internal port: 49161
sid: xe
username: system
password: oracle

Connected at SQLPlus
Run the following commands to set up the new user and tablespace.
CREATE TABLESPACE TSD_USERDB LOGGING DATAFILE 'TSD_USERDB.DBF' SIZE 200M AUTOEXTEND ON NEXT 200M MAXSIZE 400M;
CREATE TABLESPACE TSI_USERDB LOGGING DATAFILE 'TSI_USERDB.DBF' SIZE 200M AUTOEXTEND ON NEXT 50M MAXSIZE 400M;
CREATE USER USERDB IDENTIFIED BY PASSWORD DEFAULT TABLESPACE TSI_USERDB QUOTA UNLIMITED ON TSD_USERDB QUOTA UNLIMITED ON TSI_USERDB;
Setup tablespace
Then run the necessary grants.
GRANT CREATE SESSION TO USERDB;
GRANT CREATE PROCEDURE TO USERDB;
GRANT CREATE VIEW TO USERDB;
GRANT CREATE TABLE TO USERDB;
GRANT CREATE SEQUENCE TO USERDB;
GRANT CREATE TRIGGER TO USERDB;
Setup permissions
Connect Using SQL Developer #
Connect using the recently created user to manage your database.
Database Information
hostname: localhost
port: 49161
sid: xe
username: USERDB
password: PASSWORD
