0. Introducción
Ha pasado mucho tiempo desde que se hicieron las entradas previas de Oracle.
Pero ahora vamos a iniciar de nuevo el tema pero con el contenedor docker.
Suponemos que tenemos docker perfectamente instalado.
1. Descargar la imagen
docker pull container-registry.oracle.com/database/express:latest
2. Listar las imágenes para ver si se ha descargado
docker images
y aparecen
REPOSITORY TAG IMAGE ID CREATED SIZE
container-registry.oracle.com/database/express latest 8da8cedb7fbf 6 weeks ago 11.4GB
hello-world latest 9c7a54a9a43c 4 months ago 13.3kB
ximo-app latest 597718d0ba1e 10 months ago 537MB
tomcat jdk17-temurin 6dd589e60602 10 months ago 474MB
la que nos interesa es la primera.
3. Arrancar la imagen
docker run --name ximo-oracle-db -p 1111:1521 -p 2222:5500 -e ORACLE_PWD=myPassword container-registry.oracle.com/database/express
siendo ximo-oracle-db el nombre que le hemos dado al contenedor y container-registry.oracle.com/database/express el nombre del repositorio que nos interesaba. También hemos reasignado los puertos 1521 y 5500 a 1111 y 2222 respectivamente y lr hemos dado de contraseña myPassword
4. Conectarse con el servidor
https://localhost:2222/em/
y nos sale esta pantalla
Hay que tener en cuenta que para listar los contenedores (de la BD y no de docker!!) se hace
docker exec -it ximo-oracle-db sqlplus / as sysdba
y le damos a la consulta
SQL> select con_id, name from v$containers;
que nos devuelve 3 contenedores y debemos elegir el primero
1 CDB$ROOT
2 PDB$SEED
3 XEPDB1
OJO: Ahora hemos seleccionado CDB$ROOT pero al conectarnos con DBEaver lo hemos hecho con el contenedor XEPDB1 por tanto, si queremos estar en sintonia con DBeaver, tendríamos que seleccionar XEPDB1
Y al aceptar las credenciales sale esta pantalla
2. Conectase con DBEAVER
2. Entrar en DBeaver y en el menu Database Seleccionar Driver Manager
Copiamos el driver de Oracle
Cambiamos el puerto a 1111 y hay que tener en cuenta que el default DB es XEPDB1 en vez de ORCL aunque aquí no hace falta cambiarla
Vamos a la pestaña de libraries y le damos a Add File y buscamos el driver JDBC descargado
Y cuando le damos al boton Find Class nos abre una pantalla de descarga que eleccionamos el último elemento
Ahora en la pantalla anterior indicamos Crivers class oracle.jdbc.OraclweDriver y le dmos a OK y cerramos
Ahora en el Menu Database -> New Database Connection buscamos una BD SQL y elegimos Oracle Copy y le damos al boton Next
Ahora le indicamos los parametros marcados y le damos el pasword que le hemos dado "myPassword")
Debeis tener los parametros indicados en la pantalla.
Importante cambiar la BD a XEPDB1 !!! Y el usuario system !!! y el puerto 1111 (que por omisión es el 1511
Le damos a test Connection y nos conecta
Y vemos que podemos consultar muchas cosas en DBeaver
3. Cuidado con la BD (contenedor) elegida.
Sabemos que Oracle fusiona USER y SCHEMA, pero lo que en otras bases de datos como Postgres o MySQL se conoce como base de datos, en Oracle los llama contenedores
Hermos visto que para listar los contenedores hacemos
SQL> SELECT con_id, name from v$containers;
Y devuelve CDB$ROOT, PDB$SEED y XEPDB1.
OJO: Mientras
Y para utilizar un contenedor debemos hacer
SQL> ALTER SESSION SET CONTAINER = XEPDB1;
Pero ahora si lisamos los contenedores con el comado "SELECT * FROM V$CONTAINERS" , solo nos muestra el contenedor XEPDB1 !!!!
Y para ver la BD actual
SQL> SELECT NAME FROM v$database;
OJO: Si ejecutamos el comando para ver la BD actual en cualquier conenedor nos devuelve el mismo valor "XE", por tanto a priori este comando no