El mundo tecnológico en el que vivimos cambia constantemente, es por ello que muchas tareas e instalaciones que antiguamente requerían meticulosas configuraciones y/o workarounds hoy en día han ido mejorando hasta el punto en el que llegan a ser mucho mas sencillas y mucho menos invasivas a nivel sistema operativo.
Es por ello que este articulo abordará la instalación de una base de datos Oracle en su versión 18c, de manera sencilla y que no sobrecargue el sistema operativo con configuraciones y archivos propios del producto.
¿Qué es Docker?
La idea detrás de Docker es crear contenedores ligeros y portables para que el software pueda ejecutarse en cualquier máquina con Docker instalado, independientemente del sistema operativo que la máquina tenga por debajo, facilitando así también los despliegues.
Fuente: https://www.docker.com/
Instalando base de datos Oracle 18c
Antes de empezar, si aun no estás familiarizado con docker (aunque no es un requisito excluyente para dar seguimiento a este articulo) y aun así quieres aprender mas sobre docker... se recomienda ver la siguiente playlist de videos que cubren la mayor parte de docker muy bien explicado y en español:
Para mayor claridad, el articulo se dividirá en 2 partes: 1_Instalar Docker y 2_Instalar Base de Datos Oracle 18c.
Aclaración: puede que los pasos descritos a continuación para instalar Docker con el paso del tiempo queden obsoletos, por lo cual puede guiarse con la documentación oficial:
1_ Instalar Docker
Instalar docker en Ubuntu: para ello, abra la terminal y ejecute los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Se puede verificar si la instalación de docker se realizó con exito corriendo el siguiente comando:
$ sudo docker run hello-world
2_ Instalar Base de Datos Oracle 18c
1_ Abra la terminal y ejecute los siguientes comandos:
$ sudo docker pull dockerhelp/docker-oracle-ee-18c
$ sudo docker run -it dockerhelp/docker-oracle-ee-18c -p 1521:1521 bash
# sh post_install.sh
Luego de que el script anterior concluya con su ejecución, procedemos a conectarnos a la base de datos y crear un usuario de prueba para poder usar la base de datos. Para ello correr los siguientes comandos desde el container (el script nos dejara parado en usuario oracle):
$ sqlplus
user: sys as sysdba
pass: oracle
SQL> alter session set "_ORACLE_SCRIPT"=true;
Session altered.
SQL> create user TEST identified by 1234;
User created.
SQL> grant dba to TEST;
Grant succeeded.
La IP del container se puede averiguar saliendo del container (sin apagarla) con la combinación de teclas CTRL + P y luego CTRL + Q y ejecutando el siguiente comando:
$ sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [CONTAINER_ID]
El [CONTAINER_ID] se puede averiguar con el siguiente comando:
$ sudo docker ps
De esta manera queda demostrado que la instalación y uso de un Docker container con la base de datos Oracle 18c es mucho mas rápida y sencilla (e incluso más practica) que si se hiciera de manera habitual adaptando y aplicando workarounds para un producto que en principio no es compatible con Ubuntu, pero con la portabilidad que brinda Docker es mucho mas manejable y administrable.
Cualquier comentario y/o duda puede ser debatida libremente y con respeto en los comentarios del presente articulo.
Gran Aporte
ResponderEliminarMuchas gracias!
ResponderEliminarEn el commando `$ sudo docker run -it dockerhelp/docker-oracle-ee-18c -p 1521:1521 bash` tuve que cambiarlo a `sudo docker run -p 1521:1521 -it dockerhelp/docker-oracle-ee-18c bash` debido a este error: `docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"-p\": executable file not found in $PATH": unknown.`...
EliminarGracias de nuevo!
Hola @Norman gracias por tomarte el tiempo de comentar tu experiencia. Creo que el dato será de utilidad para muchos en la comunidad. Saludos!
Eliminarexcelente me funciono con la correccion buen dia
EliminarA mi no me funciono ninguna de las demas opciones, me sale 'Error response from daemon: driver failed programming external connectivity on endpoint clever_montalcini (9f8a877d9c08ec1402f1ad42949387742162ba7c764a250994df1e89ea84a9fc): Bind for 0.0.0.0:1521 failed: port is already allocated.
Eliminar'
Si alguien sabe que debo hacer estaria muy agradecida
Seguro ya tienes otro contenedor u otra instalación ocupando el puerto 1521 y no puede usarlo porque ya esta tomado... trata de asignarle otro puerto. Por ejemplo: -p 9521:1521 (localmente accederas por puerto 9521). Saludos!
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarGracias me sirivio muchisimo
ResponderEliminarBuenas tardes, Muchas gracias por el tutorial , funciona sin problema.
ResponderEliminarPero tengo una duda, no sé si solo me pasa... pero cuando apaga la maquina, no me guarda la configuración de la base de datos. tengo que correr nuevamente los pasos de:
$ sudo docker run -p 1521:1521 -it dockerhelp/docker-oracle-ee-18c bash
# sh post_install.sh
y nuevamente crear el usuario, de lo contrario, la conexión siempre me falla. Sera algo que me falta de la configuración o es el normal uso?
Muchas gracias.
Hola Jonathan que bueno que te sirvio el articulo... respondiendo a tu inquietud. Esto sucede porque estas matando el cotainer y recreandolo cada vez con el comando "docker run", para que esto no suceda. Lo mas recomendable seria stopear el container e iniciarlo la proxima vez que lo vuelvas a usar.
EliminarEsto seria, averiguar el HASH del container:
$ docker container ls
y luego administrar el container para stopearlo o pararlo:
$ docker exec -d bash //para startear el container
$ docker stop //para stopear el container
Si no te queda claro del todo, intenta buscar algun tutorial de Docker para saber como administrar los container. Me da la senciacion que viene por este lado tu problema de que no se persisten los cambios que haces, creo que tambien deberia revisar el articulo... me parece que deberia incluir algun "volume" al container.
Saludos!
Muchas Gracias, no me ayudo me salvo la vida <3
ResponderEliminarHola podes enseñarme como, desbloqueo la base de datos HR para hacer pruebas
ResponderEliminarPodrias intentar acceder al contenedor usando una shell bash:
Eliminar$ docker exec -it bash
Y una vez dentro del contenedor, podrias seguir los pasos que se indican en este articulo:
https://soajp.blogspot.com/2016/11/tip-como-crear-esquema-hr-en-base-de.html
Salvo que para descargar el archivo ZIP con los recursos, vas a tener que ayudarte con WGET o CURL. Por ejemplo:
$ curl -L -o resources.zip "https://drive.google.com/uc?export=download&id=0Bzt6dzPUxURYdXZhbTBia0xvc1E"
$ wget --no-check-certificate "https://drive.google.com/uc?export=download&id=0Bzt6dzPUxURYdXZhbTBia0xvc1E" -O resources.zip
Ya con eso deberias poder activar el schema HR.
Saludos!
no quedo bien el comando docker, seria asi:
Eliminar$ docker exec -it CONTAINER_HASH bash