Entorno de trabajo
Durante el curso usaremos dos sistemas gestores:
| Relacional (UD05 a UD09) | No relacional (UD10) | |
|---|---|---|
| SGBD | Oracle AI Database 26ai Free | MongoDB Community Server 8.0 |
| Versión de referencia | 23.26.x | 8.0.x |
| Instalación recomendada | Contenedor Docker o Podman | Contenedor Docker o Podman |
| Cliente de línea de órdenes | SQLcl (sql) o SQL*Plus | mongosh |
| Cliente gráfico | Oracle SQL Developer o la extensión SQL Developer para VS Code | MongoDB Compass o la extensión de MongoDB para VS Code |
| Modelado | Oracle SQL Developer Data Modeler, draw.io, Mermaid | — |
¿Por qué Oracle? Es uno de los SGBD relacionales más implantados en grandes organizaciones. Su lenguaje procedimental (PL/SQL) es la referencia para el RA5. La edición Free no tiene coste, incluye las funciones de la versión comercial con límites de tamaño (2 CPU, 2 GB de RAM y 12 GB de datos de usuario).
¿Por qué MongoDB? Es la base de datos documental más utilizada en el desarrollo web y multiplataforma. Su modelo de documentos JSON permite comparar de forma muy clara con el modelo relacional.
1. Requisitos
- Sistema operativo de 64 bits: Windows 10/11, macOS (Apple Silicon o Intel) o Linux.
- Al menos 8 GB de RAM (Oracle Free reserva hasta 2 GB) y 15 GB libres en disco.
- Docker Desktop (Windows y macOS) o Docker Engine / Podman (Linux). En Windows, Docker Desktop necesita WSL 2.
Si tu equipo no puede ejecutar contenedores, en Windows puedes instalar Oracle AI Database Free con el instalador ZIP oficial. También puedes usar una máquina virtual Linux del aula. Los scripts del curso son los mismos en todos los casos.
2. Oracle AI Database 26ai Free en un contenedor
Descarga la imagen oficial desde el registro de contenedores de Oracle:
docker pull container-registry.oracle.com/database/free:latestCrea y arranca el contenedor. La variable
ORACLE_PWDfija la contraseña deSYS,SYSTEMyPDBADMIN. El volumenoracle-dataconserva los datos aunque borres el contenedor.docker run -d --name oracle26ai \ -p 1521:1521 \ -e ORACLE_PWD=Oracle_2026 \ -v oracle-data:/opt/oracle/oradata \ container-registry.oracle.com/database/free:latestEn PowerShell, sustituye
\por el carácter de continuación`o escribe la orden en una sola línea.Espera a que la base de datos esté lista. La primera vez tarda unos minutos. Sigue el registro hasta ver
DATABASE IS READY TO USE!:docker logs -f oracle26aiComprueba la conexión con SQL*Plus, que viene dentro del contenedor:
docker exec -it oracle26ai sqlplus system/Oracle_2026@//localhost:1521/FREEPDB1SELECT banner_full FROM v$version; SHOW CON_NAMEEl resultado debe mostrar
Oracle AI Database 26ai Freey el contenedorFREEPDB1.
Oracle Free usa una arquitectura multitenant.
FREEes la base de datos contenedora (CDB) yFREEPDB1es la base de datos conectable (PDB) donde trabajaremos. Conéctate siempre al servicioFREEPDB1. Si creas usuarios en la CDB obtendrás el errorORA-65096: invalid common user or role name.
Gestión diaria del contenedor
docker stop oracle26ai # detener al terminar la clase
docker start oracle26ai # arrancar de nuevo (los datos se conservan)
docker ps -a # ver el estado de los contenedores3. Clientes para Oracle
4. Crear el esquema EduGest
Descarga los scripts del proyecto EduGest y ejecútalos en orden: 00 como SYSTEM, y 01 y 02 como EDUGEST.
-- Comprobación final, conectado como EDUGEST
SELECT table_name, num_rows FROM user_tables ORDER BY table_name;
SELECT COUNT(*) FROM matricula; -- 143
num_rowsdeUSER_TABLESmuestra las estadísticas del optimizador. Puede valerNULLhasta que Oracle las recopile. Para contar filas de verdad usaCOUNT(*).
5. MongoDB Community Server 8.0 (UD10)
docker run -d --name mongo8 -p 27017:27017 \
-v mongo-data:/data/db \
mongodb/mongodb-community-server:8.0-ubi9
# La imagen incluye mongosh
docker exec -it mongo8 mongosh// Dentro de mongosh
db.version() // debe empezar por 8.0
show dbsComo cliente gráfico usa MongoDB Compass con la cadena de conexión mongodb://localhost:27017.
Estas instalaciones son para el aula. MongoDB arranca sin autenticación y las contraseñas de Oracle son de ejemplo. En la UD05 y en la UD10 veremos por qué un servidor de bases de datos nunca debe exponerse así en producción.
6. Problemas frecuentes
| Síntoma | Causa probable | Solución |
|---|---|---|
ORA-12514: listener does not currently know of service | La base de datos aún está arrancando o el servicio es incorrecto | Espera a DATABASE IS READY TO USE! y usa FREEPDB1 |
ORA-01017: invalid username/password | Contraseña incorrecta o usuario creado en otra PDB | Revisa a qué servicio te conectas al crear el usuario |
ORA-65096: invalid common user or role name | Estás conectado a la CDB (FREE) | Conéctate a FREEPDB1 |
ORA-01950: no privileges on tablespace 'USERS' | El usuario no tiene cuota | ALTER USER edugest QUOTA UNLIMITED ON users; |
| El puerto 1521 o 27017 está ocupado | Hay otra instancia ejecutándose | docker ps y detén la otra o cambia el puerto (-p 1522:1521) |
| El contenedor se detiene solo | Falta memoria | Asigna al menos 4 GB a Docker Desktop o WSL 2 |