Cómo desplegar un servidor de Oracle Database 21c en cuestión de segundos mediante Docker. Explicamos cómo crear la base de datos, cómo establecer la contraseña para los usuarios SYS y SYSTEM y cómo habilitar el acceso externo. Probamos el acceso al servidor de base de datos Oracle desde otro equipo mediante Oracle SQL Developer.
- Requisitos para montar un servidor Oracle Database 21c en Docker.
- Descargar y desplegar contenedor Oracle Database 21c.
- Desplegar imagen e iniciar instancia de servidor de Oracle Database en Docker.
- Establecer configuración inicial de la base de datos Oracle Database en Docker.
- Establecer contraseña personalizada para usuarios SYS y SYSTEM de Oracle en Docker.
- Conectar con la base de datos Oracle Database de Docker desde el propio equipo con Docker.
- Desplegar imagen Oracle en Docker con acceso externo.
Requisitos para montar un servidor Oracle Database 21c en Docker
El único requisito es disponer de un equipo con Docker. O bien en Windows, como indicamos en este tutorial:
O bien en Linux, como indicamos en este otro tutorial:
Necesitaremos disponer también de una cuenta en Oracle (usuario y contraseña). Si no la tenemos, nos registraremos en la web oficial de Oracle. Esto es necesario para la descarga del contenedor, como veremos a continuación.
Descargar y desplegar contenedor Oracle Database 21c
En primer lugar, abriremos una ventana de consola shell de comandos (sea en Windows o en Linux). Desde esta consola ejecutaremos el siguiente comando docker, para iniciar el login en la web de Oracle (con usuario y contraseña de Oracle):
1 |
docker login container-registry.oracle.com |
El comando anterior nos solicitará que introduzcamos usuario y contraseña de la web de Oracle. Introduciremos estos datos pulsando en INTRO.
Si indica el mensaje «Login Succeeded» continuaremos con el proceso. Si produce algún error, revisaremos usuario y contraseña del sitio web oficial de Oracle.
Un vez registrados, ejecutaremos el siguiente comando docker para descargar e instalar el contenedor Oracle Database 21. Este proceso tardará varios minutos, dado que descargará unas 4GB:
1 |
docker pull container-registry.oracle.com/database/enterprise:latest |
Desplegar imagen e iniciar instancia de servidor de Oracle Database en Docker
Una vez descargado y desplegado el contenedor, desplegaremos una imagen del contenedor, para iniciar una instancia de servidor de Oracle Database, con el siguiente comando Docker. Es importante mencionar que en el parámetro –name se le indica el nombre de la imagen, en este caso «bdproyectoa»:
1 |
docker run -d --name bdproyectoa container-registry.oracle.com/database/enterprise:21.3.0.0 |
Una vez finalizado el proceso de despliegue de la imagen Oracle Database (bdproyectoa), comprobaremos que, efectivamente, está levantada, con el comando Docker:
1 |
docker ps |
Nos devolverá las imágenes de los contenedores y su estado, entre ellos debe aparecer la imagen «bdproyectoa»:
Establecer configuración inicial de la base de datos Oracle Database en Docker
Generaremos los usuarios, base de datos y contraseñas predeterminadas en el servidor de base de datos Oracle Database desplegado. Para ello, ejecutaremos el siguiente comando Docker:
1 |
docker logs bdproyectoa |
Se puede consultar el resultado de la salida del comando anterior en el Anexo de este tutorial.
Establecer contraseña personalizada para usuarios SYS y SYSTEM de Oracle en Docker
Para establecer la contraseña de los usuarios sys y system de Oracle en Docker, ejecutaremos el siguiente comando:
1 |
docker exec bdproyectoa ./setPassword.sh "contraseña" |
Nota: la contraseña debe ir entre comillas dobles, de lo contrario podría no establecerse correctamente. Se establecerá esta contraseña para los usuarios base de Oracle (SYS, SYSTEM, etc.).
Se puede consultar el resultado de la salida del comando anterior en el Anexo de este tutorial.
Conectar con la base de datos Oracle Database de Docker desde el propio equipo con Docker
Para conectar con la base de datos Oracle desde el equipo que tiene Docker Desktop, ejecutaremos el siguiente comando Docker (con el comando sqlplus de Oracle):
1 |
docker exec -it bdproyectoa sqlplus sys/contraseña@ORCLCDB as sysdba |
El comando anterior lanzará, a su vez, el comando «sqlplus …» en la imagen «bdproyectoa» con Oracle Database. Dado que hemos indicado usuario y contraseña en el propio comando, conectará directamente con Oracle Database:
Desde aquí podremos ejecutar cualquier comando Oracle, como por ejemplo, el siguiente comando para consultar el nombre de la instancia de la base de datos y su estado de ejecución:
1 |
select instance_name, status from v$instance; |
Nos devolverá la instancia por defecto «ORCLCDB» y el estado «OPEN».
Podremos, por supuesto, crear tablas, insertar registros, listar registros, etc:
1 2 3 |
create table factura (codigo NUMBER(10), cliente VARCHAR2(150), importe DECIMAL(12,2)); insert into factura (codigo, cliente, importe) values (1, 'Proyecto A', 2500); select * from factura; |
Desplegar imagen Oracle en Docker con acceso externo
Para desplegar una imagen de un contenedor Docker con acceso externo (usando el puerto 1521), usaremos el siguiente comando Docker:
1 |
docker run -d --name bdproyectoaext -p 1521:1521 container-registry.oracle.com/database/enterprise:latest |
Creará una imagen llamada «bdproyectoaext» escuchando por el puerto 1521. Desde un equipo de la misma red del equipo que tiene Docker Desktop, abriremos SQL Derveloper (o cualquier otro cliente Oracle) y conectaremos con la base de datos:
Anexo
Resultado de la ejecución del comando:
1 |
docker logs bdproyectoa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
C:\Users\alonso>docker logs bdproyectoa [2024:06:07 19:20:35]: Acquiring lock .ORCLCDB.create_lck with heartbeat 30 secs [2024:06:07 19:20:35]: Lock acquired [2024:06:07 19:20:35]: Starting heartbeat [2024:06:07 19:20:35]: Lock held .ORCLCDB.create_lck ORACLE EDITION: ENTERPRISE LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 07-JUN-2024 19:20:35 Copyright (c) 1991, 2021, Oracle. All rights reserved. Starting /opt/oracle/product/21c/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 21.0.0.0.0 - Production System parameter file is /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/61c87b024a47/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 21.0.0.0.0 - Production Start Date 07-JUN-2024 19:20:36 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/61c87b024a47/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 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. SQL*Plus: Release 21.0.0.0.0 - Production on Fri Jun 7 19:27:21 2024 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> System altered. SQL> System altered. SQL> Pluggable database altered. SQL> PL/SQL procedure successfully completed. SQL> SQL> Session altered. SQL> User created. SQL> Grant succeeded. SQL> Grant succeeded. SQL> Grant succeeded. SQL> User altered. SQL> SQL> Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 The Oracle base remains unchanged with value /opt/oracle Executing user defined scripts /opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/swapLocks.sh [2024:06:07 19:27:22]: Releasing lock .ORCLCDB.create_lck [2024:06:07 19:27:22]: Lock released .ORCLCDB.create_lck [2024:06:07 19:27:22]: Acquiring lock .ORCLCDB.exist_lck with heartbeat 30 secs [2024:06:07 19:27:22]: Lock acquired [2024:06:07 19:27:22]: Starting heartbeat [2024:06:07 19:27:22]: Lock held .ORCLCDB.exist_lck DONE: Executing user defined scripts The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### The following output is now a tail of the alert.log: ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS" ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS" 2024-06-07T19:27:21.810860+00:00 ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE; 2024-06-07T19:27:21.829133+00:00 ALTER SYSTEM SET local_listener='' SCOPE=BOTH; ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE |
Resultado de la ejecución del comando:
1 |
docker exec bdproyectoa ./setPassword.sh "contraseña" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
C:\Users\alonso>docker exec bdproyectoa ./setPassword.sh "password" The Oracle base remains unchanged with value /opt/oracle SQL*Plus: Release 21.0.0.0.0 - Production on Fri Jun 7 20:07:39 2024 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> User altered. SQL> User altered. SQL> Session altered. SQL> User altered. SQL> Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 |