Estructura logica
Estructura lógica:
Una base de datos está formada por una o varias unidades lógicas llamadas tablespaces. Un tablespace es la unidad de almacenamiento lógico. Además, cada una de estos tablespaces está formada por uno o varios ficheros físicos que son los datafiles. Un datafile solamente puede pertenecer a un tablespace. Por lo tanto, los datafiles de una base de datos son todos los datafiles que forman parte de todos los tablespaces de la base.
Cuando se crea una base de datos, lleva implicita la creacion de 3 o 4 tablespaces que son:
SYSTEM: es el tablespace principal de la bd, donde se almacena el diccionario de datos y el tablespace por defecto de todos los demas usuarios si no les asignamos otro distinto.
SYSAUX: Es principalmente donde se almacenan las metricas del sistema, los snapshots y demas estadisticas. Si no tenemos cuidado con la configuracion de nuestra base de datos a nivel de tiempo de retencion de toda esta recopilacion de metricas, podemos tener problemas en el futuro con el tamaño de este tablespace.
UNDO: Es el tablespace de rollback de la base de datos y es obligatorio crearlo siempre y cuando tengamos el parametro UNDO_MANAGEMENT=AUTO, si su valor es MANUAL, se crearan segmentos de rollback en el tablespace system en lugar del tablespace UNDO.
TEMP: Es un tablespace temporal, el cual se utiliza para realizar las ordenaciones y agrupaciones en las queries, dejando luego libre el espacio que se ha utilizado. Se pueden crear varios tablespaces TEMP en la base de datos, habiendo un parametro global que indica cual va a ser utilizado por defecto, pero teniendo tambien la posibilidad de definir un temporary tablespace a nivel de schema.
En la base de datos tenemos dos tablas en las que podemos consultar la informacion de nuestros tablespaces, V$TABLESPACE y DBA_TABLESPACES.
Segmentos:
Un segmento almacena la información de una estructura lógica de Oracle dentro de un Tablespace. Está formado por una o más extensiones y, a medida que va creciendo el segmento se van asignando nuevas extensiones al mismo. Hay cuatro tipos de segmentos: de datos, de índices, temporales y de rollback.
Tendremos segmentos de datos para tablas, segmentos de índices para índices, segmentos de rollback para poder deshacer o rehacer cambios por transacciones y segmentos temporales.
Un segmento de datos es el lugar donde se almacenan todos los datos de una tabla, de una partición de una tabla o de un cluster de tablas. Se crea el segmento de datos a la hora de ejecutar la sentencia create que crea la tabla, cluster o partición. En dicha sentencia se indican también los valores de la cláusula storage, en el cuál se va a determinar la forma en que dicho segmento va a ir asignando y desasignando las extensiones.
Podemos consultar la informacion de los segmentos en la tabla DBA_SEGMENTS.
Extensiones:
Una extensión es una unidad lógica de almacenamiento que está formada por un número determinado de bloques de datos contiguos. La agrupación de una o varias extensiones forman un segmento que puede ser una tabla, un índice, un segmento de rollback o un segmento temporal. Por lo tanto, datos de una tabla, sabemos que están en un solo segmento de tipo tabla, que a su vez estará formado por una o varias extensiones y que, cada una de esas extensiones está formada por un número determinado de bloques de datos.
Bloques:
El bloque es la unidad mínima de almacenamiento en Oracle y podemos elegir el tamaño en el momento de la creación de nuestra base de datos, dependiendo del uso que vayamos a dar a la misma y no pudiendo modificar este dato, mas que en ciertos upgrades a versiones mas modernas del producto.
Cabecera:
Contiene información general sobre el bloque como el tipo de segmento al que pertenece (índice, tabla, rollback) o la dirección del bloque.
Directorio de Tablas:
Contiene información acerca de las tablas que tienen datos en el bloque.
Directorio de Filas:
Contiene información sobre las filas que se encuentran en cada momento en el bloque. Esta información incluye la dirección de la fila dentro de la subzona “Datos de Filas” del bloque en la que debe buscar Oracle los datos.
Espacio Libre:
Esta subzona está reservada para la inserción de nuevas filas en el bloque o, para la modificación de campos que requieren más espacio que el que tenían con anterioridad. Esto último ocurre, por ejemplo, con los campos que son de tipo varchar2.
Datos de Filas:
En esta subzona se almacenan los datos de las tablas o de los índices del bloque. Se puede dar el caso de que una fila no entre completa en el bloque y tenga que ocupar más de un bloque. Este caso especial se comentará más a fondo en el apartado de encadenamiento y migración de filas.
Comentarios
Publicar un comentario