1 bases de datos e instancias

Upload: lincol-dolores

Post on 10-Feb-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 1 Bases de Datos e Instancias

    1/83

    1 Bases de Datos e Instancias

    Estos son dos conceptos fundamentales para entender la arquitectura de Oracle.

    En trminos sencillos, una instancia de BD es un conjunto de procesos del servidor Oracle quetiene su propio rea global de memoria y una base de datos asociada a ellos.

    1.1 Base de Datos

    Una Base de Datos Oracle es un conjunto de datos almacenado y accesible segn el formato de

    tablas relacionales. Una tabla relacional tiene un nombre y unas columnas, su definicin. Los

    datos estn almacenados en las filas. Las tablas pueden estar relacionadas con otras.

    Una Base de Datos Oracle est almacenada fsicamente en ficheros, y la correspondencia entre

    los ficheros y las tablas es posible gracias a las estructuras internas de la BD, que permiten que

    diferentes tipos de datos estn almacenados fsicamente separados. Est divisin lgica se

    hace gracias a los espacios de tablas, tablespaces.

    1.1.1 Los Espacios de Tablas, Tablespaces

    Un espacio de tablas es una divisin lgica de la BD. Cada BD tiene al menos uno (SYSTEM). Un

    espacio de tablas puede pertenecer slo a una BD. Los espacios de tablas se utilizan para

    mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o

    mejorar las prestaciones del sistema.

    De esta manera, cuando se crea una tabla se debe indicar el espacio de tablas al que se

    destina. Por defecto se depositan en el espacio de tablas SYSTEM, que se crea por defecto.

    Este espacio de tablas es el que contiene el diccionario de datos, por lo que conviene

    reservarlo para el uso del servidor, y asignar las tablas de usuario a otro.

    Lo razonable y aconsejable es que cada aplicacin tenga su propio espacio de tablas.

    Hay varias razones que justifican este modo de organizacin de las tablas en espacios de

    tablas:

    Un espacio de tablas puede quedarse offline debido a un fallo de disco, permitiendo que elSGBD contine funcionando con el resto.

  • 7/22/2019 1 Bases de Datos e Instancias

    2/83

    Los espacios de tablas pueden estar montados sobre dispositivos pticos si son de slo lectura.

    Permiten distribuir a nivel lgico/fsico los distintos objetos de las aplicaciones.

    Son una unidad lgica de almacenamiento, pueden usarse para aislar completamente los datos

    de diferentes aplicaciones.

    Oracle permite realizar operaciones de backup/recovery a nivel de espacio de tabla mientras la

    BD sigue funcionando.

    Cuando se crean se les asigna un espacio en disco que Oracle reserva inmediatamente, se

    utilice o no. Si este espacin inicial se ha quedado pequeo Oracle puede gestionar el

    crecimiento dinmico de los ficheros sobre los que se asientan los espacios de tablas. Esto

    elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento inicial. Los

    parmetros de crecimiento del tamao de los espacios de tablas se especifican en la creacin

    de los mismos.

    Se pueden ver los espacios de tablas definidos en nuestra BD con el comando SQL siguiente:

    SQL> select * from user_tablespaces;

    Dentro de cada espacio de tabla se pueden almacenar objetos de distinta naturaleza: tablas,

    ndices, etc. Pero no se pueden mezclar si ms. Necesitamos una manera de separarlos, y eso

    son los segmentos.

    Se pueden almacenar ms de un segmento por espacio de tabla. Un segmento est contenido

    en su totalidad en un espacio de tabla. Un segmento est constituido por un conjunto de

    extensiones, que no son ms que grupos de bloques de disco ORACLE contiguos. Cuando se

    borra un segmento, el espacio es devuelto al espacio de tabla.

    Todos los datos de la BD estn almacenados en segmentos. Y existen 5 tipos de segmentos:

    de datos: almacenan las tablas.

    de ndices: permiten un acceso rpido a los datos dependiendo de la cantidad de los mismos

    (rboles B). Las consultas que slo referencian a columnas indexadas se resuelven en el ndice.

    Establecen un control de unicidad (los ndices son automticos cuando se definen claves

    primarias). Cada ndice ocupa un segmento independiente del segmento de datos y deberan

    estar en un espacio de tablas distinto al de los datos, para mejorar el rendimiento.

    de rollback: son objetos internos de la BD que permiten efectuar la restauracin de las

    transacciones no validadas asegurando la consistencia en lectura. La estructura de los registros

    de rollback es :

  • 7/22/2019 1 Bases de Datos e Instancias

    3/83

    Identificador de la transaccin.

    Direccin del bloque donde est la tabla.

    Nmero de fila.

    Nmero de columna.Valor del dato antiguo (antes de ser modificado).

    Son tan importantes que una BD no puede arrancar si no puede acceder al menos a un

    segmento de rollback. Si la BD tiene mltiples espacios de tablas, deben existir al menos dos

    segmentos de rollback y cada segmento de rollback debe tener al menos dos extensiones,

    reutilizables de manera cclica. Esto segmentos son un objeto compartido de la BD, aunque se

    puede asinar un segmento de rollback particular a una transaccin dada.

    temporales: son creados por Oracle para un uso temporal cuando debe realizar unaordenacin que no le cabe en memoria, y en las operaciones: create index, order by, group by,

    distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza.

    de bootstrap: Se crea en SYSTEM y contiene definiciones del diccionario para sus tablas, que se

    cargan al abrir la BD. No requiere ninguna accin por parte del DBA. No cambia de tamao.

    La tabla que guarda la informacin de los segmentos de usuario es user_segments, y se puede

    visualizar la informacin sobre los segmentos con la sentencia SQL siguiente:

    SQL> select * from user_segments;

    1.1.2 Ficheros

    Cada espacio de tablas se compone de uno o ms ficheros en disco. Un fichero puede

    pertenecer slo a un espacio de tablas. Los ficheros reciben un tamao fijo en el momento de

    su creacin, y cuando se necesita ms espacio se deben aadir ms ficheros a espacio de

    tablas.

    Dividir los objetos de la BD entre mltiples espacios de tablas permiten que los objetos sean

    almacenados fsicamente en discos separados, dependiendo de donde estn los ficheros sobre

    los que se asientan.

    1.2 Instancias

  • 7/22/2019 1 Bases de Datos e Instancias

    4/83

    Para permitir el acceso a los datos, Oracle utiliza un conjunto de procesos que son compartidos

    por todos los usuarios. Adems, existen estructuras de memoria que son utilizadas para

    almacenar los datos ms recientemente solicitados a la BD.

    Una instancia de BD es el conjunto de estructuras de memoria y de procesos que acceden a losficheros de datos.

    Los parmetros que determinan el tamao y composicin de una instancia estn almacenados

    en un fichero llamado init.ora. Este fichero es leido durante el arranque de la BD y puede ser

    modificado por el DBA. Cualquier modificacin de este fichero no tiene efecto hasta la

    siguiente vez que se arranque la BD.

    Las estructuras de la BD Oracle pueden ser divididas en tres clases:

    aquellas que son internas a la BD,

    aquellas que son internas a las reas de memoria (incluidas la memoria compartida y

    procesos),

    aquellas que son externas a la BD.

    1.3 Estructuras Internas de la BD

    Tablas y Columnas

    Los datos son almacenados en la BD utilizando tablas. Cada tabla est compuesta por un

    nmero determinado de columnas.

    Las tablas propiedad del usuario SYS son llamadas tablas del diccionario de datos. Proveen el

    catlogo del sistema que permite que la BD se gestione a s misma.

    Las tablas se pueden relacionar entre ellas a travs de las columnas que las componen. La BD

    se puede utilizar para asegurar el cumplimiento de esas relaciones a travs de la integridad

    referencial, que se concreta en las restricciones de tablas.

    Restricciones de Tablas

  • 7/22/2019 1 Bases de Datos e Instancias

    5/83

    Una tabla puede tener asociadas restricciones que deben cumplir todas las filas. Entre las

    restricciones que se pueden fijar algunas reciben nombres especiales.: clave primaria, clave

    ajena.

    La clave primaria de una tabla est compuesta por las columnas que hacen a cada fila de latabla una fila distinta.

    La clave ajena se utiliza para especificar las relaciones entre tablas. De modo que un conjunto

    de columnas declaradas como clave ajena de una tabla deben tener valores tomados de la

    clave primaria de otra tabla.

    Usuarios

    Una cuenta de usuario no es una estructura fsica de la BD, pero est relacionada con los

    objetos de la BD: los usuarios poseen los objetos de la BD. Existen dos usuarios especiales: SYS

    y SYSTEM. El usuarios SYS posee las tablas del diccionario de datos; que almacenan

    informacin sobre el resto de las estructuras de la BD. El usuario SYSTEM posee las vistas que

    permiten acceder a las tablas del diccionario, para el uso del resto de los usuarios de la BD.

    Todo objeto creado en la BD se crea por un usuario, en un espacio de tablas y en un fichero de

    datos determinado. Toda cuenta de la BD puede estr unida a una cuenta del S.O., lo quepermite a los usuarios acceder a la cuenta de la BD sin dar la clave de acceso.

    Cada usuario puede acceder a los objetos que posea o a aquellos sobre los que tenga derecho

    de acceso.

    Esquemas

    El conjunto de objetos de un usuario es conocido como esquema.

    ndices

    Un ndice es una estructura de la BD utilizada para agilizar el acceso a una fila de una tabla.

    Cada fila tiene un identificador de fila, ROWID, que determina el fichero, bloque y fila dentro

    del bloque donde est almacenada la fila.

  • 7/22/2019 1 Bases de Datos e Instancias

    6/83

    Cada entrada del ndice consite en un valor clave y una ROWID. Cada una de estas entradas se

    almacena en un rbol B+.

    Los ndices se crean automticamente cuando se define una restriccin UNIQUE o PRIMARY

    KEY.

    Clusters

    Las tablas que son accedidas juntas frecuentemente pueden ser almacenadas juntas. Para ello

    se crea un cluster. De este modo se minimiza el nmero de E/S.

    Las columnas que relacionan las tablas de un cluster se llaman clave del cluster.

    Vistas

    Conceptualmente, una vista puede considerarse como una mscara que se extiende sobre una

    o ms tablas, de modo que cada columna de la vista se corresponde con una o ms columnas

    de las tablas subyacentes. Cuando se consulta una vista, esta traspasa la consulta a las tablas

    sobre las que se asienta. Las vistas no se pueden indexar.

    Las vistas no generan almacenamiento de datos, y sus definiciones se almacenan en el

    diccionario de datos.

    Secuencias

    Las definiciones de secuencias se almacenan en el diccionario de datos. Son mecanismos para

    obtener listas de nmeros secuenciales.

    Procedimientos y Funciones

    Un procedimiento es un bloque de cdigo PL/SQL, que se almacena en el diccionario de datos

    y que es llamado por las aplicaciones. Se pueden utilizar para implementar seguridad, no

    dando acceso directamente a determinadas tablas sino es a travs de procedimientos que

    acceden a esas tablas. Cuando se ejecuta un procedimiento se ejecuta con los privilegios del

    propietario del procedimiento. La diferencia entre un procedimiento y una funcin es que staltima puede devolver valores.

  • 7/22/2019 1 Bases de Datos e Instancias

    7/83

    Paquetes, Packages

    Se utilizan para agrupar procedimientos y funciones. Los elementos dentro de los paquetespueden ser pblicos o privados. Los pblicos pueden ser llamados por los usuarios, los

    privados estn ocultos a los usuarios y son llamados por otros procedimientos.

    Disparadores, Triggers

    Son procedimientos que son ejecutados cuando se procude un determinado evento en la BD.

    Se pueden utilizar para mejorar y reforzar la integridad y la seguridad de la BD.

    Sinnimos

    Para identificar completamente un objeto dentro de una BD se necesita especificar el nombre

    de la mquina, el nombre del servidor, el nombre del propietario y el nombre del objeto. Para

    hacer transparente todo esto al usuario se pueden utilizar los sinnimos. stos apuntarn a los

    objetos y si el objeto cambia de lugar o propietario, slo habr que modificar el sinnimo.

    Existen sinnimos pblicos y privados. Los pblicos son conocidos por todos los usuarios de

    una BD. Los privados son locales a un usuario.

    Privilegios y Roles

    Para que un objeto pueda ser accedido por un usuario debe de tener otorgado ese privilegio.

    Ejemplos de privilegios son INSERT, SELECT, UPDATE, EXECUTE, etc.

    Los roles son grupos de privilegios que pueden ser utilizados para facilitar la gestin de losprivilegios. Los privilegios se pueden otorgar a un rol, y los roles pueden ser otorgados a

    mltiples usuarios.

    Segmentos, Extensiones y Bloques

    Los segmentos son los equivalentes fsicos de los objetos que almacenan datos. El uso efectivo

    de los segmentos requiere que el DBA conozca los objetos que utiliza una aplicacin, cmo los

    datos son introducidos en esos objetos y el modo en que sern recuperados.

  • 7/22/2019 1 Bases de Datos e Instancias

    8/83

    Como los segmentos son entidades fsicas, deben estar asignados a espacios de tablas en la BD

    y estarn localizados en uno de los ficheros de datos del espacio de tablas. Un segmento est

    constituido por secciones llamadas extensiones, que son conjuntos contiguos de bloques

    Oracle. Una vez que una extensin existente en un segmento no puede almacenar ms datos,el segmento obtendr del espacio de tabla otra extensin. Este proceso de extensin

    continuar hasta que no quede ms espacio disponible en los ficheros del espacio de tablas, o

    hasta que se alcance un nmero mximo de extensines por segmento.

    Segmento de Rollback

    Para mantener la consistencia en lectura y permitir deshacer las transacciones, Oracle debe

    tener un mecanismo para reconstruir la imgen previa a una transaccin incompleta. Oracle

    utiliza los segmentos de rollback para esto.

    Los segmentos de rollback pueden crecer tanto como sea necesario para soportar las

    transacciones.

    1.4 Estructuras de Memoria Internas

    Oracle mantiene dos estructuras principales de memoria: el rea Global de Programa, Program

    Global Area, PGA; y el rea Global del Sistema, System Global Area o tambin Shared Global

    Area, SGA.

    El PGA es la zona de memoria de cada proceso Oracle. No est compartida y contiene datos e

    informacin de control de un nico proceso.

    El SGA es la zona de memoria en la que la BD Oracle guarda informacin sobre su estado. Esta

    estructura de memoria est disponible para todos los procesos, por eso se dice que est

    compartida.

    1.4.1 rea Global del Sistema, SGA

    Sirve para facilitar la transferencia de informacin entre usuarios y tambin almacena la

    informacin estructural de la BD ms frecuentemente requerida.

  • 7/22/2019 1 Bases de Datos e Instancias

    9/83

    La SGA se divide en varias partes:

    Buffers de BD, Database Buffer Cache

    Es el cach que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales

    como tablas, ndices y clusters. Los bloques modificados se llamas bloques sucios. El tamao

    de buffer cach se fija por el parmetro DB_BLOCK_BUFFERS del fichero init.ora.

    Como el tamao del buffer suele ser pequeo para almacenar todos los bloques de datos

    leidos, su gestin se hace mediante el algoritmo LRU.

    Buffer Redo Log

    Los registros Redo describen los cmbios realizados en la BD y son escritos en los ficheros redo

    log para que puedan ser utilizados en las operaciones de recuperacin hacia adelante, roll-

    forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo

    log son escritos en un cach de la SGA llamado redo log buffer. El servidor escribe

    peridicamente los registros redo log en los ficheros redo log.

    El tamao del buffer redo log se fija por el parmetro LOG_BUFFER.

    rea de SQL Compartido, Shared SQL Pool

    En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintctico de

    las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada

    sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de

    analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en

    la zona de SQL compartido. Si es as, no la analiza y pasa directamente a ejecutar la que

    mantinene en memoria. De esta manera se premia la uniformidad en la programacin de las

    aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables

    incluidas. El contenido de la zona de SQL compartido es:

    Plan de ejecucin de la sentencia SQL.

    Texto de la sentencia.

    Lista de objetos referenciados.

    Los pasos de procesamiento de cada peticin de anlisis de una sentencia SQL son:

  • 7/22/2019 1 Bases de Datos e Instancias

    10/83

    Comprobar si la sentencia se encuentra en el rea compartida.

    Comprobar si los objetos referenciados son los mismos.

    Comprobar si el usuario tiene acceso a los objetos referenciados.

    Si no, la sentencia es nueva, se analiza y los datos de anlisis se almacenan en la zona de SQLcompartida.

    Tambin se almacena en la zona de SQL compartido el cach del diccionario. La informacin

    sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta

    informacin se necesita, se leen las tablas del diccionario y su informacin se guarda en el

    cach del diccionario de la SGA.

    Este cach tambin se administra mediante el algoritmo LRU. El tamao del cach estgestionado internamente por el servidor, pero es parte del shared pool, cuyo manao viene

    determinado por el parmetro SHARED_POOL_SIZE.

    1.4.2 rea Global de Programa

    El Program Global Area es un rea de memoria utilizada por un proceso Oracle. Esta zona de

    memoria no se puede compartir.

    1.5 Estructuras de Proceso

    El servidor se vale de una serie de procesos que son el enlace entre las estructuras fsicas y de

    memoria. A continuacin se describen cada proceso y el papel que juega en la gestin de laBD.

    Todo esto se puede ver en la siguiente figura.

    Arquitectura Oracle

    System Monitor, SMON

    El SMON es el supervisor del sistema y se encarga de todas las recuperaciones que sean

    necesarias durante el arranque. Esto puede ser necesario si la BD se par inesperadamente por

    fallo fsico, lgico u otras causas. Este proceso realiza la recuperacin de la instancia de BD a

    partir de los ficheros redo log. Adems lmpia los segmentos temporales no utilizados y

    compacta los huecos libres contiguos en los ficheros de datos. Este proceso se despiertaregularmente para comprobar si debe intervenir.

  • 7/22/2019 1 Bases de Datos e Instancias

    11/83

    Process Monitor, PMON

    Este proceso restaura las transacciones no validadas de los procesos de usuario que abortan,liberando los bloqueos y los recursos de la SGA. Asume la identidad del usuario que ha fallado,

    liberando todos los recursos de la BD que estuviera utilizando, y anula la transaccin

    cancelada. Este proceso se despierta regularmente para comprobar si su intervencin es

    necesaria.

    Database Writer, DBWR

    El proceso DBWR es el responsable de gestionar el contenido de los buffers de datos y delcach del diccionario. l lee los bloques de los ficheros de datos y los almacena en la SGA.

    Luego escribe en los ficheros de datos los bloques cuyo contenido ha variado. La escritura de

    los bloques a disco es diferida buscando mejorar la eficiencia de la E/S.

    Es el nico proceso que puede escribir en la BD. Esto asegura la integridad. Se encarga de

    escribir los bloques de datos modificados por las transacciones, tomando la informacin del

    buffer de la BD cuando se valida una transaccin. Cada validacin no se lleva a la BD fsica de

    manera inmediata sino que los bloques de la BD modificados se vuelcan a los ficheros de datos

    periodicamente o cuando sucede algn checkpoint o punto de sincronizain: grabacin

    diferida:

    Los bloques del buffer de la BD (bloques del segmento de rollback y bloques de datos) menos

    recientemente utilizados son volcados en el disco continuamente para dejar sitio a los nuevos

    bloques.

    El bloque del segmento de rollback se escribe SIEMPRE antes que el correspondiente bloque

    de datos.

    Mltiples transacciones pueden solapar los cambios en un slo bloque antes de escribirlo en el

    disco.

    Mientras, para que se mantenga la integridad y coherencia de la BD, todas las operaciones se

    guardan en los ficheros de redo log. El proceso de escritura es asncrono y puede realizar

    grabaciones multibloque para aumentar la velocidad.

    Log Writer, LGWR

    El proceso LGWR es el encargado de escribir los registros redo log en los ficheros redo log. Losregistros redo log siempre contienen el estado ms reciente de la BD, ya que puede que el

  • 7/22/2019 1 Bases de Datos e Instancias

    12/83

    DBWR deba esperar para escribir los bloques modificados desde el buffer de datos a los

    ficheros de datos.

    Conviene tener en cuenta que el LGWR es el nico proceso que escribe en los ficheros de redo

    log y el nico que lee directamente los buffers de redo log durante el funcionamiento normalde la BD.

    Coloca la informacin de los redo log buffers en los ficheros de redo log. Los redo log buffers

    almacenan una copia de las transacciones que se llevan a cabo en la BD. Esto se produce:

    a cada validacin de transaccin, y antes de que se comunique al proceso que todo ha ido

    bien,

    cuando se llena el grupo de buffers de redo log

    cuando el DBWR escribe buffers de datos modificados en disco.

    As, aunque los ficheros de DB no se actualicen en ese instante con los buffers de BD, la

    operacin queda guardada y se puede reproducir. Oracle no tiene que consumir sus recursos

    escribiendo el resultado de las modificaciones de los datos en los archivos de datos de manera

    inmediata. Esto se hace porque los registros de redo log casi siempre tendrn un tamao

    menor que los bloques afectados por las modificaciones de una transaccin, y por lo tanto el

    tiempo que emplea en guardarlos es menor que el que empleara en almacenar los bloques

    sucios resultado de una transaccin; que ya sern trasladados a los ficheros por el DBWR. El

    LGWR es un proceso nico, para asegurar la integridad. Es asncrono. Adems permite las

    grabaciones multibloque.

    Checkpoint, CKPT

    Este proceso escribe en los ficheros de control los checkpoints. Estos puntos de sincronizacin

    son referencias al estado coherente de todos los ficheros de la BD en un instante determinado,

    en un punto de sincronizacin. Esto significa que los bloques sucios de la BD se vuelcan a los

    ficheros de BD, asegurndose de que todos los bloques de datos modificados desde el ltimo

    checkpoint se escriben realmente en los ficheros de datos y no slo en los ficheros redo log; y

    que los ficheros de redo log tambin almacenan los registros de redo log hasta este instante.

    La secuencia de puntos de control se almacena en los ficheros de datos, redo log y control. Los

    checkpoints se produce cuando:

    un espacio de tabla se pone inactivo, offline,

    se llena el fichero de redo log activo,

    se para la BD,

  • 7/22/2019 1 Bases de Datos e Instancias

    13/83

    el nmero de bloques escritos en el redo log desde el ltimo checkpoint alcanza el lmite

    definido en el parmetro LOG_CHECKPOINT_INTERVAL,

    cuando transcurra el nmero de segundos indicado por el parmetro

    LOG_CHECKPOINT_TIMEOUT desde el ltimo checkpoint.

    Est activo si el parmetro CHECKPOINT_PROCESS tiene un valor verdadero.

    Archiver, ARCH

    El proceso archivador tiene que ver con los ficheros redo log. Por defecto, estos ficheros se

    reutilizan de manera cclica de modo que se van perdiendo los registros redo log que tienen

    una cierta antiguedad. Cuando la BD se ejecuta en modo ARCHIVELOG, antes de reutilizar un

    fichero redo log realiza una copia del mismo. De esta manera se mantiene una copia de todos

    los registros redo log por si fueran necesarios para una recuperacin. Este es el trabajo delproceso archivador.

    Recoverer, RECO

    El proceso de recuperacin est asociado al servidor distribuido. En un servidor distribuido los

    datos se encuentran repartidos en varias localizaciones fsicas, y estas se han de mantener

    sincronizadas. Cuando una transaccin distribuida se lleva a cabo puede que problemas en la

    red de comunicacin haga que una de las localizaciones no aplique las modificaciones debidas.

    Esta transaccin dudosa debe ser resuelta de algn modo, y esa es la tarea del proceso

    recuperador. Est activo si el parmetro DISTRIBUTED_TRANSACTIONS tiene un valor distinto

    de 0.

    Lock, LCK

    El proceso de bloqueo est asociado al servidor en paralelo.

    1.6 Estructuras Externas

    Por estructuras externas se entienden los ficheros que utiliza el servidor de BD, de los cuales

    ya se han ido contanto algunos aspectos, y otros se han ido intuyendo. Estos ficheros guardan

    informacin tanto de los datos almacenados en la BD como la necesaria para gobernar la

    propia BD.

    Ficheros de la BD

  • 7/22/2019 1 Bases de Datos e Instancias

    14/83

    En estos ficheros reside la informacin de la BD. Solo son modificados por el DBWR. A ellos se

    vuelcan los bloques sucios de la SGA cuando se hace una validacin o cuando sucede un

    checkpoint. Las validaciones de las transacciones no producen un volcado inmediato, sino lo

    que se conoce por un commit diferido. Toda actualizacin se guarda en los ficheros de redo

    log, y se lleva a la BD fsica cuando tenemos una buena cantidad de bloques que justifiquen

    una operacin de E/S. Almacenan los segmentos (datos, ndices, rollback) de la BD. Estndivididos en bloques (Bloque Oracle = c * Bloque SO), cada uno de los cuales se corresponde

    con un buffer del buffer cache de la SGA. En el bloque de cabecera no se guardan datos de

    usuario, sino la marca de tiempo del ltimo checkpoint realizado sobre el fichero.

    Ficheros redo log

    En ellos se graba toda operacin que se efectue en la BD y sirven de salvaguarda de la misma.

    Tiene que haber por lo menos 2, uno de ellos debe estar activo, online, y se escribe en ellos deforma cclica. Existe la posibilidad de almacenar los distintos ficheros de redo log en el tiempo

    mediante el modo ARCHIVER. As, se puede guardar toda la evolucin de la BD desde un punto

    dado del tiempo.

    Una opcin es la utilizacin de archivos redo log multiplexados:

    Permite al LGWR escribir simultaneamente la misma informacin en mltiples archivos redo

    log.

    Se utiliza para protegerse contra fallos en el disco.

    Da una alta disponibilidad a los archivos redo log activos u online.

    Esto se hace definiendo el nmero de grupos y de miembros de archivos redo log que van a

    funcionar en paralelo:

    grupos: funcionan como ficheros redo log normales, uno de ellos est activo y el resto espera

    su turno.

    Su nombre lleva incorporado una numeracin.

    Deben contener todos el mismo nmero de miembros.

    miembros: cada escritura de un registro redo log se lleva a cabo en todos los miembros del

    grupo activo en ese momento. Los miembros deben:

    tener el mismo tamao y el mismo nmero de secuencia.

    deben tener nombres similares y estar en diferentes discos para proteger contra fallos de una

    manera efectiva.

    Cuando se produce algn fallo en los ficheros de redo log o en el proceso LGWR:

  • 7/22/2019 1 Bases de Datos e Instancias

    15/83

    Si la escritura en un fichero redo log falla pero el LGWR puede escribir al menos en uno de los

    miembros del grupo, lo hace , ignorando el fichero inaccesible y registrando un fallo en un

    fichero de traza o alerta.

    Si el siguiente grupo no ha sido archivado (modo ARCHIVELOG) antes del cambio de grupo quelo pone activo, ORACLE espera hasta que se produzca el archivado.

    Si fallan todos los miembros de un grupo mientras el LGWR trata de escribir, la instancia se

    para y necesita recupecin al arrancar.

    Se pueden visualizar los nombres y estado de los ficheros de redo log:

    SVRMGR> select group#, status, substr(member,1,60) from v$logfile;Tambin se pueden visualizar estadsticas de los ficheros redo log:

    SVRMGR> select group#, sequence#, bytes, members, archived,

    2 status, first_change#, first_time from v$logfile;

    Ficheros de control

    Mantienen la informacin fsica de todos los ficheros que forman la BD, camino incluido; as

    como el estado actual de la BD. Son utilizados para mantener la consistencia interna y guiar las

    operaciones de recuperacin. Son imprescindibles para que la BD se pueda arrancar.

    Contienen:

    Infomacin de arranque y parada de la BD.

    Nombres de los archivos de la BD y redo log.

    Informacin sobre los checkpoints.

    Fecha de creacin y nombre de la BD.

    Estado online y offline de los archivos.

    Debe haber mltiples copias en distintos discos, mnimo dos, para progerlos de los fallos de

    disco. La lista de los ficheros de control se encuentra en el parmetro CONTROL_FILES, que

    debe modificarse con la BD parada.

    Se puede componer una sentencia SQL que nos muestre todos los ficheros asociados a una BD.Esta es:

  • 7/22/2019 1 Bases de Datos e Instancias

    16/83

    SQL> select 'control' tipo, substr(name,1,70) nombre from v$controlfile

    2 union all3 select 'datos' tipo, substr(name,1,70) nombre from v$datafile

    4 union all

    5 select 'redo log' tipo, substr(name,1,70) nombre from v$logfile

    6 /

    Hasta aqu los tipos de ficheros que se suelen considerar fundamentales en la arquitectura del

    SGBD Oracle. Pero existen otros ficheros, que aunque no forman parte de la arquitectura

    Oracle resultan importantes en el uso del SGBD.

    El Fichero INIT.ORA

    Como parte de la distribucin software, Oracle provee de un fichero de parmetros de

    inicializacin llamado init.ora. Este fichero contiene los parmetros del sistema Oracle y debe

    ser utilizado por el DBA para configurar el SGDB y adecuarlo a una determinada explotacin.

    Oracle lee este fichero durante el proceso de arranque para determinar el tamao de la SGA y

    encontrar los ficheros de control, entre otros menesteres.

    Como el fichero init.ora es fundamental para el arranque de la BD, debera ser copiado

    frecuentemente para protegerlo de posibles prdidas.

    Ficheros de Traza

    Orace crea ficheros de texto llamados de traza para ayudar en la diagnosis de problemas y en

    el ajuste del SGBD. Cada proceso del servidor escribe en un fichero de traza asociado cuandoes necesario. Los procesos de usuarios tambin pueden tener asociados ficheros de traza. La

    situacin de estos ficheros de traza del sistema se especifica por el parmetro

    BACKGROUND_DUMP_DEST, y los de usuario por USER_DUMP_DEST. Oracle crea ficheros de

    traza automticamente cuando ocurre algn error.

    Un parmetro muy frecuentemente utilizado por los desarrolladores Oracle es el SQL_TRACE,

    que cuando est puesto a TRUE produce que toda sentencia SQL ejecutada genere informacin

    en los ficheros de traza. Este parmetro se puede variar con el siguiente comando:

  • 7/22/2019 1 Bases de Datos e Instancias

    17/83

    SQL> alter session set SQL_TRACE=TRUE;

    Session Altered.

    El directorio donde se depositan los ficheros de traza debe de examinarse con regularidad paracontrolar el tamao de los fichero alli depositados.

    2 Ciclo de Ejecucin

    Para ilustrar el funcionamiento del servidor Oracle vamos a ver el ciclo de ejecucin de una

    sentencia de lectura y otra de actualizacin.

    2.1 Ciclo de Lectura

    Las sentencias de lectura siguen el siguiente ciclo:

    El proceso cliente pasa la sentencia SQL (SELECT) al proceso servidor por medio de la SGA.

    Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la

    sentencia. Si la encuentran no tienen que procesarla.

    Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido.

    El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leer

    del fichero de datos. Si los bloques estn en la SGA pero han sido modificados por otro usuario

    y esa modificacin no ha sido validada an, el proceso de servidor debe reconstruir la imagen

    de la fila a partir de los segmentos de rollback, para conseguir consistencia en lectura.

    El proceso servidor pasa los datos solicitados al proceso cliente.

    2.2 Ciclo de Actualizacin

    Las sentencias de actualizacin siguen el siguiente ciclo:

    El proceso cliente pasa la sentencia SQL (UPDATE) al proceso servidor por medio de la SGA.

    Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la

    sentencia. Si la encuentran no tienen que procesarla.

    Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido.

    El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leerdel fichero de datos.

  • 7/22/2019 1 Bases de Datos e Instancias

    18/83

    Se registra el valor antiguo de los datos en un segmento de rollback y se crea un registro redo

    log.

    Se crea una copia de la transaccin en un registro redo log.

    Se ejecuta la sentencia SQL modificando los datos, y se crea un registro redo log que as lo

    refleja.

    El proceso usuario valida la transaccin (COMMIT), registrandose en un registro redo log.

    El LGWR escribe los buffers del redo log en el disco.

    El servidor indica al cliente que la operacin ha sido completada de manera satisfactoria.

    Se registra la terminacin de la transaccin en un registro redo log.

    Se libera la informacin del rollback, pues ya no va a necesitarse.

    Si a partir del paso 6 el usuario cancela la transaccin (ROLLBACK), se puede utilizar la

    informacin de rollback para restablecer el valor original.

    Si sucede algo que impida que la transaccin validada por el usuario pueda llevarse a cabo, se

    puede utilizar la informacin contenida en los registros redo log para rehacer la transaccin (a

    partir del paso 6).

    Como ocurre con todas las transacciones, en algn momento el DBWR escribe en el archivo de

    datos la copia de los bloques de datos modificados que se encuentran en el buffer cache.

    3 Configuracin

    3.1 El Cdigo Oracle

    Cuando el software Oracle se instala en un sistema, se crean subdirectorios y ficheros,

    dependientes todos ellos del S.O. Por ejemplo, en el S.O. Unix, todo los subdirectorios Oracle

    se encuentran colgando del directorio principal ORACLE_HOME. Todos estos subdirectorioscontienen ficheros ejecutables y scripts que son cruciales para el funcionamiento y la

    administracin del SGBD, y es lo que se conoce por el cdigo Oracle. Entre ellos, una

    herramienta nos va a ser fundamental en las tareas de adminstracin y puesta en marcha de la

    BD: server manager, svrmgr. Con ella son convertiremos en DBA, y para ejecutarla deberemos

    ser sus propietarios. La sentencia es la siguiente:

    SVRMGR> connect internalConnected.

  • 7/22/2019 1 Bases de Datos e Instancias

    19/83

    Todas las operaciones de administracin deben comenzar por conectarse a la BD.

    3.2 Arranque y Parada de la BDDurante el arranque y parada de la BD se sucenden un conjunto de eventos que llevan a la BD

    por diferentes estados.

    Para que los usuarios puedan acceder a la BD el DBA necesita abrir la BD. El siguiente es un

    ejemplo de apertura de una BD llamada test.

    SVRMGR> startup open test

    ORACLE instance started.

    Total System Global Area 4512688 bytes.

    Fixed Size 39732 bytes.

    Variable Size 4055164 bytes.

    Database Buffers 409600 bytes.

    Redo Bufers 8192 bytes.

    Database mounted.

    Database opened.

    cuando se ejecuta el comando startup open la BD pasa por tres estados (nomount, mount y

    open) antes de estar disponible. El DBA puede arrancar la BD hasta uno de los estados con el

    comando startup: startup nomount, startup mount. A continuacin vamos a describir cada uno

    de los estados por los que pasa la BD en el proceso de arranque.

    nomount

    SVRMGR> startup open test

    ORACLE instance started.

    Total System Global Area 4512688 bytes.

    Fixed Size 39732 bytes.

    Variable Size 4055164 bytes.

  • 7/22/2019 1 Bases de Datos e Instancias

    20/83

    Database Buffers 409600 bytes.

    Redo Bufers 8192 bytes.

    Oracle lee el fichero init.ora, localiza los ficheros de control, crea e inicializa la SGA, y

    finalmente arranca todos los procesos Oracle. En este estado la instancia de BD est

    arrancada. Se deber llevar la BD al estado nomount cuando se est creando la BD o cuando seest restaurando un fichero de control despus de haberlo perdido.

    mount

    SVRMGR> alter database mount;

    Statement processed.

    Oracle abre los ficheros de control para localizar los ficheros de datos y los redo log, pero no serealizan ninguna comprobacin en ellos en este momento. La instancia monta la BD y la

    bloquea, verificando que ninguna otra instancia ha montado la misma BD.

    Hay varias razones para querer tener la BD en el estado mount. En general, todas las

    sentencias SQL del tipo alter database se deben ejecutar en esta etapa. Algunas de las

    operaciones a realizar cuando la BD est montada son:

    efectuar recuperaciones,

    poner online/offline un fichero de datos,

    recolocar los ficheros de datos y redo log,

    crear un nuevo grupo o miembro redo log, o borrar un grupo o miembro redo log existente.

    open

    SVRMGR> alter database open;

    Statement processed.

    Durante esta etapa, la instancia abre la BD, bloquea los ficheros de datos, y abre todos los

    ficheros redo log. Si la instancia abre la BD despus de una terminacin anormal, o despus de

    una caida, se ejecutar automticamente el proceso de recuperacin utilizando los ficheros

    redo log. Al final de esta etapa la BD est dispuesta para su uso normal.

    Para parar la BD el comando base es shutdown como se puede ver en el siguiente ejemplo:

  • 7/22/2019 1 Bases de Datos e Instancias

    21/83

    SVRMGR> shutdown

    Database closed.

    Database dismounted.

    ORACLE instance shut down.Pero este comando se nos presenta con tres opciones: normal, immediate y abort.

    shutdown normal

    Se impide el acceso a la BD, espera a que todos los usuarios completen todas sus peticiones y

    se desconecten del servidor. Purga todos los buffers de datos y cachs de redo log,

    actualizando los ficheros de datos y de redo log, se eliminan los bloqueos de ficheros, se

    completan las transacciones en marcha, se actualizan las cabeceras de ficheros, elimina los

    threads, libera los bloqueos de la BD por parte de la instancia, y sincroniza los ficheros decontrol y de datos. En resumen, la opcin normal cierran la BD, desmonta la BD y para la

    instancia con cuidado y es la opcin recomendada para parar la BD.

    shutdown immediate

    En ciertas ocasiones puede ser necesario parar la BD de modo inmediato. Si es as, las

    sentencias en proceso son terminadas inmediatamente, cualquier transaccin no confirmada

    (uncommitted) es vuelta atrs (rolled back) y la BD es parada. La nica desventaja de utilizar

    esta opcin es que Oracle no espera a que los usuarios se desconecten. Sin embargo, la BD

    ser consistenta y no se necesitar recuperacin en el siguiente arranque.

    shutdown abort

    En situaciones de emergencia, y cuando todo lo dems falla, se debe realizar una parada de

    este tipo. Por ejemplo, cuando un proceso de la instancia muere y la BD no puede pararse de

    modo normal o inmediato. Cuando se utiliza la opcin abort las sentencias SQL son terminadas

    bruscamente, y las transacciones no confirmadas no son vueltas atrs. Parar la BD con la

    opcin abort requiere recuperacin en la siguiente vez que arranque la BD y esta opcin debe

    ser utilizada slo cuando no quede ms remedio.

    3.3 Almacenamiento de Datos

    Los datos se almacenan en estacios de tablas, y un espacio de tabla es la entidad lgica que se

    corresponde con uno o ms ficheros fsicos. La principal razn de esta organizacin es el

    aumento de la flexibilidad a la hora de realizar operaciones con la BD. En esta seccin vamos a

    dar un repaso a las tareas de administracin relacionadas con los espacios de tablas y con los

    ficheros.

  • 7/22/2019 1 Bases de Datos e Instancias

    22/83

    3.3.1 Espacios de Tablas y Ficheros

    Los espacios de tablas se utilizan para realizar tareas de gestin de espacio, controlar la

    disponibilidad de los datos y ejecutar copias de seguridad y recuperaciones parciales.

    Gestin de Espacio

    El primer espacio de tablas es el SYSTEM. Este espacio de tablas debe estar disponible siempre

    durante el funcionamiento normal de la BD porque contiene el diccionario de datos. Despus

    de la creacin de la BD, se recomienda la creacin de otros espacios de tablas para que los

    datos de los usuarios puedan ser separados de los del diccionario de datos. Incluso, si varias

    apliaciones se van a ejecutar sobre la misma BD es recomendable que sus datos estn

    separados. Para crear un espacio de tablas se puede utilizar el comando create tablespace:

    SVRMGR> create tablespace nombre_tablespace

    2> datafile 'nombre_fichero' size 50M online;

    En el ejemplo anterior se ha creado un espacio de tablas de 50 Mb. de tamao. Cada espacio

    de tabla tiene un conjunto de parmetros de almacenamiento que controla su crecimiento:

    initial: tamao de la extensin inicial (10k).

    next: tamao de la siguiente extensin a asignar (10k).

    minextents: nmero de extensiones asignadas en el momento de la creacin del espacio de

    tablas (1).

    maxextents: nmero mximo de extensiones.

    pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en

    relacin con la ltima extensin utilizada.

    optimal: Tamao ptimo declarado para este espacio de tablas.pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que un

    bloque puede ser utilizado para insertar filas nuevas en l.

    Si el espacio de tablas necesita ms espacio despus de su creacin se puede puede alterar

    para aadir uno o ms ficheros. Para ello se puede utilizar el comando alter tablespace:

    SVRMGR> alter tablespace nombre_tablespace

    2> add datafile 'nombre_fichero' size 30M;

  • 7/22/2019 1 Bases de Datos e Instancias

    23/83

    Si se necesitara variar la localizacin de los ficheros asociados a un espacio de tablas se puede

    hacer con los comandos alter tablespace (el espacio de tables debe estar offline) o alter

    database (la BD debe estar montada pero no abierta). Antes de ejecutar los anteriores

    comandos los ficheros asociados al espacio de tablas deben de haber sido movidos a su nueva

    localizacin utilizando los comandos del SO oportunos.

    Poniendo los tablespaces offline

    Llevar a un espacio de tablas al estado offline significa que se impide el acceso a los datos que

    almacena. El espacio de tablas SYSTEM nunca puede estar offline. Las razones para poner un

    espacio de tablas offline pueden ser varias: un error de escritura en los ficheros que lo

    soportan, el mover los ficheros de sitio, etc. Depus de realizar estas operaciones hay que

    poner otra vez disponible el espacio de tablas, esto es on line

    Los espacios de tablas se pueden poner offline de tres modos: normal, temporary e

    immediate. Si no existe ningn error lo recomendable es poner el espacio de tablas offline

    usando el modo normal. As, se colocar un checkpoint en el espacio de tablas antes de

    ponerlo offline.

    SVRMGR> alter tablespace nombre_tablespace offline normal;

    Si alguno de los ficheros est corrupto, la opcin normal fallar y se necesitar el modo

    temporary. La opcin immediate se utilizar slo cuando la BD est en modo ARCHIVELOG, ya

    que no se produce checkpoint alguno.

    Poniendo los ficheros offline

    No es normal poner los ficheros offline/online. Si un determinado fichero de datos se

    corrompe, se tendr que pone offline, repararlo y ponerlo online de nuevo. Esta operacinpuede suponer sustituirlo por su copia de seguridad, lo que implicar ejecutar el comando

    recover datafile antes de poner el fichero online.

    3.3.2 Segmentos, Extensiones y Bloques

    Los datos en la BD son almacenados fsicamente en bloques Oracle: la mnima unidad de

    espacio fsico, y es un mltiplo del bloque del SO (2 Kb usualmente). El tamao del bloque

    Oracle se fija por el parmetro DB_BLOCK_SIZE del fichero init.ora. Un tamao grande de

  • 7/22/2019 1 Bases de Datos e Instancias

    24/83

    bloque mejora la eficiencia del cache de E/S, pero el tamao de la SGA aumentar para

    contener los mismos DB_BLOCK_BUFFERS, lo que significa un problema de memoria.

    Una serie de bloques contiguos es una extensin, que es una unidad lgica de

    almacenamiento. Una serie de extensiones es un segmento. Cuando un objeto es creado, sereserva una extensin en su segmento. Cuando el objeto crezca, necesitar ms espacio y se

    reservarn ms extensiones.

    Cada segmento tiene un conjunto de parmetros de almacenamiento que controla su

    crecimiento:

    initial: tamao de la extensin inicial (10k).

    next: tamao de la siguiente extensin a asignar (10k).

    minextents: nmero de extensiones asignadas en el momento de la creacin del segmento (1).

    maxextents: nmero mximo de extensiones (99).

    pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en

    relacin con la ltima extensin utilizada (50).

    pctfree: porcentaje de espacio libre para actualizaciones de filas que se reserva dentro de cada

    bloque asignado al segmento (10).

    pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que unbloque puede ser utilizado para insertar filas nuevas en l.

    tablespace: nombre del espacio de tablas donde se crear el segmento.

    Cuando se disea una BD se ha de tener mucho cuidado a la hora de dimensionar la BD y

    prever el crecimiento de las tablas. A continuacin se hacen algunas consideraciones sobre la

    gestin del espacio para los diferentes segmentos.

    Segmentos de Datos

    El espacio del diccionario de datos se suele mantener ms o menos constante, aunque es

    crtico que tenga suficiente espacio para crecer en el espacio de tablas SYSTEM. As, hay que

    tener cuidado de colocar las tablas de usuario, los ndices, segmentos temporales y los

    segmentos de rollback en otros espacios de tablas. Adems, es recomendable que el espacio

    de tablas SYSTEM est al 50% o 75% de su espacio disponible. Finalmente, asegurarse que los

    usuarios no tienen privilegios de escritura en el espacio de tablas SYSTEM.

    Las tablas crecen proporcionalmente con el nmero de filas, ya que se puede suponer que lalongitud de las filas es constante.

  • 7/22/2019 1 Bases de Datos e Instancias

    25/83

    Segmentos de ndice

    Los ndices crecen en tamao en mayor proporcin que las tablas asociadas si los datos en latabla son modificados frecuentemente. La gestin del espacio es mejor si se mantienen los

    ndices de tablas grandes en espacios de tablas separados.

    Segmentos de Rollback

    Los segmentos de rollback almacenan la imagen anterior a una modificacin de un bloque. La

    informacin en el segmento de rollback se utiliza para asegurar la consistencia en lectura, el

    rollback (el valor en el segmento de rollback se copia en el bloque de datos) y la recuperacin.

    Es importante comprender cual es el contenido de un segmento de rollback. No almacenan el

    bloque de datos modificado entero, slo la imagen previa de la fila o filas modificadas. La

    informacin del segmento de roolback consiste en varias entradas llamadas undo. Por

    ejemplo, si se inserta una fila en una tabla, el undo necesitar slo el rowid de la fila insertada,

    ya que para volver atrs la insercion slo hay que realizar un delete. En las operacin de

    actualizacin, se almacenar el valor antiguo de las columnas modificadas. El segmento de

    rollback asegura que la informacin undo se guardan durante la vida de la transaccin.

    Un segmento de rollback como cualquier otro segmento consiste en una serie de extensiones.

    Sin embargo, la mayor diferencia entre un segmento de datos y otro rollback es que en este

    ltimo las extensiones se utilizan de manera circular. As, habr que tener cuidado a la hora de

    fijar el tamao del segmento de rollback para que la cabeza no pille a la cola.

    Segmentos Temporales

    Los segmentos temporales se crean cuando se efectuan las siguientes operaciones:

    Create Index

    Select con distinct, order by, union, intersect y minus.

    uniones no indexadas.

    Ciertas subconsultas correlacionadas.

  • 7/22/2019 1 Bases de Datos e Instancias

    26/83

    Si las tablas a ordenar son pequeas la ordenacin se realiza en memoria principal, pero si la

    tabla es grande se realiza en disco. El parmetro SORT_AREA_SIZE determina el lugar donde se

    hace la ordenacin. Incrementndole se reduce la creacin de segmentos temporales.

    3.4 Configuracin de la BD

    Mientras se disea la BD hay que considerar la posible recuperacin de una caida, y las

    prestaciones de la BD, relacionando todo esto con las necesidades de la implantacin y los

    medios disponibles. La configuracin de la BD est relacionada con los ficheros de control, los

    ficheros redo log activos y los archivados.

    3.4.1 Gestionando los Ficheros de Control

    Los ficheros de control contienen el esquema de la BD. Es uno de los ms importantes ficheros

    e imprescindible para el uso normal de la BD. As que daremos alguna pista para su gestin.

    El parmetro CONTROL_FILES del fichero init.ora contiene la lista de todos los ficheros de

    control. Cuando se arranca la BS, Oracle lee el fichero init.ora para determinar cuntos ficheros

    de control se usan en la BD y dnde estn. Durante la fase de montaje, se abren los ficheros de

    control para leer el esquema de la BD. Aunque Oracle escribe en todos los ficheros de control,

    slo lee el primero listado en el parmetro CONTROL_FILES.

    Para protegerlos contra fallos de almacenamiento, se sugiere que al menos existan dos

    ficheros de control, cada uno en un disco diferente, aunque es buena idea mantener ms

    copias en diferentes discos. Esto es una poltica de espejado que protege frente a fallos en

    disco. Si un disco falla y se pierden todos los ficheros en l, se puede seguir utilizando los

    ficheros de control de otros discos. Esto supone una pequea sobrecarga al sistema, ya que

    cada vez que se porduce un checkpoint o cambia el esquema de la BD, todos los ficheros de

    control son actualizados.

    Cuando se produce un fallo en algn disco y algn fichero de control se pierde hay que parar la

    BD con la opcin abort, copiar el fichero de control que queda en otro disco, editar el fichero

    init.ora para reflejar este cambio, y volver a levantar la BD.

    Si un fallo ha producido la prdida de todas las copias de los ficheros de control habr que

    recrearlos con el comando create controlfile. Si algunos de los parmetros MAXLOGFILES,

    MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATAFILES y MAXINSTANCES vara habr que

    utilizar tambin el comando CREATE CONTROLFILE.

  • 7/22/2019 1 Bases de Datos e Instancias

    27/83

    3.4.2 Gestionando los Ficheros Redo Log Activos

    Oracle proporciona la posibilidad de espejar los ficheros redo log activos. Mecanismo conocido

    como ficheros redo log multiplexados. Oracle necesita al menos dos grupos de fricheros redo

    log, cada uno con un miembro como mnimo. Oracle efectua escrituras en paralelo a cadamiembro, pero si estn en el mismo disco, realmente la escritura se serializa.

    Otro aspecto a tener en cuenta es el tamao de los ficheros redo log. Si son muy pequeos, el

    LGWR deber cambiar de ficheros demasiado frecuentemente, lo que reduce su rendimiento.

    Por otro lado, si los ficheros redo log son demasiado grandes, se necesitar mucho tiempo en

    las recuperaciones, ya que se tendrn que recuperar muchas transacciones.

    Otro aspecto muy importante es la eleccin del nmero correcto de grupos, ya que disponerde demasiados pocos grupos puede acarrear problemas cuando estmos en modos

    ARCHIVELOG y tenemos una tasa de transacciones muy alta. Esto puede suponer que un grupo

    que todava est archivando por el proceso ARCH se convierta en el grupo en el que el LGWR

    necesite escribir, lo que producira que la BD se parara, ya que el LGWR tienen que esperar a

    que el grupo est disponible, una vez que su contenido ha sido archivado. Para la mayora de

    las implantaciones, tener entre 2 y 10 grupos puede ser suficiente. El nmero de grupos no

    puede exceder de MAXLOGFILES, ni el nmero de miembros puede ser mayor que

    MAXLOGMEMBERS.

    4 Creacin de una BD Ejemplo

    A continuacin se muestran los scripts de creacin de una BD llamada demo. Este conjunto de

    scripts es:

    crdbdemo.sql

    Script de creacin de la BD llamada demo. Antes de ejecutarlo hay que asegurarse que los path

    en l referenciados sean consecuentes con la implantacin. Adems la variable ORACLE_SID

    debe ser puesta a demo

    configdemo.ora

    Script con los parmetros de configuracin bsicos. Estos parmetros no suelen cambiar. Este

    fichero es incluido en initdemo_0.ira y en initdemo.ora.

    initdemo_0.ora

    Script con los parmetros de configuracin iniciales. Se utilizar slo en la fase de creacin de

    la BD.

    initdemo.ora

    Script con los parmetros de configuracin.

  • 7/22/2019 1 Bases de Datos e Instancias

    28/83

    crdbdemo.sql

    REM *

    REM * script de creacion para bd DEMO

    REM * fichero: crdbdemo.sql

    REM * localizacion: /opt/app/oracle/admin/demo

    REM * ORACLE_HOME: /opt/app/oracle/product/7.3.2

    REM *

    set termout on

    set echo on

    spool crdbdemo.log

    REM *

    REM * creacion inicial de la BD

    REM * Paso 1: crear la BD, con los ficheros de control

    REM * especificados en el fichero initdemo.ora

    REM * ORACLE_SID debe ser igual a demo

    REM *

    REM * arrancar la BD demo con el fichero initdemo.ora

    REM *

    connect internal

    startup pfile=/opt/app/oracle/admin/demo/initdemo.ora nomount

    REM *

    REM * crear la BD demo

    REM * Guia de configuracion del tablespace SYSTEM:

    REM * ORACLE RDBMS 5Mb

  • 7/22/2019 1 Bases de Datos e Instancias

    29/83

    REM * Espacio adicional del diccionario para aplicaciones 10-50Mb

    REM * Guia de configuracion de los Redo Log:

    REM * Utilizar 3+ ficheros redo log para disminuir las esperas.

    REM * Utilizar 2Mb por redo y por conexion para reducir checkpoints.REM *

    create database "demo"

    maxinstances 1

    maxlogfiles 16

    character set "WE8DEC"

    datafile

    '/export/home/oradata/demo/system01.dbf' size 20M reuse

    logfile

    '/export/home/oradata/demo/redodemo01.log' size 2M reuse,

    '/export/home/oradata/demo/redodemo02.log' size 2M reuse,

    '/export/home/oradata/demo/redodemo03.log' size 2M reuse;

    disconnect

    REM *

    REM * la BD debera estar arrancada en este momento.

    REM *

    connect internal

    REM *

    REM * Paso 2: crear el diccionario

    REM * el fichero catalog.sql viene con la instalacion del software Oracle.

    REM *

    @/opt/app/oracle/product/7.3.2/rdbms/admin/catalog.sql

  • 7/22/2019 1 Bases de Datos e Instancias

    30/83

    REM *

    REM * Paso 3: crear un segundo segmenteo rollback (r0) en SYSTEM.

    REM *

    connect internal

    create rollback segment r0 tablespace system

    storage (initial 16k next 16k minextents 2 maxextents 20);

    REM *

    REM * Paso 4: Alterar el nuevo segmento de rollback para hacerlo disponible

    REM * Utilizar ALTER ROLLBACK SEGMENT ONLINE para poner r0 online

    REM * sin tirar la BD y volverla a arrancar.

    REM *

    alter rollback segment r0 online;

    REM *

    REM * crear nuevos tablespaces

    REM *

    REM * Paso 5: crear el tablespace RBS para los segmentos de rollback

    REM * Guia de configuracion de los segmentos rollback:

    REM * 1 segmento rollback por cada 4 acciones concurrentes.

    REM * No mas de 50 segmentos rollback.

    REM * Todos los segmentos rollback del mismo tamano.

    REM * Entre 2 y 4 extensiones de igual tamano por segmento rollback.

    REM *

    create tablespace rbs datafile

  • 7/22/2019 1 Bases de Datos e Instancias

    31/83

    '/export/home/oradata/demo/rbs01.dbf' size 8M reuse,

    '/export/home/oradata/demo/rbs02.dbf' size 8M reuse,

    '/export/home/oradata/demo/rbs03.dbf' size 8M reuse,

    default storage (initial 128k

    next 128k

    pctincrease 0

    minextents 2

    maxextents 50

    );

    REM *

    REM * Paso 6: crear el tablespace (TEMP) para segmentos temporales.

    REM * Guia de configuracion del tablespace temporal:

    REM * Initial y next extensiones = k * SORT_AREA_SIZE, k en {1,2,...}.

    REM *

    create tablespace temp datafile

    '/export/home/oradata/demo/temp01.dbf' size 1M reuse

    default storage (

    initial 500k

    next 500k

    pctincrease 0

    );

    REM *

    REM * Paso 7: crear el tablespace (TOOLS) para las herramientas de bd

    REM *

    create tablespace tools datafile

    '/export/home/oradata/demo/tools01.dbf' size 15M;

  • 7/22/2019 1 Bases de Datos e Instancias

    32/83

    REM *

    REM * Paso 8: crear el tablespace para los usuarios.REM *

    create tablespace users datafile

    '/export/home/oradata/demo/users01.dbf' size 1M;

    REM *

    REM * Paso 9: crear segmentos rollback

    REM * crear 2 segmentos rollback en el tablespace RBS

    REM *

    create rollback segment r01 tablespace rbs;

    create rollback segment r02 tablespace rbs;

    REM *

    REM * Paso 10: desactivar el segundo segmento rollback en el

    REM * tablespace SYSTEM.

    REM * Utilizar ALTER ROLLBACK SEGMENT ONLINE para poner los

    REM * segmentos rollback online sin tirar la BD y volverla a arrancar.

    REM *

    alter rollback segment r01 online;

    alter rollback segment r02 online;

    REM *

    REM * Como ya hay 2 segmentos rollback creados y online,

    REM * no necesitamos el segmento rollback en el tablespace SYSTEM.

    REM *

  • 7/22/2019 1 Bases de Datos e Instancias

    33/83

    alter rollback segment r0 offline;

    drop rollback segment r0;

    REM *

    REM * Modificar los usuarios SYS y SYSTEM.

    REM * designar tablespace temporal a TEMP

    REM * designar tablespace por defecto para todos los usuarios TOOLS

    REM *

    alter user sys temporary tablespace temp;

    alter user system default tablespace tools temporary tablespace temp;

    REM *

    REM * Paso 11: Para cada usuario DBA, ejecutar el script de

    REM * creacion de sinonimos. No olvidar ejecutarlo para cada

    REM * usuario DBA creado en el futuro.

    REM *

    connect system/manager

    @/opt/app/oracle/product/7.3.2/rdbms/admin/catdbsyn.sql

    spool off

    configdemo.ora

    https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0C

    DUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2For

    arq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA

    &bvm=bv.59568121,d.eW0Instancia Oracle[editar]

    https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0
  • 7/22/2019 1 Bases de Datos e Instancias

    34/83

    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.

  • 7/22/2019 1 Bases de Datos e Instancias

    35/83

    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, un datafile 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.

  • 7/22/2019 1 Bases de Datos e Instancias

    36/83

    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 propio segmento 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.

  • 7/22/2019 1 Bases de Datos e Instancias

    37/83

    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 defilas 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 seincrementa 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.

  • 7/22/2019 1 Bases de Datos e Instancias

    38/83

    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 espaciolibre.

  • 7/22/2019 1 Bases de Datos e Instancias

    39/83

    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

  • 7/22/2019 1 Bases de Datos e Instancias

    40/83

    SELECT...UNION

    SELECT...INTERSECT

    SELECT...MINUS

    Joins indexados o con subconsultasSegmentos 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 querestablezcan 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.

  • 7/22/2019 1 Bases de Datos e Instancias

    41/83

    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 paracrear 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.

    http://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de

    _UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oracle

    La Arquitectura de la Base de Datos Oracle

    ABR 25

    Publicado por GUNN3R

    El Oracle Server consiste en dos entidades:

    La Instancia: Es un conjunto de Procesos y Estructuras de Memoria.

    La Base de Datos: Es un conjunto de Archivos en Disco.

    Durante la creacin, se crea primero la instancia y despus la Base de Datos. Es decir, primero

    se levanta la instancia y posteriormente se abre la Base de Datos.

    Las estructuras lgicas (tablas, ndices, etc) no estn directamente conectadas con las

    estructuras fsicas (archivos).

    http://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oracle
  • 7/22/2019 1 Bases de Datos e Instancias

    42/83

    La instancia consiste en un conjunto de procesos y estructuras de memoria que existen en la

    RAM y en el CPU. Cuando se apaga la instancia, ambos procesos y estructuras de memoria

    terminan de ejecutarse al mismo tiempo, mientras la Base de Datos prevalece en disco.

    A pesar de que la instancia vive en memoria, puede ser detenida o iniciada. En cambio, la Basede Datos persiste indefinidamente hasta que se borren los archivos del disco.

    Los procesos que hacen la instancia son llamados Background Process. Las estructuras de

    memoria son implementadas en segmentos de memoria compartida provedas por el Sistema

    Operativo. Esta rea de memoria compartida se conoce como SGA(System Global Area).

    A los procesos de servidor tambin se les conoce como Foreground Process. A cada proceso de

    servidor se le asocia con una PGA (Program Global Area).

    Un PGA es una rea de memoria no compartida. Es decir un rea de memoria privada a la cual

    solo puede accesar el proceso de servidor a la cual esta asociado.

    Las sesiones consisten de un proceso de usuario que corre localmente en el ordenador del

    usuario ligado a un proceso de servidor que corre localmente en el servidor.

    Las estructuras fsicas que conforman a una base de datos se llaman:

    Data Files

    Control File

    Redo Logs

    La Base de Datos garantiza completa abstraccin entre las estructuras fsicas y las estructuras

    lgicas. Es decir, no hay manera en que se pueda saber en que bit yace que informacin.

    Los datos se guardan en los datafiles, es decir que estos ficheros son como un banco de

    informacin que no tiene lmite en tamao. La abstraccin se refiere a que los archivos fsicos

    podran moverse, cambiar de tamao, etc. Y los usuarios no se enteraran.

    La relacin entre las estructuras fsicas y lgicas se mantiene y documenta en el Diccionario de

    Datos, ya que este contiene los metadatos que describen a toda la Base de Datos.

  • 7/22/2019 1 Bases de Datos e Instancias

    43/83

    El redo log es un archivo que contiene todos los change vectors. Un change vector es una

    alteracin hecha por un comando DML.

    Cuando una sesin efecta cambios en la informacin, la informacin en los data blocks

    cambia y el vector change se escribe el el redo log.

    Entonces, cuando se daa un datafile, Oracle extraer los vectores relevantes del redo log y los

    aplicar en los bloques.

    Los Control Files guardan informacin acerca de las estructuras de la Base de Datos.

    Cuando una instancia abre alguna Base de Datos, primero abre el Control File. En el ControlFile se encuentra la informacin para que la instancia se pueda conectar a la Base de Datos y al

    Diccionario de Datos.

    Es imposible para cualquier proceso de usuario tener contacto con la Base de Datos, todos los

    accesos deben ser mediados por los procesos del servidor.

    En un ambiente de una sola instancia, una sola instancia abre la Base de Datos, mientras que

    en un ambiente distribuido existen varias maneras de agrupar las instancias con las Bases deDatos.

    Ejemplos de Sistemas Distribuidos:

    Real Application Clustering

    Streaming

    Data Guard

    Una instancia consiste en un bloque de memoria compartida conocida como SGA y un

    conjunto de procesos BackGround.

    Existen como mnimo 3 estructuras de memoria en el SGA:

    Database Buffer Cache

    Log Buffer

  • 7/22/2019 1 Bases de Datos e Instancias

    44/83

    Shared Pool

    Las sesiones de usuario tambin necesitan memoria en el servidor. Esta memoria privada se

    conoce como PGA. Entonces as, cada sesin tendr su propio PGA.

    El Database Buffer Cache, se encarga de ejecutar SQL. Cuando se hace una operacin DML, se

    toman los data blocks que contienen la informacin solicitada y se copian al Database Buffer

    Cache. Posteriormente, los cambios son aplicados a las copias de los data blocks que se

    encuentran en el Database Buffer Cache.

    Cuando se requiere consultar informacin, los datos tambin son procesados a travs del

    cache. La sesin obtiene los data blocks que contienen la informacin de inters y los copia al

    Database Buffer Cache; los registros relevantes son posteriormente transferidos al PGA de la

    sesin para un procesamiento prximo.

    Cabe decir que estos bloques se mantendrn en el buffer por cierto tiempo. Todos los

    datafiles, estn formateados en data blocks, mientras el Database Buffer cache estar

    formateado en memory buffers. Cada memory buffer se acoplar al tamao de de un data

    block.

    Un memory buffer que guarda un bloque en cache, cuya informacin es diferente al bloque en

    disco, se conoce como dirty buffer. Un buffer estar limpio(es decir ser un clean buffer)

    cuando se le ingrese un bloque por primera vez cuando los datos del buffer se copien a los

    datafiles.

    Un buffer se convertir en dirty buffer cuando el bloque que contiene es actualizado. Los

    bloques deben ser copiados a los Data Files eventualmente, de esto se encarga el proceso

    DBWR. Cuando esto ocurre, los buffers vuelven a ser clean buffers nuevamente.

    El Log Buffer Cache es un rea para montar los vector changes antes de que se registren en el

    redo log. Un vector change es cualquier cambio aplicado a la informac