Montar una base de datos Oracle en Docker con el Oracle Container Registry

 

Nos propusimos crear una nueva base de datos Oracle en Docker viendo el siguiente post:

https://technology.amis.nl/2017/12/30/oracle-database-in-a-docker-container-from-oracle-container-registry/

 

La verdad es que en la documentación del Oracle Container Registry da muchas pautas de como hacerlo también, así que os recomiendo que las leáis:

Oracle Container Registry / Explore Official Business Areas / Database

 

Nos conectamos al registro de Oracle:

sergio@sergio-pc:~$ docker login -u sergio_menoyo@yahoo.es -p XXXXX container-registry.oracle.com
Login Succeeded

 

Nos creamos un fichero para la instalación:

sergio@sergio-pc:~$ cat /datos/ARUMEL/blog/docker/container.conf
DB_SID=ORCLCDB
DB_PDB=ORCLPDB1
DB_DOMAIN=localdomain
DB_MEMORY=2GB

 

Lanzamos la creación del container (va extremedamente lento):

sergio@sergio-pc:~$ docker run -d --env-file /datos/ARUMEL/blog/docker/container.conf -p 1521:1521 -p 5500:5500 -it --name oracle12.2 container-registry.oracle.com/database/enterprise:12.2.0.1-slim
Unable to find image 'container-registry.oracle.com/database/enterprise:12.2.0.1-slim' locally
12.2.0.1-slim: Pulling from database/enterprise
cbb9821ba51c: Downloading [====> ] 7.438MB/81.5MB
9bd4d110366e: Downloading [==> ] 5.828MB/143MB
af8b29651e27: Download complete 
4c242ab1add4: Download complete 
0cdb4333d4a1: Downloading [> ] 8.494MB/1.385GB
[...]

 

Terminará así:

cbb9821ba51c: Pull complete 
9bd4d110366e: Pull complete 
af8b29651e27: Pull complete 
4c242ab1add4: Pull complete 
0cdb4333d4a1: Pull complete 
Digest: sha256:1c199d6e859ed6e0a98b0eaffdc403084aca4d15476b338c632d131cd3227c81
Status: Downloaded newer image for container-registry.oracle.com/database/enterprise:12.2.0.1-slim
3942c74f851e9553f4d4d512784beb493d6893c8525f1305b4dcda1cf1ab8a0a

 

A partir de aquí ya tenemos el contenedor creado (fijaros en el tamaño!):

sergio@sergio-pc:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[...]
container-registry.oracle.com/database/enterprise 12.2.0.1-slim 27c9559d36ec 4 months ago 2.08GB

 

Podemos cambiarle la password por defecto:

sergio@sergio-pc:~$ docker exec -it oracle12.2 /bin/bash

[oracle@3942c74f851e /]$ sqlplus "/as sysdba"

SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 10 09:25:08 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> alter user sys identified by oracle;

User altered.

SQL> alter user system identified by oracle;

User altered.

 

Para conectarnos podemos hacerlo por ssh al container y luego abrir el sqlplus (como hicimos al cambiar la password), o desde nuestra máquina local directamente:

sergio@sergio-pc:~$ sql system/oracle@localhost:1521/orclpdb1.localdomain

SQLcl: Versión 17.4.0 Production en mié ene 10 10:42:26 2018

Copyright (c) 1982, 2018, Oracle. Todos los derechos reservados.

Last Successful login time: Mié Ene 10 2018 10:42:27 +01:00

Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL> 


------------------------------------------------------------------------------
sergio@sergio-pc:~$ sql system/oracle@localhost:1521/orclcdb.localdomain

SQLcl: Versión 17.4.0 Production en mié ene 10 10:33:41 2018

Copyright (c) 1982, 2018, Oracle. Todos los derechos reservados.

Last Successful login time: Mié Ene 10 2018 10:33:42 +01:00

Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL> 

 

Para parar o arrancar:

sergio@sergio-pc:~$ docker stop oracle12.2
oracle12.2

sergio@sergio-pc:~$ docker ps -a
CONTAINER ID        IMAGE                                                             COMMAND                  CREATED             STATUS                       PORTS               NAMES
3942c74f851e        container-registry.oracle.com/database/enterprise:12.2.0.1-slim   "/bin/sh -c '/bin/..."   About an hour ago   Exited (137) 5 seconds ago                       oracle12.2

sergio@sergio-pc:~$ docker start oracle12.2
oracle12.2

sergio@sergio-pc:~$ docker ps -a
CONTAINER ID        IMAGE                                                             COMMAND                  CREATED             STATUS                             PORTS                                            NAMES
3942c74f851e        container-registry.oracle.com/database/enterprise:12.2.0.1-slim   "/bin/sh -c '/bin/..."   About an hour ago   Up 43 seconds (health: starting)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   oracle12.2

 

Si quieres entrar al EM express:

SQL> SELECT 'https://'||SYS_CONTEXT('USERENV','SERVER_HOST')||'.'||SYS_CONTEXT('USERENV','DB_DOMAIN')||':'||dbms_xdb_config.gethttpsport()||'/em/' from dual;

'HTTPS://'||SYS_CONTEXT('USERENV','SERVER_HOST')||'.'||SYS_CONTEXT('USERENV','DB
--------------------------------------------------------------------------------
https://3942c74f851e.localdomain:0/em/


SQL> exec dbms_xdb_config.sethttpsport(5500);
Procedimiento PL/SQL terminado correctamente.


https://localhost:5500/em


 

Añadiendo valor con Arumel!!