Oracle Database on Docker for Development

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.

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

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

That is all folks.
Subscribe to get notified on new posts.