Volver al blog

Cómo instalar OracleDB en Docker

Me encontré con este problema ayer, Oracle está potenciando sus soluciones en la nube, así que no lo hacen tan fácil instalar su producto estrella en un entorno de pruebas. ¡Aunque de todas formas logré hacerlo, y así fue como lo hice!

Instalando Docker

Antes que nada, vamos a necesitar tener Docker instalado y te tenés que registrar en Docker hub.

Acá tenés un pequeño manual de Cómo instalar Docker. Sobre el docker hub, te tenés que registrar en la página web de Docker, acá tenés el link (también podés hacerlo desde Docker).

Descargando la imagen de OracleDB

OracleDB ya no tiene una imagen oficial en el Hub, pero encontré esta. También hay imágenes independientes en GitHub, pero en este caso, vamos a usar esta. Antes que nada, la vamos a descargar. Asegurate de tener tu instalación de docker levantada, ahora abrí una línea de comandos y escribí este código (asegurate de haber iniciado sesión en tu aplicación de Docker antes de intentar esto):

docker pull oracledb19c/oracle.19.3.0-ee:oracle19.3.0-ee

Corriendo la imagen en un Contenedor de Docker

¡Bien hecho! Ahora tenemos la imagen descargada.

Corramos el contenedor.

docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /opt/oracle/oradata -d oracledb19c/oracle.19.3.0-ee:oracle19.3.0-ee

Esto nos va a dar la siguiente salida:

ORACLE EDITION: ENTERPRISE
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: BkQhFH1AtbY=1

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-OCT-2022 03:06:11

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/4916e98e1c0d/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                17-OCT-2022 03:06:11
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/4916e98e1c0d/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.

Como podés ver, en la segunda línea nos va a dar la contraseña del usuario SYS. Ahora deberíamos esperar a que la DB termine de configurarse y en las últimas líneas, nos va a dar el nombre de nuestra base de datos (típicamente ORCLCDB).

Conectándonos a nuestra instancia de OracleDB

Ahora podemos conectarnos a la instancia usando este comando:

docker exec -u 0 -it oracle19c /bin/bash
bash-4.2# ls
setPassword.sh

La imagen de oracle viene con un setPassword.sh que te permite cambiar la contraseña por defecto, ejecutá este comando dentro de la instancia:

./setPassword.sh [YOUR_NEW_PASSWORD]

Para conectarte a la base de datos SQL, podés ejecutar este comando:

sqlplus /nolog
SQL> connect SYS@ORCLCDB AS SYSDBA
Enter password:
Connected.

Conectándonos con SQL developer

Oracle tiene un programa llamado SQL developer que también podés usar para conectarte a tu instancia. Lo podés descargar en este link.

Instalalo y después hacé clic en Oracle Connections > New connection

Ahora deberíamos configurarlo de la siguiente manera:

User: SYS AS SYSDBA

Password: Your_Password

Service Name: ORCLCDB

Conclusión

No es tan complicado instalar y hacer correr OracleDB en un contenedor de Docker, pero todavía tiene algunas dificultades.

¡Ahora podés crear tu entorno de pruebas de OracleDB!

Read in English