DEV Community

Cover image for Instalar y Configurar Oracle 12c 12.1.0.2 SE en Docker y Ubuntu 20.04 LTS (Single Instace)
AlexanDev_CWA
AlexanDev_CWA

Posted on

Instalar y Configurar Oracle 12c 12.1.0.2 SE en Docker y Ubuntu 20.04 LTS (Single Instace)

Actualmente, Docker es una herramienta necesaria para nuestros entornos para exponer servicios por medio de contenedores, hoy vamos a aprender como instalar Oracle 12c 12.1.0.2 SE sobre Docker en Ubuntu 20.04 LTS.

Requerimientos de instalación

  1. Sistema operativo Ubuntu 20.04 LTS
  2. Oracle 12c 12.1.0.2 lo puedes descargar desde Oracle Software Delivery, para esto necesitas crear una cuenta de Oracle que es completamente gratis, el paquete que debes de buscar es el siguiente.

Paquete de referencia a descargar

Instalación de Docker

para la instalación de Docker te puedes guiar de la documentación oficial de Docker

Creación de imagen para Docker

Para iniciar la creación de Oracle 12c para Docker necesitamos acceder a nuestro servidor Ubuntu y clonar el siguiente repositorio, este repositorio contiene scripts para construir una imagen de Docker para correr una base de datos Oracle.

cd ~
git clone https://github.com/alexandevcwa/docker-images
Enter fullscreen mode Exit fullscreen mode

Creación de imagen Docker

Al tener clonado el repositorio, debemos ir a la ruta siguiente del repositorio clonado.

cd ~/docker-images/OracleDatabase/SingleInstance/dockerfiles/
Enter fullscreen mode Exit fullscreen mode

El directorio dickerfiles contiene múltiples configuraciones para las diferentes versiones de base de datos Oracle.

ubuntu:~/docker-images/OracleDatabase/SingleInstance/dockerfiles$ ls
11.2.0.2  12.1.0.2  12.2.0.1  18.3.0
18.4.0  19.3.0  21.3.0  23.3.0
buildContainerImage.sh
Enter fullscreen mode Exit fullscreen mode

Ahora vamos a acceder al directorio 12.1.0.2 donde vamos a mover los archivos de instalación de Oracle 12c 12.1.0.2 descargados anteriormente, tienen que ser 2 archivos descargados con los siguientes nombre, V77388-01_1of2.zip y V77388-01_2of2.zip en la versión Standard Edition 2 de Oracle 12c, a estos archivos se les debe de cambiar el nombre por los siguientes.

mv V77388-01_1of2.zip linuxamd64_12102_database_se2_1of2.zip
mv V77388-01_2of2.zip linuxamd64_12102_database_se2_2of2.zip
Enter fullscreen mode Exit fullscreen mode

Ahora debemos de mover los archivos al directorio 12.1.0.2

mv linuxamd64_12102_database_se2_1of2.zip V77388-01_2of2.zip linuxamd64_12102_database_se2_2of2.zip ~/docker-images/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/
Enter fullscreen mode Exit fullscreen mode

Ya con los archivos de instalación de la base de datos, el repositorio clonado y Docker Engine instalado en Ubuntu, debemos de construir la imagen corriendo el siguiente script buildContainerImage.sh que está ubicado en la ruta ~/docker-images/OracleDatabase/SingleInstance/dockerfiles

sudo ./buildContainerImage.sh -d -v 12.1.0.2 -t oracle-12.1.0.2-se -s
Enter fullscreen mode Exit fullscreen mode

Al finalizar el proceso de construcción de la imagen, debe de mostrar el siguiente mensaje.

#########################
DATABASE IS READY TO USE!
#########################
Enter fullscreen mode Exit fullscreen mode

Ahora correremos una instancia de la imagen para construir el contenedor con el siguiente comando, para mayor descripción del comando y adaptarlo a tu entorno, visita el siguiente link

docker run -d --name oracle-12.1.0.2-se-db \
 -p 1521:1521 -p 5500:5500 -p 2484:2484 \
--ulimit nofile=1024:65536 --ulimit nproc=2047:16384 \
--ulimit stack=10485760:33554432 --ulimit memlock=3221225472 \
-e ORACLE_SID=orcl -e ORACLE_PDB=orcrlpdb -e ORACLE_PWD=manager1 \
-e INIT_SGA_SIZE=2560M -e INIT_PGA_SIZE=2560M -e ORACLE_EDITION=standard \
-e ORACLE_CHARACTERSET=WE8MSWIN1252 -e ENABLE_ARCHIVELOG=false \
-e ENABLE_TCPS=false \
-v oracle-12.1.0.2-data/opt/oracle/oradata oracle-12.1.0.2-se:latest
Enter fullscreen mode Exit fullscreen mode

Si deseas visualizar el proceso de construcción del contenedor, con el siguiente comando lo puedes ver.

docker longs -f <container_id>
Enter fullscreen mode Exit fullscreen mode

Configuración de archivo de configuración init.ora

Para configurar el archivo de configuración init.ora debemos de tener la herramienta vi instalada en el contenedor, con el siguiente comando lo podremos hacer.

docker exec -it -u root <container_id> bash
yum install -y vi
Enter fullscreen mode Exit fullscreen mode

Una vez instalada la herramienta, debemos de ir al directorio donde está ubicado el archivo de configuración y crear una copia del archivo con la siguiente nomenclatura init<nombre_instancia>.ora

cd  /opt/oracle/product/12.1.0.2/dbhome_1/dbs
cp init.ora init<nombre_instancia>.ora
Enter fullscreen mode Exit fullscreen mode

Una vez creada la copia del archivo de configuración, debemos acceder al archivo para editarlo con la siguiente configuración.
Esta configuración no es estándar, debes adaptarla a tus recursos del sistema y las necesidades del tamaño de tu base de datos

db_name='nombre_instancia'
*.db_unique_name='nombre_instancia'
processes = 150
audit_file_dest='/opt/oracle/admin/<NOMBRE_INSTANCIA>/adump'
audit_trail ='db'
SGA_TARGET=3G
PGA_AGGREGATE_TARGET=1G
db_block_size=8192
db_domain=''
db_recovery_file_dest='/opt/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/opt/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=<NOMBRE_INSTANCIA>XDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (/opt/oracle/oradata/ORCL/control01.ctl)
compatible ='12.1.0.2.0'
ENABLE_PLUGGABLE_DATABASE=TRUE
Enter fullscreen mode Exit fullscreen mode

Con esta configuración la base de datos debería de arrancar sin problemas.

Errores comunes

  1. Puede ocurrir que al acceder por medio de sqlplus e iniciar la base de datos con startup, muestre un mensaje de tipo ORA-01102: cannot mount database in EXCLUSIVE mode, esto significa que existe ya una instancia de base de datos, para solucionar este error debemos de matar esa instancia de base de datos con el siguiente comando.

Comando para obtener los procesos

ps -ef | grep smon
Enter fullscreen mode Exit fullscreen mode

Salida

[oracle@aff8acd3a125 dbs]$ ps -ef | grep smon
oracle        50       1  0 18:01 ?        00:00:00 ora_smon_ORCL
oracle      1679    1213  0 18:40 pts/0    00:00:00 grep --color=auto smon
Enter fullscreen mode Exit fullscreen mode

Matar instancia de base de datos existente

kill <id_proceso>
Enter fullscreen mode Exit fullscreen mode

Para corregir cualquier problema es recomendable reiniciar el contenedor completamente.

docker restart <container_id>
Enter fullscreen mode Exit fullscreen mode

Verificar que el contenedor y la instancia de base de datos se inició correctamente

docker logs <container_id>
Enter fullscreen mode Exit fullscreen mode

Top comments (0)