📝 Oracle_tema_estudio
← Volver

1.2 Oracle — Plataforma de Base de Datos y Aplicaciones

Contexto en la UAH

La Universidad de Alcalá (UAH) tiene contratado el derecho de uso ilimitado del conjunto de productos Oracle para actividades de docencia, investigación y gestión. Este acuerdo cubre todas las herramientas del ecosistema Oracle sin restricción de número de usuarios o instalaciones, lo que convierte a Oracle en la plataforma tecnológica transversal de la institución. Sobre ella corren el ERP corporativo UXXI, el sistema interno Comunic@ y las aplicaciones propias desarrolladas por el Servicio de Informática. La elección de Oracle como plataforma de referencia responde a criterios de robustez, escalabilidad, soporte empresarial y compatibilidad con los sistemas de gestión universitaria más extendidos en España.


1. Oracle Database

¿Qué es?

Oracle Database es el sistema gestor de base de datos relacional (RDBMS) de Oracle Corporation y uno de los más utilizados a nivel mundial en entornos empresariales y de administración pública. Combina el modelo relacional clásico con capacidades avanzadas de seguridad, alta disponibilidad, particionado y gestión de grandes volúmenes de datos. Es la base sobre la que se sustenta toda la arquitectura de datos de la UAH.


Arquitectura fundamental de Oracle Database

Instancia Oracle

Una instancia Oracle es el conjunto de estructuras de memoria y procesos en segundo plano que se levantan en el servidor cuando se arranca la base de datos. Una instancia está formada por dos componentes principales:

Una instancia se identifica por el parámetro ORACLE_SID (System Identifier). La relación habitual es una instancia por base de datos, aunque en configuraciones RAC (Real Application Clusters) múltiples instancias acceden a la misma base de datos.

Base de datos Oracle (Database)

La base de datos propiamente dicha es el conjunto de ficheros físicos almacenados en disco:

Tablespaces

Un tablespace es la unidad lógica de almacenamiento en Oracle. Agrupa uno o varios datafiles y dentro de él se organizan los objetos de base de datos (tablas, índices, etc.). Los tablespaces más relevantes son:

La gestión del espacio puede ser gestionada localmente (Locally Managed Tablespaces, el estándar actual) o por diccionario (Dictionary Managed, obsoleto).

Esquemas y usuarios

En Oracle, un usuario es una cuenta con credenciales de acceso a la base de datos. Un esquema es el conjunto de objetos (tablas, vistas, procedimientos, secuencias, etc.) que pertenecen a ese usuario. En Oracle, usuario y esquema son conceptos inseparables: al crear un usuario se crea automáticamente su esquema asociado.

La gestión de usuarios incluye:

Privilegios y roles

Oracle distingue entre privilegios de sistema (permiten ejecutar un tipo de operación, como CREATE TABLE o CREATE SESSION) y privilegios de objeto (permiten operar sobre un objeto concreto: SELECT, INSERT, UPDATE, DELETE, EXECUTE). Los roles son agrupaciones de privilegios que facilitan la administración. Roles predefinidos relevantes:

Diccionario de datos

El diccionario de datos es el repositorio interno de metadatos de Oracle. Se consulta mediante vistas con tres prefijos:

Listener y conectividad

El Oracle Listener es el proceso de red que escucha peticiones de conexión entrantes en el servidor Oracle. Opera por defecto en el puerto 1521 mediante el protocolo TCP/IP. Cuando un cliente solicita conexión, el listener la recibe y la redirige a la instancia correspondiente o lanza un proceso servidor dedicado. Se gestiona con la herramienta lsnrctl (start, stop, status, reload). La conectividad cliente se configura mediante el fichero tnsnames.ora, que mapea alias de conexión (TNS names) con los parámetros del servidor (host, puerto, SID o Service Name).


Modos de operación de la base de datos

Oracle distingue varios estados operacionales:


Procesos en segundo plano (Background Processes)

Los procesos background son fundamentales para comprender el funcionamiento interno de Oracle:


2. PL/SQL — Lenguaje Procedural de Oracle

¿Qué es PL/SQL?

PL/SQL (Procedural Language / Structured Query Language) es la extensión procedural de SQL desarrollada por Oracle. Permite combinar sentencias SQL con estructuras de control de flujo (condicionales, bucles), manejo de excepciones y modularización del código mediante procedimientos, funciones y paquetes. Es el lenguaje nativo de Oracle para la programación en el lado del servidor.


Estructura básica de un bloque PL/SQL

Todo código PL/SQL se organiza en bloques con la siguiente estructura:

DECLARE
  -- Declaración de variables, constantes, cursores, tipos
  v_nombre VARCHAR2(100);
  v_contador NUMBER := 0;
BEGIN
  -- Código ejecutable: sentencias SQL y lógica de control
  SELECT nombre INTO v_nombre FROM empleados WHERE id = 1;
  DBMS_OUTPUT.PUT_LINE('Nombre: ' || v_nombre);
EXCEPTION
  -- Manejo de errores
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('No se encontró el registro.');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END;
/

Las secciones DECLARE y EXCEPTION son opcionales; BEGIN...END es obligatoria.


Variables y tipos de datos

PL/SQL hereda los tipos de datos de Oracle SQL y añade tipos propios:


Cursores

Un cursor es un puntero a un conjunto de filas devuelto por una consulta SQL. Permite iterar sobre los resultados fila a fila.

Cursor implícito

Oracle abre y cierra automáticamente un cursor implícito para cada sentencia DML o SELECT INTO. Se puede consultar su estado mediante atributos: SQL%FOUND, SQL%NOTFOUND, SQL%ROWCOUNT, SQL%ISOPEN.

Cursor explícito

El programador declara, abre, recupera y cierra el cursor manualmente:

DECLARE
  CURSOR c_empleados IS
    SELECT id, nombre, salario FROM empleados WHERE dpto = 10;
  v_emp c_empleados%ROWTYPE;
BEGIN
  OPEN c_empleados;
  LOOP
    FETCH c_empleados INTO v_emp;
    EXIT WHEN c_empleados%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_emp.nombre || ': ' || v_emp.salario);
  END LOOP;
  CLOSE c_empleados;
END;
/

Cursor FOR LOOP

Forma simplificada que abre, recupera y cierra el cursor automáticamente:

BEGIN
  FOR v_emp IN (SELECT nombre, salario FROM empleados WHERE dpto = 10) LOOP
    DBMS_OUTPUT.PUT_LINE(v_emp.nombre);
  END LOOP;
END;
/

Cursor con parámetros y REF CURSOR

Los cursores pueden recibir parámetros para mayor reutilización. Los REF CURSOR (cursores por referencia) permiten pasar un cursor como parámetro entre subprogramas o devolver un conjunto de resultados desde un procedimiento almacenado.


Procedimientos almacenados

Un procedimiento almacenado es un bloque PL/SQL nombrado y compilado que se almacena en la base de datos y puede ser invocado por nombre. Los parámetros pueden ser de entrada (IN), salida (OUT) o entrada-salida (IN OUT):

CREATE OR REPLACE PROCEDURE actualizar_salario (
  p_id      IN  empleados.id%TYPE,
  p_nuevo   IN  empleados.salario%TYPE,
  p_anterior OUT empleados.salario%TYPE
) AS
BEGIN
  SELECT salario INTO p_anterior FROM empleados WHERE id = p_id;
  UPDATE empleados SET salario = p_nuevo WHERE id = p_id;
  COMMIT;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Empleado no encontrado: ' || p_id);
END actualizar_salario;
/

Funciones

Una función es similar a un procedimiento, pero obligatoriamente devuelve un valor mediante RETURN. Puede usarse directamente en sentencias SQL si no tiene efectos secundarios:

CREATE OR REPLACE FUNCTION calcular_irpf (p_salario IN NUMBER)
RETURN NUMBER AS
  v_tipo NUMBER;
BEGIN
  IF p_salario < 12000 THEN v_tipo := 0;
  ELSIF p_salario < 20000 THEN v_tipo := 0.19;
  ELSE v_tipo := 0.30;
  END IF;
  RETURN ROUND(p_salario * v_tipo, 2);
END calcular_irpf;
/

Paquetes (Packages)

Un paquete es la unidad de modularización más potente de PL/SQL. Agrupa procedimientos, funciones, variables, cursores y tipos relacionados bajo un mismo nombre. Se compone de dos partes:

-- Especificación
CREATE OR REPLACE PACKAGE pkg_empleados AS
  PROCEDURE dar_alta(p_nombre VARCHAR2, p_dpto NUMBER);
  FUNCTION total_dpto(p_dpto NUMBER) RETURN NUMBER;
END pkg_empleados;
/

-- Cuerpo
CREATE OR REPLACE PACKAGE BODY pkg_empleados AS
  PROCEDURE dar_alta(p_nombre VARCHAR2, p_dpto NUMBER) AS
  BEGIN
    INSERT INTO empleados(nombre, dpto) VALUES (p_nombre, p_dpto);
    COMMIT;
  END dar_alta;

  FUNCTION total_dpto(p_dpto NUMBER) RETURN NUMBER AS
    v_total NUMBER;
  BEGIN
    SELECT COUNT(*) INTO v_total FROM empleados WHERE dpto = p_dpto;
    RETURN v_total;
  END total_dpto;
END pkg_empleados;
/

Triggers

Un trigger (disparador) es un bloque PL/SQL que se ejecuta automáticamente en respuesta a un evento de la base de datos: una operación DML (INSERT, UPDATE, DELETE) sobre una tabla o vista, o eventos del sistema (logon, startup, etc.).

Tipos principales:

CREATE OR REPLACE TRIGGER trg_auditoria_salario
AFTER UPDATE OF salario ON empleados
FOR EACH ROW
BEGIN
  INSERT INTO auditoria_salarios (
    empleado_id, salario_anterior, salario_nuevo, fecha_cambio, usuario
  ) VALUES (
    :OLD.id, :OLD.salario, :NEW.salario, SYSDATE, USER
  );
END trg_auditoria_salario;
/

Manejo de excepciones

PL/SQL distingue entre excepciones predefinidas (declaradas internamente: NO_DATA_FOUND, TOO_MANY_ROWS, DUP_VAL_ON_INDEX, VALUE_ERROR, ZERO_DIVIDE, CURSOR_ALREADY_OPEN) y excepciones definidas por el usuario, que se declaran en la sección DECLARE y se lanzan con RAISE. La función RAISE_APPLICATION_ERROR(número, mensaje) permite lanzar errores con código y mensaje personalizados (códigos entre -20000 y -20999).


3. Oracle Application Express (APEX)

¿Qué es APEX?

Oracle APEX (Application Express) es el entorno de desarrollo de aplicaciones web de bajo código (low-code) integrado directamente en Oracle Database. Permite construir aplicaciones web completas —con formularios, informes, paneles de control, gráficos y procesos— utilizando exclusivamente el navegador como herramienta de desarrollo, sin necesidad de instalar software adicional. APEX genera HTML, JavaScript y CSS de forma automática a partir de los metadatos definidos por el desarrollador, y toda la lógica reside en la propia base de datos Oracle.

APEX en la UAH: el sistema Comunic@

El sistema Comunic@ de la UAH, utilizado para la gestión de comunicaciones y tramitaciones internas, ha sido desarrollado sobre Oracle APEX. Esto lo convierte en un ejemplo directo del uso de esta tecnología en la institución. Su desarrollo interno por parte del Servicio de Informática fue posible gracias al acuerdo de uso ilimitado de productos Oracle.

Arquitectura de APEX

APEX puede desplegarse en dos modos:

Componentes de una aplicación APEX

Ventajas de APEX en el contexto universitario


4. Oracle Application Server / Oracle WebLogic Server

Oracle Application Server (OAS)

Oracle Application Server fue la plataforma de middleware de Oracle para el despliegue de aplicaciones Java EE, servicios web y aplicaciones Oracle Forms y Reports. Incluía componentes como Oracle HTTP Server (basado en Apache), el contenedor OC4J (Oracle Containers for J2EE) y herramientas de gestión como Oracle Enterprise Manager. UXXI en sus versiones más antiguas fue desplegado sobre OAS.

Oracle WebLogic Server

Con la adquisición de BEA Systems en 2008, Oracle incorporó WebLogic Server como su servidor de aplicaciones Java EE principal, sustituyendo a OAS en las versiones modernas. WebLogic es un servidor de aplicaciones Java EE (Jakarta EE) de nivel empresarial que proporciona:

WebLogic es el servidor de aplicaciones sobre el que corren las versiones actuales de UXXI y otras aplicaciones corporativas de la UAH que requieren un middleware Java EE.


5. TOAD (Tool for Oracle Application Developers)

¿Qué es TOAD?

TOAD (Tool for Oracle Application Developers) es una herramienta de escritorio desarrollada por Quest Software (actualmente propiedad de Quest/Dell Technologies) para la administración, desarrollo y optimización de bases de datos Oracle. Es la herramienta de referencia entre DBAs y desarrolladores Oracle por su potencia, su interfaz intuitiva y la amplitud de sus funcionalidades.

La UAH dispone de 15 licencias activas de TOAD

La UAH tiene contratadas 15 licencias activas de TOAD, asignadas principalmente al personal técnico del Servicio de Informática (DBAs y desarrolladores). El número de licencias indica que se trata de una herramienta de uso especializado, no generalista.

Funcionalidades principales de TOAD

Desarrollo SQL y PL/SQL

Administración de la base de datos (DBA Module)

Importación y exportación de datos

Comparación y sincronización de esquemas

Generación de código y documentación


6. Administración Oracle (DBA): Backup, Recovery y Gestión

El rol del DBA Oracle

El DBA (Database Administrator) es el responsable de la instalación, configuración, mantenimiento, rendimiento, seguridad y disponibilidad de las bases de datos Oracle. Sus funciones abarcan desde la planificación de la capacidad hasta la recuperación ante desastres.


Backup en Oracle

Oracle ofrece dos grandes estrategias de backup:

Backup físico con RMAN (Recovery Manager)

RMAN es la herramienta nativa de Oracle para realizar backups físicos de la base de datos. Opera directamente con los bloques de datos de Oracle y tiene plena integración con el motor. Características principales:

Comandos básicos de RMAN:

RMAN> CONNECT TARGET /
RMAN> BACKUP DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
RMAN> BACKUP ARCHIVELOG ALL;
RMAN> LIST BACKUP;
RMAN> DELETE OBSOLETE;

Backup lógico con Data Pump

Data Pump (expdp/impdp) realiza exportaciones e importaciones lógicas de objetos de base de datos en formato binario propio de Oracle. Es útil para:

No sustituye al backup físico con RMAN como estrategia de recuperación ante desastres.


Recovery (Recuperación)

Oracle distingue varios tipos de recuperación:

Para realizar media recovery es imprescindible operar en modo ARCHIVELOG.

Modo ARCHIVELOG vs NOARCHIVELOG


Gestión de usuarios y privilegios (repaso DBA)

El DBA gestiona los usuarios mediante los siguientes comandos clave:

-- Crear usuario
CREATE USER uah_dba IDENTIFIED BY "Passw0rd#2024"
  DEFAULT TABLESPACE datos
  TEMPORARY TABLESPACE temp
  PROFILE perfil_produccion;

-- Asignar privilegios de conexión y recursos
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO uah_dba;

-- Asignar rol DBA (solo a cuentas de administración)
GRANT DBA TO uah_dba;

-- Asignar cuota en tablespace
ALTER USER uah_dba QUOTA UNLIMITED ON datos;

-- Revocar privilegio
REVOKE CREATE TABLE FROM uah_dba;

-- Eliminar usuario y todos sus objetos
DROP USER uah_dba CASCADE;

Gestión del rendimiento

El DBA Oracle debe monitorizar y optimizar el rendimiento de la base de datos. Las herramientas principales son:


Resumen: palabras clave y conceptos esenciales

Término Definición rápida
Oracle Database SGBD relacional de Oracle; base tecnológica de UXXI y aplicaciones UAH
Instancia Oracle Conjunto de memoria (SGA/PGA) y procesos background que acceden a la BD
SGA Memoria compartida de la instancia (buffer cache, shared pool, redo log buffer)
Tablespace Unidad lógica de almacenamiento que agrupa datafiles
Esquema Conjunto de objetos de base de datos pertenecientes a un usuario Oracle
Listener Proceso de red Oracle que atiende conexiones entrantes en el puerto 1521
PL/SQL Extensión procedural de SQL de Oracle (procedimientos, funciones, triggers)
Cursor Puntero a un conjunto de resultados SQL; explícito o implícito
Trigger Bloque PL/SQL que se ejecuta automáticamente ante eventos DML o del sistema
APEX Plataforma low-code de Oracle para desarrollo de aplicaciones web sobre la BD
Comunic@ Sistema interno de la UAH desarrollado sobre Oracle APEX
WebLogic Servidor de aplicaciones Java EE de Oracle; corre las versiones actuales de UXXI
TOAD Herramienta de desarrollo y administración Oracle; la UAH tiene 15 licencias
RMAN Herramienta nativa Oracle para backup y recovery físico
Data Pump Utilidad Oracle para backup lógico y migración de datos (expdp/impdp)
ARCHIVELOG Modo de operación obligatorio en producción; permite recovery completo
AWR Repositorio de estadísticas de rendimiento de Oracle
DBA Administrador de base de datos Oracle
TNS / tnsnames.ora Mecanismo de resolución de nombres para conectividad Oracle
ORDS Oracle REST Data Services; servidor HTTP para despliegue moderno de APEX

Ideas clave para retener

  1. La UAH tiene uso ilimitado de productos Oracle para docencia, investigación y gestión.
  2. Oracle Database es la base de UXXI y de las aplicaciones desarrolladas internamente, como Comunic@.
  3. La arquitectura Oracle se articula en torno a la instancia (memoria + procesos) y la base de datos (ficheros en disco), con los tablespaces como unidad lógica de almacenamiento.
  4. El Listener en el puerto 1521 gestiona todas las conexiones entrantes a Oracle.
  5. PL/SQL es el lenguaje nativo del servidor Oracle: cursores, procedimientos, funciones, paquetes y triggers son sus elementos fundamentales.
  6. Oracle APEX permite desarrollar aplicaciones web directamente sobre la base de datos; Comunic@ es el ejemplo de uso en la UAH.
  7. WebLogic Server es el servidor de aplicaciones Java EE sobre el que corre UXXI en su versión actual.
  8. TOAD es la herramienta principal de los DBAs y desarrolladores Oracle de la UAH (15 licencias activas).
  9. El backup con RMAN y el modo ARCHIVELOG son imprescindibles en entornos de producción para garantizar la recuperabilidad completa de los datos.
  10. El DBA Oracle gestiona usuarios, privilegios, tablespaces, rendimiento y disponibilidad de la base de datos.