top of page

ESTRUCTURAS DE ALMACENAMIENTO EN ORACLE

1. Descripción de estructuras de almacenamiento

Oracle garantiza una abstracción total entre los almacenamientos lógico y físico.


El almacenamiento lógico de datos se realiza mediante distintos tipos de Segmentos (Segments), los cuales se almacenan físicamente en los ficheros de datos (Data files).


La abstracción entre ambos almacenamientos se logra mediante Tablespaces y es definida y mantenida en el Diccionario de Datos (DD).


1. Estructuras físicas.

Se requieren 3 tipos de ficheros para componer una BD de Oracle:

  • Fichero de Control (Control file).

  • Ficheros Redo (Redo log files).

  • Ficheros de datos (Data files).


Pero hay otros ficheros de datos para opciones avanzadas que son:

  • Archivo de parámetros de la instancia.

  • Fichero de password.

  • Archivo Redo Log files

  • Fichero de Alert Log

  • Fichero de Trace Files.


1. CONTROL FILE (Fichero de Control)

Una Base de Datos tiene un Fichero de Control, el cual puede tener varias copias y Oracle recomienda realizar copias de este fichero, ya que la pérdida o daño del fichero provoca que la Base de Datos no se puede utilizar.

El Fichero de Control contiene punteros para el resto de la Base de Datos:

  • Los ficheros de datos.

  • La localización del Online Redo Log Files.

  • Los archivo log files si la Base de Datos está en modo Archive Log.


También almacena información para mantener la integridad de la Base de Datos como varios números de secuencia críticos y timestamps.


Si la herramienta Recovery manager está siendo utilizado para backups, los detalles de estos backups también serán almacenados en el Fichero de Control.


El Fichero de Control tendrá un tamaño de unos megabytes.


Cada Base de Datos tiene un Fichero de Control, pero un buen DBA hará copias múltiples por si un Fichero de Control

es dañado y la base datos pueda sobrevivir. El mantenimiento de las copias del fichero es automático, lo único que tiene que decidir el DBA es el número de copias y donde hacerlas, pero debería hacerlo al principio, ya que para

añadir más ficheros de control la Base de Datos no debe estar corriendo.


El número máximo de copias son 8. Y si una copia del controlfile es dañada la instancia será interrumpida. Oracle no permite el funcionamiento de la Base de Datos con menos de los controlfiles que han sido solicitados.


El Control file es el primero en abrirse cuando se levanta la instancia y se actualiza automáticamente cada vez que se produce una modificación de la estructura de la BD.


El Control file tiene el formato: controlnn.ctl.



2. REDO LOG FILES

EL Redo Log almacena en orden cronológico los vectores de cambio aplicado a la Base de Datos.


Si un archivo de datos es dañado o destruido, estos vectores de cambio pueden ser aplicados a los archivos de backups para rehacer el trabajo.


El Redo Log consiste de 2 ficheros:

  • El Online Redo Log files (que es obligatorio)

  • El archivo Log Files (que es opcional).


Cada Base de Datos tiene al menos 2 Online Redo Log files, pero se puede hacer copias. Y consiste de un grupo de Online Redo Log files, cada fichero es conocido como un miembro. Oracle Data Base requiere de al menos 2 grupos con al menos un miembro para cada grupo.


Si un miembro de un grupo deja de funcionar, la Base de Datos seguirá funcionando si hay más miembros en el grupo.


El tamaño de cada grupo es de 50 megabytes como mínimo, y se puede añadir más grupos o modificar su tamaño en cualquier momento, ya que no se necesita parar la Base de Datos.


El Redo log files tiene el formato: redonn.log.



3. DATA FILES

Como mínimo hay dos ficheros de datos. Se crean antes de crear la Base de Datos:

  • Uno se asigna al tablespace SYSTEM (que almacena el Diccionario de Datos).

  • Y otro se asigna al tablespace SYSAUX (que almacena datos auxiliares del Diccionario de Datos).


Los ficheros de datos almacenan datos y su tamaño y número es ilimitado.


Un segmento es una estructura que almacena datos, como las tablas, índices, etc…


Los ficheros de datos almacenan los segmentos que contienen los datos de usuario que los programadores ven y también almacenan los segmentos que forman el Diccionario de Datos.


A nivel del sistema operativo, un fichero de datos consiste de un número de bloques de sistema. Internamente los archivos de datos son formateados en bloques de Oracle. Estos bloques son consecutivamente enumerados. El tamaño de bloque es fijado cuando el archivo de datos es creado y generalmente es igual en toda la Base de Datos. El tamaño de los bloques puede estar entre los 3 kilobytes y los 64 kilobytes. No hay ninguna relación entre el tamaño de los bloques de Oracle y el tamaño de los bloques del sistema operativo.


Muchos DBA emparejan el tamaño del bloque del sistema operativo al tamaño del bloque de Oracle. Por motivos de ejecución los bloques del sistema operativo nunca deberían ser más grandes que el de Oracle.


Dentro de un bloque, hay una sección cabecera y un área de datos y posiblemente algo de espacio libre.


La sección cabecera contiene información:

  • Como el diccionario de fila, que muestra la localización dentro del área de datos de las filas en los bloques (si el bloque es usado para un segmento de tabla)

  • También información de cierre de fila, si hay una transacción trabajando en las filas del bloque.


El área de datos contienen el dato en si mismo, como filas, si es parte de un segmento de tabla o claves indexadas si el bloque es parte de un segmento índice.


Cuando una sesión de usuario necesita trabajar con datos, el proceso servidor que apoya la sesión, localiza el bloque relevante en el disco y lo copia en un buffer libre del Buffer Cache de la Base de Datos. Si los datos en el bloque son cambiados (buffer sucio) por un comando DML, el proceso DBWn escribirá el bloque sucio en los ficheros de datos del disco.


El Datafiles tiene el formato: tablespacenamenn.dbf



4. Otros ficheros de base de datos

Estos archivos existen externamente a la Base de Datos.


Fichero de parámetro de instancia:

  • Cuando una instancia comienza, las estructuras SGA forma la memoria y los procesos background empiezan según la configuración en el fichero de parámetros. Este es el único archivo que necesita existir a fin de comenzar una instancia.

  • Hay varios de cientos de parámetros, pero solamente el parámetro DB_NAME es necesario. Todos los demás parámetros están por defecto.


Archivo de Password (Contraseña):

  • Los usuarios establecen sesiones presentando un nombre de usuario y una contraseña.

  • El servidor de Oracle autentifica a estos contra usuarios definidos y almacenados en el Diccionario de Datos.

  • El Diccionario de Datos es un conjunto de tablas que está en la Base de Datos; por lo tanto es inaccesible si la Base de Datos no está abierta. Pero con el archivo de password externo se puede comprobar la validez de un usuario sin que la Base de Datos esté abierta.


El archivo Redo Log Files:

  • Cuando un Online Redo Log file se llena, el proceso ARCn lo copia de la Base de Datos a un archivo Redo Log file. Una vez hecho esto, el archivo log no es parte de la Base de Datos pero es esencial si alguna vez es necesario restaurar el backup de fichero de datos.


Fichero de Alert Log (Fichero de Alerta):

  • El Alert Log es un registro continuo que almacena información de ciertas operaciones críticas que afectan a la instancia y a la Base de Datos. Su posición está determinada por el parámetro BACKGROUND_DUMP_DEST, y su nombre es alert_SID.log, donde SID es el nombre de la instancia.

  • No todo es registrado pero sí los eventos que son considerados importantes, como:

    • El arranque y cierre de la Base de Datos.

    • Cambios en las estructuras físicas de la Base de Datos.

    • Cualquier bloque de fichero de datos corrupto.

    • Cambios en los parámetros que controlan la instancia.


Fichero Trace File (Fichero Traza):

  • Los Trace Files son generados por procesos background (de fondo) cuando ellos descubren condiciones de error, y a veces para relatar ciertas acciones. Su posición está determinada por el parámetro BACKGROUND_DUMP_DEST, junto con un alert log.


4. Estructuras lógicas de una base de datos.

Oracle usa el término de segmento para describir cualquier estructura que contiene datos. (Tablas, índices, etc) .Un segmento típico es la tabla, conteniendo filas de datos, pero hay una docena de segmentos diferentes.


Los programadores ven segmentos lógicos. Oracle abstrae el almacenaje lógico del almacenaje físico por medio del tablespace.


Un tablespace es lógicamente una colección de uno o varios segmentos, y físicamente una colección de uno o varios archivos de datos.


Hay segmentos que se tienen que crear a la vez que se crea la Base de Datos, y son los segmentos que forman el

Diccionario de Datos. Estos segmentos son almacenados en 2 tablespaces, el SYSTEM y el SYSAUX y con al menos un archivo de datos en cada uno.


Un segmento consistirá de un número de bloques. Los ficheros de datos son formateados en bloques. Los bloques son agrupados en extents. Un extent es una serie de bloques que son consecutivamente enumerados dentro de un fichero de datos y los segmentos crecerán al añadir nuevos extent.


Existen 4 tipos principales de Segmentos (Segments):

o De tablas (Espacio ocupado por tablas).

o De índices (Espacio ocupado por índices).

o De anulación (Espacio temporal para almacenar la información que permite anular una transacción).

o Temporales (Espacio temporal utilizado en operaciones de ordenamiento).



5. Diccionario de datos (dd)

El Diccionario de Datos es un metadata: datos sobre datos. Es decir que describe la Base de Datos, tanto físicamente como lógicamente y su contenido, las definiciones de usuario, la información de seguridad, etc.

Los segmentos que están en el Diccionario de Datos apuntan a otros segmentos (tablas e índices). No se debe modificar los segmentos del Diccionario de Datos.


La relación entre los tablespace y los ficheros de datos es mantenida por el Fichero de Control. El Fichero de Control nos dice de qué tablespace forma parte un fichero de datos. Sin el Fichero de Control no hay ningún modo de que una instancia pueda localizar los ficheros de datos, ni de identificar los ficheros que forman el tablespace SYSTEM. Y solo cuando el tablespace SYSTEM ha sido abierto es posible que la instancia pueda tener acceso al Diccionario de Datos, el cual permite abrir la Base de Datos.


El código de SQL siempre se referirá a objetos definidos en el Diccionario de Datos. Para encontrar una tabla, Oracle debe preguntar primero al Diccionario de Datos si existe esa tabla, que columnas la forma, donde se encuentra, etc.


En definitiva almacena metadatos tanto sobre la visión lógica y física de la BD, como sobre su contenido:

o Estructuras de almacenamiento.

o Usuarios y derechos.

o Restricciones de integridad.

o Objetos (tablas, vistas, índices, procedimientos, funciones,) etc.


Pertenece al usuario SYS y se implementa como un conjunto de Segmentos en los Tablespaces SYSTEM y SYSAUX.


Para consultarlo se proporcionan un conjunto de vistas:

  • DBA_* (Vistas solo visibles por los roles de administrador de la BD y contienen información sobre todos los objetos de la Base de Datos).

  • USER_* (Vistas solo visibles por el usuario actual y contienen información sobre objetos del usuario que la consulta).

  • ALL_* (Vistas visibles por todos los usuarios y contienen información sobre objetos a los que se tiene acceso, ya sea un objeto nuestro o de otro al que nos hayan dado permiso).


Gran parte o todo el Diccionario de datos, se carga en memoria en la Dictionary Cache de la Shared Pool, y es utilizado internamente para el tratamiento de consultas.


Los segmentos que forman el diccionario de datos son segmentos como: tablas e índices. La diferencia es que las tablas del Diccionario de Datos son generados a la vez que se crea la base de datos, y no se pueden acceder a ellos directamente.



6. Las vistas de interpretacion dinamicas.

Hay más de 300 vistas de interpretación dinámicas. Las vitas que empiezan por “V$” son sinónimos de las vistas que empiezan por “V_”


La vista V$SQL tiene una fila por cada sentencia corriente almacenada en el Shared Pool.


Las vistas de interpretación dinámicas ofrecen información sobre la instancia y sobre la base de datos. La mayoría de las vista tiene información de la instancia y el resto del fichero de control.


Las vistas V$INSTANCE o V$SYSTAT, están disponibles siempre aun cuando la instancia está en NOMOUNT.


Las vistas V$DATABASE o V$DATAFILE no pueden ser preguntadas hasta que la instancia está montada, que es cuando el fichero de control es leído.


Las vistas del diccionario de datos (ALL_, DBA_ , USER_) solo pueden ser preguntadas cuando la base de datos es abierta.


Las vistas de interpretación dinámicas son pobladas por la instancia o por el fichero de control; las vistas DBA_, ALL_ y USER_ son pobladas del diccionario de datos.


Las vistas de interpretación dinámicas son creadas en el startup, actualizadas durante la vida de la instancia, y desaparecen con el cierre.


Las vistas de diccionario de datos DBA_TABLESPACES son plural, y las vistas de interpretación dinámicas son singular V$TABLESPACE.

  • V$DATAFILE y V$LOGFILE-> Tienen datos de la estructura física.

Para más información

oferta en cursos online
bottom of page