Oracle Database 12.1.0.2 Express Edition
After a while got time to explore the new learning in my way. Oracle 12.1.0.2 Express edition on docker container is my goal. In this post I am going to explain you how did I achieved this with different path of using docker-compose commands to bringing up the automated XE container. The regular choice is defined in GitHub and Docker hub it was mentioned to use docker pull and docker run commands to use.
Advantages of containerizing Oracle 12c XE
- No need to download any software from OTN
- No need to install - dockerfile will take care of it
- No need to run dbca for Database cration - executed moment container boot time
- No need to start LISTENER, STARTUP database because this container choosen is AUTOMATED [OK]
Lets search for the Oracle 12c XE
docker search oracle12c
Output of docker search result
 |
Docker Oracle 12c XE search |
The docker-compose for Oracle 12c XE Database
oracle12cxe:
image: rodrigozc/oracle12c
ports:
- "1521:1521"
- "8089:8080"
- "2222:22"
docker-compose config
networks: {}
services:
oracle12cxe:
image: rodrigozc/oracle12c
network_mode: bridge
ports:
- 1521:1521
- 8089:8080
- '2222:22'
version: '2.0'
volumes: {}
docker-compose up -d
Creating oraclexe_oracle12cxe_1
Now lets check the docker-compose wit running process list
docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------
oraclexe_oracle12cxe_1 /entrypoint.sh Up 0.0.0.0:1521->1521/tcp, 0.0.0.0:2222->22/tcp, 0.0.0.0:8089->8080/tcp
SSH Connection with port 2222
Using PuTTY terminal you can connect to the container that is running Oracle 12c XE database in it.
 |
Oracle 12.2.0.1 XE docker container SSH connection |
check logs what is happening in the container when it was just started...
vagrant@docking ~/oracle_xe $ docker-compose logs oracle12cxe
Attaching to oraclexe_oracle12cxe_1
oracle12cxe_1 | SSH server started. ;)
oracle12cxe_1 | ls: cannot access /u01/app/oracle/oradata: No such file or directory
oracle12cxe_1 | Database not initialized. Initializing database.
oracle12cxe_1 | Starting tnslsnr
oracle12cxe_1 | Copying database files
oracle12cxe_1 | 1% complete
oracle12cxe_1 | 3% complete
oracle12cxe_1 | 11% complete
oracle12cxe_1 | 18% complete
oracle12cxe_1 | 37% complete
oracle12cxe_1 | Creating and starting Oracle instance
oracle12cxe_1 | 40% complete
oracle12cxe_1 | 45% complete
oracle12cxe_1 | 50% complete
oracle12cxe_1 | 55% complete
oracle12cxe_1 | 56% complete
oracle12cxe_1 | 60% complete
oracle12cxe_1 | 62% complete
oracle12cxe_1 | Completing Database Creation
oracle12cxe_1 | 66% complete
oracle12cxe_1 | 70% complete
oracle12cxe_1 | 73% complete
oracle12cxe_1 | 85% complete
oracle12cxe_1 | 96% complete
oracle12cxe_1 | 100% complete
oracle12cxe_1 | Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details.
oracle12cxe_1 | Configuring Apex console
Here the log file shows that installation successful. And Now lets check the Expression Edition Enterprise manager console
http://192.168.33.100:8089/em
 |
Oracle Enterprise Manager database express 12c Login page |
Please enter the the login credentials as: sys/oracle select the check box as sysdba option. Because we want to do a DBA task now create user.
After login successful you will get the SYSDBA access.
 |
Create User on Oracle 12c EM Console |
 |
Create User account as demouser |
 |
Tablespaces for demouser |
 |
Assign privileges RESOURCE, CONNECT to demouser |
 |
Create User SQL statement processed succesfully |
In the PuTTY terminal connect with oracle/welcome1 ssh credentials.
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/xe
export PATH=$ORACLE_HOME/bin:$PATH
To check Oracle Database running with process that have pmon word:
ps -ef|grep pmon
You can check for the Oracle database configured and the Listener started with entrypoint.sh script.
lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 04-SEP-2017 19:16:36
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 04-SEP-2017 18:33:10
Uptime 0 days 0 hr. 43 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/38a4e2e216dd/listener/ale rt/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=38a4e2e216dd)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=38a4e2e216dd)(PORT=8080))(Presentati on=HTTP)(Session=RAW))
Services Summary...
Service "xe.oracle.docker" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xeXDB.oracle.docker" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully
Confirm the User creation
Using SQL*Plus you can test the connection to the demouser that created in the above section.
sqlplus demouser/welcome1@localhost:1521/"xe.oracle.docker"
Output looks like this:
 |
connection validation using SQL*Plus |
You can also define your own SID and use that for creating RCU and move further.
Please share your feedback on this experiment how it helps you and any suggestions to improve more posts on containerization in Oracle DevOps.
References:
Git Hub link for Oracle 12c+ SSH
Docker hub link of Rodrigozc