Translate

sábado, 25 de enero de 2020

Como levantar una base de datos Oracle en Docker?


Vamos a correr una base de datos oracle en un contenedor docker.

Antes que nada vamos instalar docker : https://docs.docker.com/install/

Luego de instalar docker, se debe hacer una cuenta y aceptar los términos y condiciones de uso de la imagen de Oracle 12.2.1c en el siguiente link:

https://hub.docker.com/u/emanuelpeg/content/sub-58a32504-c6af-4941-8558-061121a0243d

Luego debemos correr docker, para ello podemos ejecutar esta comando en Fedora :

sudo systemctl start docker

Luego debemos loguearnos por consola con el siguiente comando:

docker login

Con este comando, nos logiamos, y docker va a saber que aceptamos los términos y condiciones.

Luego debemos bajar la imagen con :

docker pull store/oracle/database-enterprise:12.2.0.1

Con este comando, bajamos la imagen de oracle, la imagen sería un template con el cual podemos crear containers que tengan base de datos propiamente dichas.

Luego tenemos que crear un container que es la instancia propia de la base, vamos a llamar ejemplo a nuestro container.

docker run -d -it --name ejemplo -p 1521:1521 store/oracle/database-enterprise:12.2.0.1

Como se puede ver se mapeo el puerto 1521 con el 1521 del equipo, esto se puede cambiar si el puerto esta siendo utilizado.

Con docker ps podemos ver si levanto el container con :

docker ps

CONTAINER ID        IMAGE                                      COMMAND                 CREATED             STATUS                             PORTS                              NAMES

c8aea60c0230       store/oracle/database-enterprise:12.2.0.1   "/bin/sh -c '/bin/ba…"   38 seconds ago      Up 36 seconds (health: starting)   0.0.0.0:1521->1521/tcp, 5500/tcp   ejemplo

Docker creo un container con la base de datos oracle y publico el puerto 1521 para que podamos conectarnos.

Los datos de conexión son :

User : SYS (dba user)
Password : Oradoc_db1
Oracle-sid : ORCLCDB

Estos datos son creados a partir de la imagen de oracle, y simplemente son datos por defecto.

Debemos conectarnos con estos datos para utilizar la base. Para ello utilizamos sqlplus :

$ docker exec -it ejemplo bash -c "source /home/oracle/.bashrc; sqlplus  sys/Oradoc_db1@ORCLCDB as sysdba"

Con sqlplus podemos crear usuarios, base de datos, tablas, etc...

Para importar base de datos necesitamos tener un .dmp de la base a importar, yo importaré baseDeEjemplo.dmp

Creamos una carpeta para guardar los backups :

docker exec -it ejemplo mkdir /home/oracle/backups

Debemos copiar este archivo al container :

docker cp baseDeEjemplo.dmp ejemplo:/home/oracle/backups

Ahora debemos importar el dump, con el siguiente comando:

docker exec -it ejemplo bash -c "source /home/oracle/.bashrc; impdp usario/pass@ORCLCDB remap_schema=origen:destino directory= backups dumpfile=baseDeEjemplo.dmp logfile=unLog.log”

Se debe tener la carpeta backup registrada en oracle.

Para conectarnos con un cliente debemos utilizar los siguientes datos :

host=0.0.0.0:1521
SID=ORCLCDB
password = sys
username = Oradoc_db1

Por último, si dejamos de utilizar docker podemos parar el container con

docker stop ejemplo

y podemos iniciar la instancia con start

docker start ejemplo

Dejo link: https://hub.docker.com/u/emanuelpeg/content/sub-58a32504-c6af-4941-8558-061121a0243d?ref=login