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!!