La arquitectura de base de datos de Oracle consta de tres niveles: la estructura lógica, la física y la de asignación de espacio. A nivel lógico, la base de datos se divide en tablespaces y esquemas de objetos. A nivel físico, los datos se almacenan en datafiles, los registros de cambios en redo log files y la estructura en control files. La asignación de espacio se realiza mediante bloques de datos, extensiones y segmentos.
0 calificaciones0% encontró este documento útil (0 votos)
66 vistas11 páginas
La arquitectura de base de datos de Oracle consta de tres niveles: la estructura lógica, la física y la de asignación de espacio. A nivel lógico, la base de datos se divide en tablespaces y esquemas de objetos. A nivel físico, los datos se almacenan en datafiles, los registros de cambios en redo log files y la estructura en control files. La asignación de espacio se realiza mediante bloques de datos, extensiones y segmentos.
La arquitectura de base de datos de Oracle consta de tres niveles: la estructura lógica, la física y la de asignación de espacio. A nivel lógico, la base de datos se divide en tablespaces y esquemas de objetos. A nivel físico, los datos se almacenan en datafiles, los registros de cambios en redo log files y la estructura en control files. La asignación de espacio se realiza mediante bloques de datos, extensiones y segmentos.
La arquitectura de base de datos de Oracle consta de tres niveles: la estructura lógica, la física y la de asignación de espacio. A nivel lógico, la base de datos se divide en tablespaces y esquemas de objetos. A nivel físico, los datos se almacenan en datafiles, los registros de cambios en redo log files y la estructura en control files. La asignación de espacio se realiza mediante bloques de datos, extensiones y segmentos.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 11
Manual del estudiante de Ingeniera en Sistemas de UTN
Bases de datos avanzadas
Arquitectura de la base de datos Oracle Manual del estudiante de Ingeniera en Sistemas de UTN/Bases de datos avanzadas/Arquitectura de la base de datos Oracle Contenido [ocultar] 1 Instancia Oracle o 1.1 Los procesos de usuario y los procesos Oracle o 1.2 Estructura lgica de la DB 1.2.1 Tablespaces 1.2.2 Data blocks 1.2.3 Extents 1.2.4 Segments 1.2.5 Schemas Objects 1.2.6 Consideraciones o 1.3 Estructura fsica de la DB 1.3.1 Datafiles 1.3.2 Redo Log files 1.3.3 Control files o 1.4 Bloques de datos, Extensiones y Segmentos 1.4.1 Formato del bloque de datos 1.4.1.1 El overhead 1.4.1.2 Datos de fila 1.4.1.3 Espacio libre 1.4.2 PCTFREE, PCTUSED y Encadenamiento de filas 1.4.3 Asignacin y liberacin de espacio 1.4.3.1 Asignacin de extents 1.4.3.1.1 Algoritmo de asignacin de segmentos 1.4.3.2 Liberacin de los extents 1.4.3.2.1 Tablas Nonclustered 1.4.3.2.2 Tablas Clustered 1.4.3.2.3 Indices 1.4.3.2.4 Segmentos Rollback 1.4.3.2.5 Segmentos temporarios 1.4.4 Segmentos 1.4.4.1 Segmentos de datos 1.4.4.2 Segmentos de ndices 1.4.4.3 Segmentos temporarios 1.4.4.4 Segmentos de rollback 1.4.4.5 Contenido de los segmentos de rollback 1.4.4.6 Transacciones y segmentos rollback Instancia Oracle[editar] Cada vez que se arranca una base de datos se asigna en la memoria un rea Global del Sistema (SGA), que emplean los usuarios para compartir informacin de la base, y algunos procesos background de Oracle son inicializados. Estos procesos, junto con la memoria buffer, constituyen la Instancia Oracle. Los procesos de usuario y los procesos Oracle[editar] Un proceso de usuario ejecuta el cdigo de un programa de aplicacin o una herramienta Oracle, y se comunica con los procesos del servidor. Los procesos del servidor son creados por Oracle para capturar los requerimientos de los procesos de usuario. Los procesos background realizan las operaciones de I/O y monitorean a los otros procesos; lo realizan asincrnicamente para proveer mayor paralelismo y mejorar la performance. Database Writer (DBWR) Escribe los bloques modificados desde el DB buffer a los datafiles. Log Writer (LGWR) Escribe las entradas del redo log generadas en el redo log buffer al disco. Checkpoint (CKPT) Da una seal al DBWR de los checkpoints y actualiza todos los datafiles y control files para indicar el ms reciente checkpoint. System Monitor (SMON) Realiza la recuperacin de la instancia cuando se realiza el startup. Limpia los segmentos temporales y recupera transacciones muertas durante alguna falla. Agrupa extents libres que tienen PCTINCREASE=1. Process Monitor (PMON) Realiza la recuperacin de los procesos cuando un proceso de usuario falla; limpia el cach y libera recursos que el proceso usaba. Archiver (ARCH) Copia el redo log file online a un almacenamiento de archivo cuando est lleno. Recoverer (RECO) Resuelve transacciones distribuidas que quedaron pendientes durante una falla en una DB distribuida. Dispatcher (Dnnn) Se presentan cuando es usada una configuracin de server multithread. Lock (LCKn) Es usado para el bloqueo inter-instancia en el Oracle Parallel Server. Estructura lgica de la DB[editar] Tablespaces[editar] La DB est dividida en una o ms unidades lgicas de almacenamiento llamadas tablespaces, que a su vez pueden estar constituidos por uno o ms archivos del S.O., llamados datafiles. Representan un nivel medio entre la DB y los datafiles. Por su parte, undatafile puede ser asociado con slo una tablespace y una base de datos. Data blocks[editar] Un bloque de datos del Oracle Server es la menor unidad de almacenamiento usada por la base de datos. Extents[editar] Un extent es un conjunto de bloques de datos contiguos. Segments[editar] Un conjunto de uno o ms extents que contiene todos los datos para una estructura especfica en un tablespace. El segmento de datos es una coleccin de extents que mantiene todos los datos para una tabla o cluster. El segmento de ndices mantiene todos los datos para un ndice. El segmento de rollback mantiene datos para rollback, consistencia de lecturas o recuperacin El segmento temporario es una coleccin de extents que mantiene datos pertenecientes a objetos temporales (consultas largas que necesitan guardar resultados intermedios). Schemas Objects[editar] Es la estructura lgica que refiere directamente a los datos de la DB. Consideraciones[editar] Especificaciones a nivel de segmento solapan las del tablespace (no MIN. EXTENT). Un tamao de extensin mnima se aplica a todas las asignadas al tablespace. Por omisin se emplean las especificaciones del tablespace. Cuando no se tienen especificaciones para el tablespace se emplean las del Servidor ORACLE. La modificacin de parmetros de almacenamiento se aplican a extensiones futuras. Existen parmetros que se especifican a nivel de segmento no de tablespace. Estructura fsica de la DB[editar] Datafiles[editar] Contienen todos los datos de la base de datos, como las tablas e ndices. Redo Log files[editar] Mantienen registros de todos los cambios hechos a la base de datos, con fines de recuperacin. Control files[editar] Almacenan la estructura fsica y el estado de la base de datos. Bloques de datos, Extensiones y Segmentos[editar] Estas son las unidades de asignacin de espacio para una Base de Datos. Un Bloque de Datos se corresponde con un nmero especfico de bytes relacionado con el espacio de datos fsico en el disco. Oracle requiere los datos en mltiplos del Bloque de Datos de Oracle. Cuando se crea la Base de Datos Oracle se debe setear la medida del Bloque de Datos (parmetro db_block_size), procurando que sea un mltiplo de la medida del bloque del sistema operativo, dentro de un lmite mximo para evitar I/O innecesarios. La extensin (extent) que es un nmero especfico de Bloques de Datos contiguos asignados para almacenar un tipo especfico de informacin. Un segmento es un conjunto de extensiones que se han asignado a un tipo especfico de estructura de datos. Por ejemplo cada tabla de datos es almacenada en su propio segmento de datos, mientras que cada ndice de datos es almacenado en su propiosegmento de ndice. Cuando una extensin existente en un segmento esta llena, Oracle asigna otra extensin para ese segmento.
Debido a que las extensiones son asignadas en la medida que son necesarias, las extensiones de los segmentos pueden o no ser contiguas en el disco. Un segmento y todas sus extensiones son almacenados en un Tablespace, dentro del cual un segmento puede extenderse sobre los archivos de datos (tener extensiones con datos en ms de un archivo). Cada extensin puede contener datos de un archivo solamente. Formato del bloque de datos[editar] El bloque est dividido en el overhead, los datos de fila, y el espacio libre entre ellos dos. El overhead[editar] El overhead est constituido por: Cabecera (Header) contiene informacin general del bloque tales como la direccin del bloque y el tipo de segmento (datos, ndices o rollback). Directorio de tablas (Table Directory) contiene informacin acerca de aquellas tablas que tienen filas en este bloque. Directorio de filas (Row Directory) contiene informacin sobre las filas actuales en el bloque, incluyendo direcciones para cada pedazo de fila en el rea de datos. Datos de fila[editar] Contiene los datos de tablas o ndices. Espacio libre[editar] Es asignado para insertar filas nuevas y actualizar aquellas que requieren espacio adicional. El espacio libre debe albergar tambin los datos de la transaccin (transaction entry), que se requiere en un bloque por cada INSERT, UPDATE, DELETE y SELECT...FOR UPDATE que acceden a una o ms filas en el bloque. PCTFREE, PCTUSED y Encadenamiento de filas[editar] PCTFREE Y PCTUSED permiten controlar el espacio libre para inserciones y eliminaciones de filas en los bloques de un segmento. Estos parmetros se especifican cuando se crea o altera una tabla o cluster; para el caso de los ndices se puede especificar PCTFREE. PCTFREE Indica el porcentaje mnimo de un bloque de datos que se debe reservar como espacio libre. PCTUSED Indica cuando un bloque puede volver a emplearse para insertar nuevos datos de filas. Un bloque est disponible para insercin mientras tenga libre el porcentaje que indica PCTFREE. Cuando ste es menor, se marcar como no disponible para inserciones, hasta que el porcentaje de uso caiga debajo del parmetro PCTUSED. En dos casos, los datos de una tabla pueden ser demasiado largos para encajar en un bloque de datos: La fila es demasiado larga cuando se inserta por primera vez, en cuyo caso Oracle almacena los datos para la fila en una cadena de bloques de datos (una o ms) reservadas para ese segmento. Una fila que originalmente encaja se actualiza de modo tal que la longitud global se incrementa y el espacio libre del bloque se encuentra lleno; en este caso Oracle mueve la fila entera a un bloque de datos nuevo. Asignacin y liberacin de espacio[editar] Cuando el espacio existente en un segmento es usado completamente, Oracle asigna un nuevo extent para el segmento. Asignacin de extents[editar] Cuando se crea una tabla, Oracle asigna al segmento de datos de la tabla un extent inicial compuesto por un nmero especfico de bloques de datos. Si los bloques de datos de un extent inicial del segmento se llenan, Oracle automticamente asigna un extent incremental para ese segmento, que es un extent subsecuente del mismo tamao de un tamao mayor que el extent asignado previamente en ese segmento. Para propsitos de mantenimiento el bloque cabecera de cada segmento contiene un directorio de los extents de ese segmento. Algoritmo de asignacin de segmentos[editar] Oracle busca en el espacio libre (del tablespace que contiene los segmentos) hasta el encontrar el primer conjunto de bloques de datos contiguos, libre, de igual o mayor tamao que el extent incremental: Coincidencia exacta: se busca un conjunto que coincidan con el tamao del extent nuevo ms un bloque adicional para reducir la fragmentacin interna. Espacio contiguo mayor: si encuentra un grupo mayor en al menos 5 bloques que el necesitado, divide el grupo de bloques en extents separados uno de los cuales es del tamao que se requiere. Reasignacin de espacio: si Oracle no encuentra un bloque de datos contiguo igual o mayor, reordena los bloques libres de su correspondiente tablespace para formar conjuntos de bloques de datos contiguos mayores. Luego aplica los pasos anteriores. Autoextensin: Si un extent no puede ser asignado despus de una segunda bsqueda, Oracle trata de redimensionar los archivos por autoextensin. Si no puede hacerlo retorna un error. Una vez que Oracle encuentra y asigna el espacio libre necesario en el tablespace, asigna una porcin del espacio libre que corresponde al tamao del extent incremental. Si hay remanente, queda como espacio libre. Oracle actualiza la cabecera del segmento y el diccionario de datos para mostrar que un extent nuevo ha sido asignado y que el espacio asignado no est ms libre. Liberacin de los extents[editar] En general, los extents de un segmento no retornan al tablespace mientras no se eliminan los objetos cuyos datos estn almacenados en el segmento (por medio de un DROP TABLE o DROP CLUSTER). Excepciones a esto: Se puede truncar la tabla o cluster con la sentencia TRUNCATE...DROP STORAGE. Peridicamente, Oracle puede desasignar uno o ms extents de un segmento de rollback si tienen la opcin OPTIMAL especificada. Un DBA puede desasignar extents no utilizados usando la instruccin SQL ALTER TABLE nombre_tabla DEALLOCATE UNUSED. Tablas Nonclustered[editar] En tanto existan las tablas nonclustered o hasta que se las trunca, cualquier bloque de datos asignado a su segmento de datos permanece asignado a la tabla. Despus de eliminarse una tabla nonclustered, este espacio puede ser reclamado cuando otros extents requieran espacio libre. Tablas Clustered[editar] Almacenan su informacin en los segmento de datos creados para el cluster. Si se elimina una tabla en un cluster, el segmento de datos permanece para las otras tablas en el cluster y ningn extent se desasigna. Indices[editar] Todos los extents asignados en un segmento ndice permanecen asignados en tanto y en cuanto exista el ndice. Segmentos Rollback[editar] Oracle peridicamente chequea para ver si los segmentos de rollback de una base de datos han crecido ms que su tamao ptimo. Si un segmento rollback es mayor que su ptimo, Oracle automticamente desasigna uno o ms extents de su segmento de rollback. Segmentos temporarios[editar] Cuando se completa la ejecucin de una sentencia que requiere un segmento temporario, Oracle automticamente lo elimina. Segmentos[editar] Un segmento es un conjunto de extents que contienen todos los datos para una estructura de almacenamiento lgico especfica. Segmentos de datos[editar] Cada tabla o particin nonclustered y cada cluster en una base de datos Oracle tiene un segmento de datos simple para mantener todos sus datos.
Los parmetros de almacenamiento determinan como sus extents de segmentos de datos son asignados. Estos parmetros afectan la eficiencia de la recuperacin de datos y almacenamiento para el segmento de datos asociado con el objeto. Segmentos de ndices[editar] Sirven para mantener los datos de los ndices. Se pueden especificar los parmetros de almacenamiento para los extents del segmento de ndices y el tablespace en el que se crea el segmento ndice. Segmentos temporarios[editar] Constituyen un rea de trabajo para las actividades de ordenamiento. Si dicha operacin puede ser realizada en memoria este segmento no se crea. Las consultas que pueden requerir de segmentos temporarios son: CREATE INDEX SELECT ... ORDER BY SELECT DISTINCT SELECT ... GROUP BY SELECT...UNION SELECT...INTERSECT SELECT...MINUS Joins indexados o con subconsultas Segmentos de rollback[editar] Un segmento de rollback registra los valores viejos de los datos que fueron cambiados por cada transaccin (cometida o no). Contenido de los segmentos de rollback[editar] Consiste de varias entradas de rollback, que incluyen informacin del bloque y los datos como existan antes de la operacin en una transaccin.
Slo Oracle puede acceder a los segmentos de Rollback, ni los usuarios ni el DBA pueden acceder a ellos. Las entradas de rollback cambian los bloques de datos en los segmento de rollback y Oracle registra todos los cambios de los bloques de datos, incluyendo las entradas de rollback en los redo log (que son por lo menos dos). Si hay una falla en el sistema, Oracle automticamente recupera la informacin del segmento, incluyendo las entradas de rollback para transacciones interactivas. Una vez que se completa la recuperacin, Oracle realiza los rollback de las transacciones que ni fueron completadas ni vueltas a atrs en el momento de la falla.
Para cada segmento rollback, Oracle mantiene una tabla de transacciones: Una lista de todas las transacciones que usan el segmento de rollback. Las entradas de rollback por cada cambio realizado por estas transacciones. Los segmentos de rollback registran los valores de los datos antes de los cambios para cada transaccin, luego vincula cada nuevo cambio al cambio previo. Si se deben recuperar una transaccin, Oracle aplica los cambios en cadena a los bloques de datos en el orden que restablezcan los datos a sus valores previos. Transacciones y segmentos rollback[editar] Cada vez que una transaccin de usuario comienza, se le asigna un segmento de rollback en una de las siguientes dos maneras: Oracle puede asignar una transaccin automticamente al prximo segmento de rollback disponible. La asignacin de la transaccin ocurre cuando se edita la primera sentencia DML o DDL en la transaccin. Nunca se asignan transacciones de solo lectura a un segmento rollback. Una aplicacin puede asignar una transaccin a un segmento de rollback especfico. Al comienzo de una transaccin, un desarrollador o usuario de aplicaciones puede especificar un segmento rollback particular que Oracle debera usar cuando se ejecute la transaccin. Cuando una transaccin se completa (commit), Oracle libera la informacin de rollback pero no la destruye inmediatamente. La informacin permanece en el segmento de rollback para crear vistas consistentes de lectura de los datos pertinentes para las queries que comenzaron antes que la transaccin se completara exitosamente. Oracle escribe los extents en los segmentos de rollback secuencialmente. Cuando el ltimo extent del segmento rollback se llena, Oracle contina escribiendo datos de rollback sobreescribiendo el primer extent en el segmento. Una transaccin que se ejecute en un perodo de tiempo largo puede requerir un nuevo extent para asignar un segmento de rollback. Oracle siempre trata de reusar los extents ya asignados a una transaccin. Si el prximo extent contiene datos de transacciones que estn activas todava entonces debe asignar un extent nuevo. Esto se hace hasta que el nmero de extents para un segmento alcanza el parmetro de almacenamiento MAXEXTENTS.
PCTINCREASE le indica a Oracle cuanto ha de crecer cada extent luego que fueren usados los extents INITIAL y NEXT. INITRANS, MAXTRANS especifica el nmero de entradas inicial y mximo que las transacciones tendrn en el bloque. Estn relacionados con la concurrencia que se permite en el bloque.