jueves, 14 de septiembre de 2023

Oracle 4 - Nuevo enfoque (1). Instalar Oracle Express en Docker.Ojo al seleccionar la BD de Oracle!

 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. Instalación de Oracle Database XE Release 21c (21.3.0.0) Docker Image

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

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 

No hay comentarios :

Publicar un comentario