18
Nº ES026288 ARQUITECTURA DE ORACLE DATABASE 11G (I) 1. INSTANCIA DE ORACLE Este apartado explica la naturaleza de una instancia de Oracle Database, los parámetros y los archivos de diagnóstico asociados con una instancia, y qué ocurre durante la creación de la instancia y la apertura y cierra de la base de datos. 1.1 Introducción a la instancia de Oracle Database. Una instancia de una base de datos es un conjunto de estructuras de memoria que administran los ficheros de la base de datos. Una base de datos es un conjunto de ficheros físicos en disco creados por la sentencia CREATE DATABASE. La instancia administra sus datos asociados y brinda servicio a los usuarios de la base de datos. Cada ejecución de Oracle Database está asociado con al menos una instancia. Debido a que una instancia se encuentra en memoria y la base de datos se encuentra en el disco, una instancia puede existir sin una base de datos, y una base de datos puede existir sin una instancia. 1.1.1 Estructura de la instancia de la base de datos Cuando se inicia una instancia, Oracle Database asigna un área de memoria denominada Área Global de Sistema (System Global Area – SGA) e inicia uno o más procesos background. La SGA realiza varias funciones, incluyendo las siguientes: Mantenimiento de las estructuras de datos internas que son accedidas por muchos procesos e hilos concurrentemente. Cachear bloques de datos leídos desde el disco. Almacenar en buffers los datos de rehacer (redo data) antes de escribirlos a los archivos online de rehacer (archivos online de redo log). Almacenar planes de ejecución de SQL. La SGA se comparte por los procesos Oracle, que incluyen procesos servidores y procesos background que se ejecutan en una única máquina. La forma en la que los procesos Oracle se asocian con la SGA varía en función del sistema operativo. Una instancia de la base de datos incluye procesos background. Los procesos servidores, y la memoria asignada a los procesos, también se encuentra en la instancia. La instancia sigue funcionando cuando los procesos servidores terminan.

Arquitectura Oracle Database I

Embed Size (px)

Citation preview

Page 1: Arquitectura Oracle Database I

Nº ES026288

ARQUITECTURA DE ORACLE DATABASE 11G (I)1. INSTANCIA DE ORACLE

Este apartado explica la naturaleza de una instancia de Oracle Database, los parámetros y losarchivos de diagnóstico asociados con una instancia, y qué ocurre durante la creación de lainstancia y la apertura y cierra de la base de datos.

1.1 Introducción a la instancia de Oracle Database.

Una instancia de una base de datos es un conjunto de estructuras de memoria que administranlos ficheros de la base de datos. Una base de datos es un conjunto de ficheros físicos en discocreados por la sentencia CREATE DATABASE. La instancia administra sus datos asociados ybrinda servicio a los usuarios de la base de datos.

Cada ejecución de Oracle Database está asociado con al menos una instancia. Debido a que unainstancia se encuentra en memoria y la base de datos se encuentra en el disco, una instanciapuede existir sin una base de datos, y una base de datos puede existir sin una instancia.

1.1.1 Estructura de la instancia de la base de datos

Cuando se inicia una instancia, Oracle Database asigna un área de memoria denominada ÁreaGlobal de Sistema (System Global Area – SGA) e inicia uno o más procesos background. La SGArealiza varias funciones, incluyendo las siguientes:

Mantenimiento de las estructuras de datos internas que son accedidas por muchosprocesos e hilos concurrentemente.

Cachear bloques de datos leídos desde el disco. Almacenar en buffers los datos de rehacer (redo data) antes de escribirlos a los archivos

online de rehacer (archivos online de redo log). Almacenar planes de ejecución de SQL.

La SGA se comparte por los procesos Oracle, que incluyen procesos servidores y procesosbackground que se ejecutan en una única máquina. La forma en la que los procesos Oracle seasocian con la SGA varía en función del sistema operativo.

Una instancia de la base de datos incluye procesos background. Los procesos servidores, y lamemoria asignada a los procesos, también se encuentra en la instancia. La instancia siguefuncionando cuando los procesos servidores terminan.

Page 2: Arquitectura Oracle Database I

Nº ES026288

1.2 Configuraciones de la instancia de la base de datos

Oracle Database puede ejecutarse en cualquiera de las siguientes configuraciones mutuamenteexcluyentes:

Configuración de única instancia.

Existe una correspondencia de uno-a-uno entre la base de datos y la instancia.

Configuración de Oracle Real Application Clusters (Oracle RAC)

Existe una correspondencia de uno-a-muchos entre la base de datos y las instancias.

Page 3: Arquitectura Oracle Database I

Nº ES026288

Tanto en el modelo de instancia única como en modelo de Oracle RAC, la base de datos sólopuede asociarse con una sola instancia al mismo tiempo. Se puede iniciar una instancia de la

base de datos y montar una base de datos; pero no montar dos bases de datos simultáneamentecon la misma instancia.

Se pueden ejecutar múltiples instancias concurrentemente en el mismo ordenador, cada unaaccediendo a su propia base de datos. Por ejemplo, un ordenador puede albergar dos bases dedatos distintas: prod1 y prod2. Una instancia de la base de datos administra prod1, mientras queotra instancia diferente administra prod2.

1.2.1 Duración de una instancia.

Una instancia comienza cuando se crea con la orden STARTUP y concluye cuando se termina.Durante este período de tiempo, una instancia puede asociarse con una y sólo una base de datos.Además, la instancia puede montar una sola base de datos a la vez, cerrarla una sola vez y abrirlauna sola vez. Después de que una base de datos ha sido cerrada o bajada, se puede iniciar unainstancia diferente para montar y abrir esta base de datos.

La tabla siguiente ilustra el ejemplo de una instancia de la base de datos intentando reabrir unabase de datos que fue previamente cerrada:

Sentencia ExplicaciónSQL> STARTUPORACLE instance started.

Total System Global Area 468729856 bytesFixed Size 1333556 bytesVariable Size 440403660 bytesDatabase Buffers 16777216 bytesRedo Buffers 10215424 bytesDatabase mounted.Database opened.

El comando STARTUP crea una instancia,que monta y abre la base de datos.

Page 4: Arquitectura Oracle Database I

Nº ES026288

Sentencia ExplicaciónSQL> SELECTTO_CHAR(STARTUP_TIME,'MON-DD-RR HH24:MI:SS')AS "Inst Start Time" FROM V$INSTANCE;

Inst Start Time------------------JUN-18-09 13:14:48

Esta consulta muestra la hora en la que lainstancia actual se inició.

SQL> ALTER DATABASE CLOSE;Database altered.

La instancia cierra la base de datos,dejándola en estado mount. La instanciapuede leer y escribir de los archivos decontrol, pero no en los archivos de datos.

SQL> ALTER DATABASE OPEN;ALTER DATABASE OPEN*ERROR at line 1:ORA-16196: database has beenpreviously opened and closed

La instancia intenta abrir de nuevo la basede datos que fue previamente cerrada.Oracle Database emite un error debido aque la misma instancia no puede abrir unabase de datos dos veces.

SQL> SHUTDOWN IMMEDIATE En esta fase, la única opción para lainstancia es hacer shutdown, terminandola vida de esta instancia.

SQL> STARTUPOracle instance started.. . .

El comando STARTUP crea una nuevainstancia y monta y abre la base de datos.

SQL> SELECTTO_CHAR(STARTUP_TIME,'MON-DD-RR HH24:MI:SS')AS "Inst Start Time" FROM V$INSTANCE;

Inst Start Time------------------JUN-18-09 13:16:40

Esta consulta muestra la hora en la que lainstancia actual fue iniciada. La hora deinicio diferente muestra que esta instanciaes diferente de la que cerró la base dedatos.

1.2.3 Identificador de Sistema Oracle (SID)

El identificador de sistema (SID) es un nombre único para una instancia de una base de datosOracle en un host específico. En UNIX y Linux, Oracle Database utiliza el SID y el valor delparámetro ORACLE_HOME para crear una clave en la memoria compartida. Asimismo, el SID seutiliza por defecto para localizar el fichero de parámetros, que se usa para ubicar ficherosimportantes como los archivos de control de la base de datos.

En muchas plataformas, a la variable de entorno ORACLE_SID se le asigna el SID, mientras que ala variable ORACLE_HOME se le asigna el directorio home de Oracle. Cuando los clientes seconectan a una instancia, pueden especificar el SID en una conexión Oracle Net o utilizar unnombre de un servicio de red. Oracle Database convierte el nombre de un servicio de red en unORACLE_SID y en un ORACLE_HOME.

Page 5: Arquitectura Oracle Database I

Nº ES026288

1.3 Inicialización y Cierre de la instancia

Una instancia de la base de datos proporciona al usuario acceso a la base de datos. Esta secciónexplica los posibles estados de la instancia y de la base de datos.

1.3.1 Inicialización de la instancia y de la base de datos (Startup)

En un caso de uso normal, se puede iniciar manualmente una instancia, para luego montar yabrir la base de datos, haciéndola así disponible para los usuarios. Por ejemplo, se puede usar elcomando STARTUP desde SQL*Plus, Oracle Enterprise Manager, o la utilidad SRVCTL pararealizar estos pasos. La figura siguiente muestra cómo una base de datos progresa desde unestado shutdown a un estado open.

Una base de datos atraviesa las siguientes fases, cuando pasa de un estado shutdown a unestado de base de datos abierta:

1. La instancia se inició sin montar la base de datos.

La instancia se inició, pero aún no se ha asociado con una base de datos.

2. Base de datos montada.

La instancia se inició y está asociada con una base de datos tras leer su archivo decontrol. La base de datos permanece cerrada a los usuarios.

3. Base de datos abierta.

La instancia se inició y está asociada con una base de datos abierta. Los datos contenidosen los archivos de datos están accesibles a los usuarios autorizados.

Page 6: Arquitectura Oracle Database I

Nº ES026288

1.3.1.1 Conexión con privilegios de administrador

La inicialización (startup) y cierre (shutdown) de la base de datos son poderosas opcionesadministrativas que están restringidas a los usuarios que se conecten a Oracle Database conprivilegios de administrador. Los usuarios normales no tienen control sobre el estado actual deuna base de datos Oracle.

Dependiendo del sistema operativo, las siguientes condiciones establecen los privilegios deadministración para un usuario dado:

Los privilegios del sistema operativo de ese usuario lo habilitan para conectarse a la basede datos utilizando privilegios de administrador.

Se le otorga al usuario los privilegios de sistema SYSDBA o SYSOPER, y la base de datosutiliza ficheros de contraseñas para autenticar a los administradores de la base de datosen la red.

SYSDBA y SYSOPER son privilegios de sistema especiales que habilitan el acceso a la instanciade la base de datos incluso cuando la base de datos no está abierta. El control de estos privilegiosestá fuera de la misma base de datos. Cuando se conecta con privilegios de sistema SYSDBA, elusuario está en el esquema cuyo propietario es SYS. Cuando se conecta como SYSOPER, elusuario está en el esquema público. Los privilegios SYSOPER son un subconjunto de losprivilegios SYSDBA.

1.3.1.2 Cómo se inicia una instancia

Cuando Oracle Database inicia una instancia, realiza los siguientes pasos básicos:

1. Busca un fichero de parámetros de servidor en una localización específica (que varía enfunción de la plataforma), si no lo encuentra, busca un fichero de texto de parámetros deinicialización (SPFILE, PFILE)

2. Lee el archivo de parámetros para determinar los valores de los parámetros deinicialización.

3. Asigna la SGA basada en los parámetros de inicialización.4. Inicia los procesos background de Oracle.5. Abre el log de alerta (alert log) y los archivos de traza (trace files) y escribe todas las

configuraciones de parámetros explícitos en el log de alerta con una sintaxis de parámetroválida.

En este momento, no se ha asociado ninguna base de datos con la instancia. Los escenarios querequieren un estado NOMOUNT incluyen la creación de la base de datos y ciertas operaciones decopia de seguridad y recuperación.

1.3.1.3 Cómo se monta una Base de datos

La instancia monta una base de datos para asociarla con ella misma. Para montar la base dedatos, la instancia obtiene los nombres de los ficheros de control de la base de datos,especificados en el parámetro de inicialización CONTROL_FILES, y abre los ficheros. OracleDatabase lee los ficheros de control para encontrar los nombres de los ficheros de datos y de losficheros de redo log online, a los cuales intentará acceder cuando se abra la base de datos.

Page 7: Arquitectura Oracle Database I

Nº ES026288

En una base de datos montada, la base de datos está cerrada y accesible sólo a losadministradores de la base de datos. Los administradores pueden mantener la base de datoscerrada mientras realizan operaciones de mantenimiento específicas. Sin embargo, la base dedatos no estará disponible para operaciones normales.

Si se desea que Oracle Database permita que se puedan montar múltiples instancias sobre lamisma base de datos concurrentemente, entonces se debe inicializar el parámetroCLUSTER_DATABASE al valor adecuado. El comportamiento de la base de datos depende de estaasignación:

Si CLUSTER_DATABASE es FALSE (por defecto) para la primera instancia que monta unabase de datos, entonces sólo esta instancia puede montar la base de datos.

Si CLUSTER_DATABASE es TRUE para la primera instancia, entonces las instanciasrestantes pueden montar la base de datos si sus parámetros de inicializaciónCLUSTER_DATABASE se han establecido a TRUE. El número de instancias que puedenmontar la base de datos está sujeto a un máximo predeterminado especificado cuando secrea la base de datos.

1.3.1.4 Cómo se abre una base de datos

La apertura de una base de datos montada la hace disponible para operaciones normales.Cualquier usuario válido puede conectar a una base de datos abierta y acceder a su información.Normalmente, un administrador de la base de datos abre la base de datos para hacerla accesiblepara uso general.

Cuando se abre la base de datos, Oracle Database realiza las siguientes acciones:

Abre los archivos de datos online en espacios de tablas (tablespaces).

Si un tablespace estaba online cuando la base de datos se cerró, el tablespace y suscorrespondientes archivos de datos estarán offline cuando la base de datos se abra denuevo.

Adquiere un tablespace de deshacer (undo tablespace).

Si existen varios tablespaces de deshacer, el parámetro de inicializaciónUNDO_TABLESPACE designa el tablespace de deshacer a utilizar. Si este parámetro no seinicializa, se toma el primer tablespace de deshacer disponible.

Abre los ficheros de Redo Log online.

1.3.1.5 Modo Sólo Lectura

Por defecto, la base de datos se abre en modo lectura/escritura. De este modo, los usuariospueden hacer cambios en los datos, generar información de redo en el log redo online.Alternativamente, se puede abrir en modo sólo lectura, para prevenir la modificación de datosdebida a las transacciones de los usuarios.

El modo sólo lectura restringe el acceso a la base de datos a transacciones de sólo lectura, que nopueden escribir en los archivos de datos ni en los archivos de redo log online. Sin embargo, la

Page 8: Arquitectura Oracle Database I

Nº ES026288

base de datos puede realizar recuperaciones u operaciones que cambien el estado de la base dedatos sin generar información de redo.

1.3.2 Cierre de la base de datos y de la instancia (Shutdown)

En un caso típico de uso, se puede cerrar manualmente la base de datos, haciendo que deje deestar disponible para los usuarios, mientras se realizan tareas de mantenimiento u otras tareasadministrativas. Se puede usar el comando SHUTDOWN de SQL*Plus o Enterprise Manager pararealizar estos pasos. La figura siguiente muestra la progresión de un estado abierto a un estadode cierre consistente.

Oracle Database realiza automáticamente los siguientes pasos cuando una base de datos se cierraconsistentemente:

1. Cierre de la base de datos.

La base de datos está montada, pero los archivos de datos online y los archivos de redo logestán cerrados.

2. Desmontaje de la base de datos.

La instancia está iniciada, pero ya no se encuentra asociada con el archivo de control de labase de datos.

3. Cierre de la instancia de la base de datos.

La instancia de la base de datos ya no está iniciada.

Oracle Database no pasa por todos los pasos anteriores cuando una instancia falla o se realiza unSHUTDOWN ABORT, que provoca la terminación inmediata de la instancia.

Page 9: Arquitectura Oracle Database I

Nº ES026288

1.3.2.1 Modos de cierre

Un administrador de la base de datos con privilegios SYSDBA o SYSOPER puede cerrar la base dedatos utilizando el comando SHUTDOWN o Enterprise Manager. El comando SHUTDOWN tieneopciones para determinar el comportamiento del cierre. La tabla siguiente resume elcomportamiento en los diferentes modos de cierre:

Comportamiento de la BD ABORT IMMEDIATE TRANSACTIONAL NORMAL

Permite nuevas conexiones No No No No

Espera hasta que finalicen las sesionesactuales

No No No Sí

Espera hasta que finalicen las transaccionesactuales

No No Sí Sí

Realiza un checkpoint y cierra los ficherosabiertos

No Sí Sí Sí

Las posibles sentencias SHUTDONW son:

SHUTDOWN ABORT

Este modo está pensado para situaciones de emergencia, es decir, cuando no se puedacerrar de otra forma. Este modo de cierre es el más rápido. Sin embargo, una aperturasubsiguiente de la base de datos puede durar más tiempo debido a que se debe realizar larecuperación de la instancia para hacer que los archivos de datos queden consistentes.

SHUTDOWN IMMEDIATE

Este modo es habitualmente el más rápido después del SHUTDOWN ABORT. OracleDatabase termina cualquier sentencia SQL que estuviese ejecutándose y desconecta a losusuarios. Se terminan las transacciones activas y los cambios que no tuvieron aceptación(commit) se revocan (rollback).

SHUTDOWN TRANSACTIONAL

Este modo previene que los usuarios lancen nuevas transacciones, pero espera a que lastransacciones actuales concluyan antes de completar el cierre. Este modo puede suponeruna cantidad de tiempo significativa, dependiendo de la naturaleza de las transaccionesactuales.

SHUTDOWN NORMAL

Este es el modo por defecto de cierre. La base de datos espera a que todos los usuarios sedesconecten antes del cierre.

Page 10: Arquitectura Oracle Database I

Nº ES026288

1.3.2.2 Cómo se cierra una base de datos

La operación de cierre de la base de datos viene implícita con el apagado de la base de datos. Lanaturaleza de la operación donde de si el apagado de la base de datos es normal o anormal.

1.3.2.3 Cómo se cierra una base de datos durante un apagado normal

Cuando una base de datos se cierra como parte de un apagado (shutdown) con cualquier opcióndistinta de ABORT, Oracle Database escribe los datos de la SGA en los ficheros de datos y en losarchivos de redo log online. A continuación, la base de datos cierra los archivos de datos online ylos archivos de redo log. Cuando la base de datos se vuelve a abrir, los tablespaces que estabanoffline, continúan estando offline.

En este momento, la base de datos está cerrada e inaccesible para operaciones normales. Losarchivos de control permanecen abiertos después de que se haya cerrado una base de datos.

1.3.2.4 Cómo se cierra una base de datos durante un apagado anormal

Si se realiza un SHIUTDOWN ABORT u ocurre una terminación anormal, la instancia de una basede datos abierta se cierra y se apaga la base de datos instantáneamente. Oracle Database noescribe los datos de los buffers de la SGA en los archivos de datos y los archivos de redo log. Lassiguientes operaciones que intenten abrir de nuevo la base de datos requerirán la recuperación dela instancia, que Oracle Database realizará automáticamente.

1.3.2.5 Cómo se desmonta una base de datos

Después de que se haya cerrado una base de datos, Oracle Database desmonta la base de datospara desvincularla de la instancia. Después de que se haya desmontado una base de datos,Oracle Database cierra los archivos de control de la base de datos. En este punto, la instanciapermanece en memoria.

1.3.2.6 Cómo se apaga una instancia

El paso final en el apagado de la base de datos, es el apagado de la instancia. Cuando la instanciade la base de datos se apaga, la SGA se elimina de la memoria y se terminan los procesos ensegundo plano.

Bajo circunstancias inusuales, podría ocurrir que el apagado de una instancia no se realizase deforma limpia. Las estructuras de memoria podrían no ser eliminadas de la memoria o uno de losprocesos en segundo plano podría no haber terminado. Cuando existan restos de una instanciaanterior, podría fallar el arranque de una nueva instancia. En estas situaciones, se puede forzarla eliminación de los restos de la instancia anterior y lanzar la nueva instancia, o invocando elcomando SHUTDOWN ABORT en SQL*Plus.

Page 11: Arquitectura Oracle Database I

Nº ES026288

1.4 Puntos de control (Checkpoints)

Un punto de control (checkpoint) es un mecanismo crucial en los apagados consistentes de unabase de datos, en la recuperación de instancias, y generalmente, en operaciones de OracleDatabase. El término checkpoint tiene que ver con los siguientes aspectos:

Una estructura de datos que indica la posición del checkpoint, que es el SCN (SystemChange Number, indica un punto lógico en el tiempo en el cual se hicieron cambios en labase de datos) en el flujo redo en el que debe comenzar una recuperación de la instancia.

La posición del checkpoint viene determinada por el buffer sucio más antiguo en la cachédel buffer de la base de datos. La posición del checkpoint actúa como puntero al flujo deredo y se almacena en los archivos de control y en cada cabecera de los archivos de datos.

La escritura de los buffers modificados de la base de datos en el disco.

1.4.1 Función de los Checkpoints

Oracle Database utiliza los puntos de control para conseguir los siguientes objetivos:

Reducir el tiempo de recuperación requerido en caso de que falle una instancia. Asegurar que, de manera regular, se escriban los buffers sucios de la caché del buffer al

disco. Asegurar que se escriban todos los datos aceptados (COMMIT) al disco durante un

apagado consistente.

1.4.2 Cuándo inicia Oracle Database un checkpoint

El proceso checkpoint (CKPT) es el responsable de escribir los puntos de control en las cabecerasde los archivos de datos y en los archivos de control. Los puntos de control pueden presentarse envarias situaciones. Por ejemplo; Oracle Database usa los siguientes tipos de checkpoint:

Checkpoints de Hilo.

Los puntos de control de hilo pueden darse en las siguientes situaciones:

o Apagado consistente de la base de datos.o Sentencia ALTER SYSTEM CHECKPOINT.o Intercambio del redo log online.o Sentencia ALTER DATABASE BEGIN BACKUP.

Checkpoints de espacio de tablas y archivo de datos.

Un checkpoint de espacio de tablas es un conjunto de checkpoints de archivos de datos,uno por cada archivo en el espacio de tablas. Estos checkpoints pueden presentarse envariedad de situaciones, incluyendo la creación de un espacio de tablas de sólo lectura,disminuir el tamaño de un archivo de datos o ejecutar la sentencia ALTER TABLESPACEBEGIN BACKUP.

Checkpoints incrementales

Page 12: Arquitectura Oracle Database I

Nº ES026288

Un checkpoint incremental es un tipo de checkpoint de hilo ideado para evitar la escrituramasiva de bloques en un intercambio de redo log online. DBWn comprueba al menos unavez cada tres segundos si tiene trabajo pendiente. Cuando DBWn escribe los bufferssucios, avanza la posición del checkpoint, haciendo que CKPT escribe la posición delcheckpoint en el archivo de control, pero no en las cabeceras de los archivos de datos.

Otros tipos de checkpoints son los que incluyen la recuperación de una instancia y los que sepresentan cuando se elimina o se trunca algún objeto de un esquema.

1.5 Recuperación de una instancia

La recuperación de una instancia es el proceso de aplicar los registros en el redo log online a losarchivos de datos con el fin d reconstruir los cambios realizados después del punto de controlmás reciente. La recuperación de la instancia se lleva a cabo automáticamente cuando unadministrador intenta abrir una base de datos que fue previamente apagada de formainconsistente.

1.5.1 Finalidad de la recuperación de una instancia

La recuperación de una instancia asegura que la base de datos esté en un estado consistentedespués de un fallo en la instancia. Los archivos de una base de datos podrían haber quedado enun estado inconsistente debido a cómo Oracle Database gestiona los cambios en la base de datos.

Un hilo redo (redo thread) es un registro que almacena todos los cambios generados por unainstancia. Una base de datos de una única instancia tiene un solo hilo redo, mientras que unabase de datos Oracle RAC tiene tantos hilos redo como instancias asociadas a la base de datos.

Cuando una transacción se acepta, el proceso LGWR escribe en el redo log online, tanto lasentradas de redo que faltan como el SCN de la transacción. Sin embargo, el proceso DBWnescribe los datos modificados en los archivos de datos cuando resulte más eficiente. Por estarazón, en un momento dado, los cambios aceptados podrían no encontrarse en los archivos dedatos.

Si una instancia de una base de datos abierta falla, bien debido a una sentencia SHUTDONWABORT o a una finalización abrupta o anormal, se podrían presentar las siguientes situaciones:

Los bloques de datos aceptados por una transacción no se hayan escrito en los archivos dedatos y aparezcan sólo en el redo log online. Estos cambios deben ser aplicados de nuevoen la base de datos.

Los archivos de datos contienen cambios que habían sido aceptados cuando la base dedatos falló. Estos cambios deben ser retrocedidos (rollback) para asegurar la consistenciatransaccional.

La recuperación de una instancia utiliza sólo los archivos de redo log online y los archivos dedatos online actuales para sincronizar los archivos de datos y asegurar que queden en estadoconsistente.

1.5.2 Cuándo Oracle Database realiza la recuperación de una instancia

Se requiere la recuperación de la instancia dependiendo del estado de los hilos redo. Se marca unhilo redo como abierto en el archivo de control cuando se abre una instancia de la base de datos

Page 13: Arquitectura Oracle Database I

Nº ES026288

en modo lectura/escritura; y se marca como cerrado cuando la instancia se apagaconsistentemente. Si los hilos redo están marcados como abiertos en el archivo de control, perono existe una instancia viva que los mantenga, entonces la base de datos requiere unarecuperación de la instancia.

Oracle Database realiza la recuperación de una instancia automáticamente bajo las siguientescondiciones:

La base de datos se abre por primera vez desde el último fallo en una base de datos de unaúnica instancia o de todas las instancias de una base de datos Oracle RAC. Esta forma derecuperación también se le denomina crash recovery. Oracle Database recupera los hilosredo de las instancias terminadas de manera conjunta.

Algunas (pero no todas) de las instancias de una base de datos Oracle RAC falla.

El proceso SMON realiza la recuperación de la instancia, aplicando el redo log onlineautomáticamente. No se requiere la intervención del usuario.

1.5.3 Importancia de los checkpoints en la recuperación

La recuperación de una instancia utiliza los checkpoints para determinar qué cambios debenaplicarse a los archivos de datos. La posición del checkpoint garantiza que todos los cambiosaceptados con un SCN menor que el SCN del checkpoint estén salvaguardados en los archivos dedatos.

Durante la recuperación de una instancia, la base de datos debe aplicar los cambios que ocurrenentre la posición del checkpoint y el final del hilo redo. Como se muestra en la figura anterior,algunos cambios podrían haber sido ya escritos en los archivos de datos. Sin embargo, sólo estángarantizados los cambios con SCNs menores que la posición del checkpoint.

1.5.4 Fases en la recuperación de una instancia

La primera fase de la recuperación de una instancia se denomina recuperación de la caché orollforward, e implica reaplicar todos los cambios registrados en el redo log online sobre losarchivos de datos. Debido a que los datos de rollback se guardan en los redo log online, elrollforward también regenera los correspondientes segmentos de deshacer.

Page 14: Arquitectura Oracle Database I

Nº ES026288

El rollforward se realiza a través de todos los ficheros redo log online que sean necesarios parallevar a la base de datos hacia adelante en el tiempo. Después del rollforward, los bloques de labase de datos contienen todos os cambios aceptados que se registraron en los ficheros redo log.Estos ficheros podrían también contener cambios no aceptados que podrían estar salvados tantoen los archivos de datos antes del fallo, o almacenados en el redo log online e introducidosdurante la recuperación de la caché.

Tras el rollforward, se deben deshacer todos los cambios que no se aceptaron. Oracle Databaseutiliza la posición del checkpoint, que garantiza que cada cambio aceptado con un SCN menorque el SCN del checkpoint estará guardado en disco. Oracle Database aplica los bloques dedeshacer a los cambios no aceptados en los bloques de datos que fueron escritos antes del fallo ointroducidos durante la recuperación de la caché. Esta fase se denomina rollback o recuperaciónde la transacción.

Oracle Database puede hacer el rollback de varias transacciones simultáneamente conforme senecesite. Todas las transacciones que estaban activas en el momento del fallo se marcan comoterminadas. En lugar de esperar a que el proceso SMON realice el rollback de las transaccionesterminadas, las transacciones nuevas pueden hacer rollback sobre bloques individuales paraobtener los datos requeridos.

1.6 Archivos de parámetros

Para iniciar una instancia de la base de datos, Oracle Database debe leer bien un archivo deparámetros del servidor (que es recomendado), o un archivo de texto con los parámetros deinicialización. Estos ficheros contienen una lista de los parámetros de configuración.

Para crear una base de datos manualmente, se debe iniciar una instancia con un archivo deparámetros y a continuación lanzar la sentencia CREATE DATABASE.

Page 15: Arquitectura Oracle Database I

Nº ES026288

1.6.1 Parámetros de inicialización

Los parámetros de inicialización son parámetros de configuración que afectan al funcionamientobásico de una instancia. La instancia lee los parámetros de inicialización desde un fichero alcomienzo.

Oracle Database proporciona muchos parámetros de inicialización para optimizar sufuncionamiento en diversos entornos. Sólo se deben declarar explícitamente unos pocos de ellos,ya que el valor por defecto suele ser adecuado en muchos casos.

1.6.1.1 Parámetros de inicialización de grupos funcionales

La mayor parte de los parámetros de inicialización pertenecen a uno de los siguientes gruposfuncionales:

Parámetros que referencia a entidades , como archivos o directorios Parámetros que asignan un límite para un proceso, recurso de la base de datos, o para la

base de datos en sí misma Parámetros que afectan a la capacidad, como el tamaño de la SGA (estos parámetros

también se denominan parámetros variables).

Los parámetros variables son de particular interés para los DBA ya que se pueden usar paramejorar el rendimiento de la base de datos.

1.6.1.2 Parámetros de inicialización básicos y avanzados

Los parámetros de inicialización se dividen en dos grupos: básicos y avanzados. En la mayoría delos casos, se pueden afinar sólo los 30 parámetros básicos aproximadamente para obtener unrendimiento razonable. El conjunto de parámetros básicos incluyen el nombre de la base dedatos, la ubicación de los archivos de control, el tamaño del bloque de la base de datos, lostablespaces de deshacer…

In raras ocasiones, podría requerirse la modificación de los parámetros avanzados para unrendimiento óptimo. Los parámetros avanzados permiten a los DBAs más expertos adaptar elcomportamiento de Oracle Database a un entorno único.

Oracle Database proporciona valores iniciales en el fichero de inicialización de parámetros. Esposible editar estos valores y añadir otros, dependiendo de la configuración y ajuste de la base dedatos. Cuando no se indica un valor para un parámetro de inicialización, Oracle Database asumeel valor por defecto.

1.6.1.3 Ficheros de parámetros del servidor

Un archivo de parámetros del servidor es un repositorio para los parámetros de inicialización quees gestionado por Oracle Database. Un archivo de parámetros del servidor tiene las siguientescaracterísticas:

Sólo puede existir un archivo de parámetros del servidor por base de datos. Este archivodebe residir en la máquina que actúe como servidor.

Oracle Database es el único que lee y escribe en el fichero de parámetros del servidor;nunca una aplicación cliente.

Page 16: Arquitectura Oracle Database I

Nº ES026288

El fichero de parámetros del servidor es binario y no puede ser modificado con un editorde textos.

Los parámetros de inicialización almacenados en el archivo de parámetros del servidor sonpersistentes. Cualquier cambio realizado en los parámetros durante el funcionamiento deuna instancia puede persistir más allá del apagado e inicio de la instancia.

Un archivo de parámetros del servidor elimina la necesidad de mantener múltiples archivos detexto de parámetros de inicialización para las aplicaciones cliente. Se crea inicialmente un archivode parámetros del servidor desde un archivo de texto de parámetros de inicialización usando lasentencia CREATE SPFILE. También puede crearse directamente a través del Asistente deConfiguración de la Base de Datos.

1.6.1.4 Ficheros de texto de parámetros de inicialización.

Un archivo de texto de parámetros de inicialización contiene una lista de parámetros deinicialización. Este tipo de archivo de parámetros tiene las siguientes características:

Cuando se arranca o se para una base de datos, el archivo de texto de parámetros deinicialización debe residir en la misma máquina que la aplicación cliente que conectacontra la base de datos.

Un archivo de texto de parámetros de inicialización contiene texto plano, no binario. Oracle Database puede leer pero no escribir de un archivo de texto de parámetros de

inicialización. Para cambiar los valores de los parámetros, se debe hacer manualmente,modificando el archivo con un editor de texto.

Los cambios que se realicen en los valores de los parámetros de inicialización medianteALTER SYSTEM sólo tienen efecto para la instancia actual. Se puede actualizarmanualmente el archivo de texto de parámetros de inicialización y reiniciar la instanciapara que los cambios se apliquen.

El archivo de texto de parámetros de inicialización contiene una serie de pares atributo=valor, unopor línea. Por ejemplo, una parte del archivo de parámetros de inicialización podría ser elsiguiente:

db_name=samplecontrol_files=/disk1/oradata/sample_cf.dbfdb_block_size=8192open_cursors=52undo_management=autoshared_pool_size=280Mpga_aggregate_target=29M

Para ilustrar los problemas de gestión que los archivos de texto de parámetros de inicializaciónpodrían crear, supóngase que se están utilizando los ordenadores ClientA y ClientB, y se debepoder iniciar la base de datos con SQL*Plus en cualquiera de las dos máquinas. En este caso,deberían existir dos archivos de texto de parámetros de inicialización, uno en cada ordenador,como muestra la siguiente figura. Un archivo de parámetros del servidor solucionaría el problemade la proliferación de los archivos de parámetros.

Page 17: Arquitectura Oracle Database I

Nº ES026288

1.6.1.5 Modificación de los valores de los parámetros de inicialización.

Es posible ajustar los parámetros de inicialización con el fin de modificar el comportamiento de labase de datos. La clasificación de los parámetros como estáticos o dinámicos determina cómo sepueden modificar. Las características de cada clase de parámetros ellos son:

Característica Estático Dinámico

Requiere la modificación del archivo de parámetros (de texto o del servidor) Sí No

Requiere un reinicio de la instancia de la base de datos antes de que tengaefecto

Sí No

Descrito como “Modificable” en los parámetros de inicialización de OracleDatabase Reference

No Sí

Modificable únicamente por la base de datos o instancia Sí No

Los parámetros estáticos incluyen DB_BLOCK_SIZE, DB_NAME, y COMPATIBLE. Los parámetrosdinámicos se agrupan en parámetros a nivel de sesión, que afectan sólo a la sesión de usuarioactual; y parámetros a nivel de sistema, que afectan a la base de datos y a todas las sesiones. Porejemplo, MEMORY_TARGET es un parámetro a nivel de sistema, mientras queNLS_DATE_FORMAT es un parámetro a nivel de sesión.

El alcance de un cambio en un parámetro depende de cuándo tenga efecto el cambio. Cuando unainstancia se ha iniciado con un archivo de parámetros del servidor, se puede utilizar la sentenciaALTER SYSTEM SET para cambiar los valores en los parámetros a nivel de sistema, tal y comosigue:

SCOPE=MEMORY

Page 18: Arquitectura Oracle Database I

Nº ES026288

Los cambios se aplican únicamente a la instancia de la base de datos. El cambio nopersistirá si se cierra la base de datos y se reinicia.

SCOPE=SPFILE

Los cambios se escriben en el archivo de parámetros del servidor pero no afectan a lainstancia actual. De esta forma, los cambios no tendrán lugar hasta que se reinicie lainstancia.

Nota:

Se debe especificar SPFILE cuando se cambia el valor de un parámetro descrito como Nomodificable en Oracle Database Reference.

SCOPE=BOTH

Los cambios se escriben tanto en la memoria como en el archivo de parámetros delservidor. Este es el alcance por defecto cuando la base de datos está utilizando un archivode parámetros del servidor.