Tablas Inmutables en 19c, 21c y 23ia


¡Bienvenidos a un nuevo boletín de La Botica del DBA! En esta edición, en la primera sección exploraremos una característica fascinante de Oracle Database 19c y 21c: las tablas inmutables.
Oracle 19c:
En esta versión, las tablas inmutables no están disponibles como una característica estándar. Oracle 19c se centra más en la estabilidad y el rendimiento de las características existentes, pero no incluye soporte para tablas inmutables.
Oracle 21c:
Oracle 21c introduce las tablas inmutables como una nueva característica. Esta versión permite crear tablas que no pueden ser modificadas después de la inserción de datos, proporcionando una capa adicional de seguridad y protección de datos. Las tablas inmutables en 21c están diseñadas para casos de uso donde la integridad de los datos es crítica.
Las tablas inmutables
Son tablas a prueba de manipulaciones, donde solo se permiten inserciones, y cuentan con un periodo de retención a nivel de tabla y de fila. Aunque son similares a las tablas de blockchain, las filas no están encadenadas mediante hashes criptográficos.
Las tablas de blockchain se introdujeron en la versión 21c y se retroportaron a la 19.10. Las tablas inmutables se presentaron simultáneamente en Oracle 21.3 y 19.11, por lo que se consideran una nueva característica de las versiones 19c y 21c.
Al aprender sobre las tablas inmutables, es importante no establecer periodos de retención excesivamente largos, ya que podrías tener que esperar mucho tiempo para eliminar tus tablas de prueba.
Requisitos Previos Antes de poder utilizar una tabla inmutable, el parámetro COMPATIBLE debe estar configurado correctamente.
Para 19c:
ALTER SYSTEM SET COMPATIBLE='19.11.0' SCOPE=SPFILE;
Para 21c:
ALTER SYSTEM SET COMPATIBLE='21.0.0' SCOPE=SPFILE;
Recuerda que Oracle recomienda precaución al aumentar el parámetro COMPATIBLE. Si tienes dudas, es mejor no modificarlo.
Creación de una Tabla Inmutable Para crear una tabla inmutable, además de añadir la palabra clave IMMUTABLE al comando CREATE TABLE, existen dos cláusulas inmutables:
NO DROP: Determina cuánto tiempo la tabla está protegida de ser eliminada.
NO DELETE: Determina el periodo de retención de cada fila.
Ejemplo de creación:
CREATE IMMUTABLE TABLE Boticario (
ID_Boticario NUMBER,
Nombre VARCHAR2(50),
Cantidad_Medicamentos NUMBER,
Fecha_Ingreso DATE,
CONSTRAINT Boticario_pk PRIMARY KEY (ID_Boticario)
)
NO DROP UNTIL 0 DAYS IDLE
NO DELETE UNTIL 30 DAYS AFTER INSERT;
ID_Boticario: Identificador único para cada boticario.
Nombre: Nombre del boticario.
Cantidad_Medicamentos: Número de medicamentos que el boticario maneja.
Fecha_Ingreso: Fecha en que el boticario ingresó al sistema.
Alteración de una Tabla Inmutable La cláusula NO DROP puede ser alterada usando el comando ALTER TABLE, siempre que el periodo de retención no se reduzca. Sin embargo, en la versión 19c, esto no parece funcionar correctamente para tablas creadas con NO DROP UNTIL 0 DAYS IDLE.
Operaciones DML y DDL Bloqueadas Como era de esperar para una tabla de solo inserción, todas las operaciones DML y DDL que resultarían en la modificación o eliminación de datos de fila están bloqueadas.
Paquete DBMS_IMMUTABLE_TABLE El paquete DBMS_IMMUTABLE_TABLE se utiliza para el mantenimiento de tablas inmutables, permitiendo eliminar filas que han superado el periodo de retención.
Consideraciones Antes de usar tablas inmutables, ten en cuenta que su implementación puede presentar algunos errores en versiones anteriores a la 21.3. Además, las tablas inmutables pueden ser indexadas y particionadas de manera normal.
Oracle 23c (23ia):
- En Oracle 23c, las tablas inmutables se han optimizado y mejorado. Esta versión ofrece más flexibilidad y control sobre las políticas de retención de datos, como "NO DROP UNTIL" y "NO DELETE UNTIL", que permiten especificar períodos de tiempo antes de que los datos puedan ser eliminados o las tablas puedan ser eliminadas. Oracle 23c también mejora el rendimiento y la gestión de estas tablas, haciéndolas más eficientes para grandes volúmenes de datos y aplicaciones empresariales.
Tablas Inmutables en Oracle: Un Enfoque practico para la Gestión de Datos en la Botica
Con su versión 23c y anteriores como vimos en la sección anterior, ha introducido el concepto de tablas inmutables, que permite a los administradores de bases de datos garantizar que ciertos datos no sean modificados una vez insertados. Este artículo explora el uso de tablas inmutables en el contexto de una botica, proporcionando ejemplos prácticos para ilustrar su implementación.
¿Qué son las Tablas Inmutables?
Las tablas inmutables son una característica de Oracle que permite definir tablas cuyos datos no pueden ser modificados después de su inserción. Esto es particularmente útil para datos históricos, registros de auditoría, o cualquier información que requiera una protección adicional contra modificaciones accidentales o malintencionadas.
Beneficios de las Tablas Inmutables
Integridad de Datos: Garantizan que los datos críticos no sean alterados.
Seguridad: Protegen contra modificaciones no autorizadas.
Auditoría: Facilitan el seguimiento de cambios al mantener los datos originales intactos.
Implementación en una Botica
Consideremos una botica que necesita mantener registros de las ventas de medicamentos y las recetas médicas. Estos datos son sensibles y deben ser protegidos contra modificaciones.
Ejemplo de Tablas Inmutables
Tabla de Ventas
CREATE IMMUTABLE TABLE Ventas (
ID_Venta NUMBER PRIMARY KEY,
Fecha DATE NOT NULL,
ID_Medicamento NUMBER NOT NULL,
Cantidad NUMBER NOT NULL,
Precio NUMBER NOT NULL
);
ID_Venta: Identificador único para cada venta.
Fecha: Fecha de la venta.
ID_Medicamento: Identificador del medicamento vendido.
Cantidad: Cantidad de medicamento vendido.
Precio: Precio total de la venta.
Tabla de Recetas
CREATE IMMUTABLE TABLE Recetas (
ID_Receta NUMBER PRIMARY KEY,
Fecha DATE NOT NULL,
ID_Paciente NUMBER NOT NULL,
ID_Medicamento NUMBER NOT NULL,
Dosis VARCHAR2(50) NOT NULL
);
ID_Receta: Identificador único para cada receta.
Fecha: Fecha de emisión de la receta.
ID_Paciente: Identificador del paciente.
ID_Medicamento: Identificador del medicamento prescrito.
Dosis: Dosis prescrita del medicamento.
Consideraciones Finales
El uso de tablas inmutables en Oracle es una estrategia eficaz para proteger datos críticos en una botica. Al implementar estas tablas, se asegura que los registros de ventas y recetas se mantengan inalterados, proporcionando una capa adicional de seguridad y confiabilidad.
Las tablas inmutables son una herramienta poderosa para cualquier administrador de bases de datos que busque mejorar la integridad y seguridad de sus datos. Con Oracle 23c, esta funcionalidad se ha optimizado para ofrecer un rendimiento robusto y una gestión de datos eficiente.
Conclusión
Las tablas inmutables representan un avance significativo en la gestión de datos dentro de Oracle. Para una botica, donde la precisión y la seguridad de los datos son esenciales, estas tablas ofrecen una solución ideal para proteger información sensible y garantizar la integridad de los registros. Al adoptar esta tecnología, las boticas pueden mejorar sus prácticas de gestión de datos y asegurar que sus operaciones se realicen de manera segura y eficiente.
En resumen, mientras que Oracle 19c no ofrece soporte para tablas inmutables, Oracle 21c introduce esta característica, y Oracle 23c la mejora y optimiza para un uso más robusto y flexible en entornos empresariales.
¿Por qué usarías una tabla inmutable? Si necesitas una tabla a prueba de manipulaciones donde solo se permiten inserciones, esta podría ser la solución. Si buscas seguridad adicional mediante hashes t, podrías considerar las tablas de blockchain. ¡Coméntanos en qué usarías las tablas inmutables y cómo podrían beneficiar tus aplicaciones!
¡Esperamos que esta información te sea útil en tu camino como DBA! Hasta la próxima edición.
Subscribe to my newsletter
Read articles from Mauricio Muñoz Palma directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Mauricio Muñoz Palma
Mauricio Muñoz Palma
Bienvenidos a "La Botica del DBA" Donde la pasión por las bases de datos Oracle se transforma en conocimiento y excelencia. Este espacio está diseñado para ser el laboratorio de ideas, soluciones y estrategias que todo DBA necesita para optimizar, innovar y liderar en el mundo de las bases de datos. Desde los fundamentos hasta las últimas tendencias, aquí encontrarás guías prácticas, análisis profundos y herramientas que impulsarán tu carrera y tus proyectos al siguiente nivel.