You are on page 1of 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 parmetros y los
archivos de diagnstico asociados con una instancia, y qu ocurre durante la creacin de la
instancia y la apertura y cierra de la base de datos.
1.1 Introduccin 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 fsicos 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 ejecucin 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 ms 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 ledos 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 ejecucin de SQL.
La SGA se comparte por los procesos Oracle, que incluyen procesos servidores y procesos
background que se ejecutan en una nica mquina. La forma en la que los procesos Oracle se
asocian con la SGA vara en funcin del sistema operativo.
Una instancia de la base de datos incluye procesos background. Los procesos servidores, y la
memoria asignada a los procesos, tambin se encuentra en la instancia. La instancia sigue
funcionando cuando los procesos servidores terminan.
N ES026288
1.2 Configuraciones de la instancia de la base de datos
Oracle Database puede ejecutarse en cualquiera de las siguientes configuraciones mutuamente
excluyentes:
Configuracin de nica instancia.
Existe una correspondencia de uno-a-uno entre la base de datos y la instancia.
Configuracin de Oracle Real Application Clusters (Oracle RAC)
Existe una correspondencia de uno-a-muchos entre la base de datos y las instancias.
N ES026288
Tanto en el modelo de instancia nica como en modelo de Oracle RAC, la base de datos slo
puede 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 simultneamente
con la misma instancia.
Se pueden ejecutar mltiples instancias concurrentemente en el mismo ordenador, cada una
accediendo a su propia base de datos. Por ejemplo, un ordenador puede albergar dos bases de
datos distintas: prod1 y prod2. Una instancia de la base de datos administra prod1, mientras que
otra instancia diferente administra prod2.
1.2.1 Duracin de una instancia.
Una instancia comienza cuando se crea con la orden STARTUP y concluye cuando se termina.
Durante este perodo de tiempo, una instancia puede asociarse con una y slo una base de datos.
Adems, la instancia puede montar una sola base de datos a la vez, cerrarla una sola vez y abrirla
una sola vez. Despus de que una base de datos ha sido cerrada o bajada, se puede iniciar una
instancia 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 una
base de datos que fue previamente cerrada:
Sentencia Explicacin
SQL> STARTUP
ORACLE instance started.
Total System Global Area 468729856 bytes
Fixed Size 1333556 bytes
Variable Size 440403660 bytes
Database Buffers 16777216 bytes
Redo Buffers 10215424 bytes
Database mounted.
Database opened.
El comando STARTUP crea una instancia,
que monta y abre la base de datos.
N ES026288
Sentencia Explicacin
SQL> SELECT
TO_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 la
instancia actual se inici.
SQL> ALTER DATABASE CLOSE;
Database altered.
La instancia cierra la base de datos,
dejndola en estado mount. La instancia
puede leer y escribir de los archivos de
control, pero no en los archivos de datos.
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-16196: database has been
previously opened and closed
La instancia intenta abrir de nuevo la base
de datos que fue previamente cerrada.
Oracle Database emite un error debido a
que la misma instancia no puede abrir una
base de datos dos veces.
SQL> SHUTDOWN IMMEDIATE
En esta fase, la nica opcin para la
instancia es hacer shutdown, terminando
la vida de esta instancia.
SQL> STARTUP
Oracle instance started.
. . .
El comando STARTUP crea una nueva
instancia y monta y abre la base de datos.
SQL> SELECT
TO_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 la
instancia actual fue iniciada. La hora de
inicio diferente muestra que esta instancia
es diferente de la que cerr la base de
datos.
1.2.3 Identificador de Sistema Oracle (SID)
El identificador de sistema (SID) es un nombre nico para una instancia de una base de datos
Oracle en un host especfico. En UNIX y Linux, Oracle Database utiliza el SID y el valor del
parmetro ORACLE_HOME para crear una clave en la memoria compartida. Asimismo, el SID se
utiliza por defecto para localizar el fichero de parmetros, que se usa para ubicar ficheros
importantes 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 a
la variable ORACLE_HOME se le asigna el directorio home de Oracle. Cuando los clientes se
conectan a una instancia, pueden especificar el SID en una conexin Oracle Net o utilizar un
nombre de un servicio de red. Oracle Database convierte el nombre de un servicio de red en un
ORACLE_SID y en un ORACLE_HOME.
N ES026288
1.3 Inicializacin y Cierre de la instancia
Una instancia de la base de datos proporciona al usuario acceso a la base de datos. Esta seccin
explica los posibles estados de la instancia y de la base de datos.
1.3.1 Inicializacin 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 y
abrir la base de datos, hacindola as disponible para los usuarios. Por ejemplo, se puede usar el
comando STARTUP desde SQL*Plus, Oracle Enterprise Manager, o la utilidad SRVCTL para
realizar estos pasos. La figura siguiente muestra cmo una base de datos progresa desde un
estado shutdown a un estado open.
Una base de datos atraviesa las siguientes fases, cuando pasa de un estado shutdown a un
estado de base de datos abierta:
1. La instancia se inici sin montar la base de datos.
La instancia se inici, pero an 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 de
control. 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 contenidos
en los archivos de datos estn accesibles a los usuarios autorizados.
N ES026288
1.3.1.1 Conexin con privilegios de administrador
La inicializacin (startup) y cierre (shutdown) de la base de datos son poderosas opciones
administrativas que estn restringidas a los usuarios que se conecten a Oracle Database con
privilegios de administrador. Los usuarios normales no tienen control sobre el estado actual de
una base de datos Oracle.
Dependiendo del sistema operativo, las siguientes condiciones establecen los privilegios de
administracin para un usuario dado:
Los privilegios del sistema operativo de ese usuario lo habilitan para conectarse a la base
de datos utilizando privilegios de administrador.
Se le otorga al usuario los privilegios de sistema SYSDBA o SYSOPER, y la base de datos
utiliza ficheros de contraseas para autenticar a los administradores de la base de datos
en la red.
SYSDBA y SYSOPER son privilegios de sistema especiales que habilitan el acceso a la instancia
de la base de datos incluso cuando la base de datos no est abierta. El control de estos privilegios
est fuera de la misma base de datos. Cuando se conecta con privilegios de sistema SYSDBA, el
usuario est en el esquema cuyo propietario es SYS. Cuando se conecta como SYSOPER, el
usuario est en el esquema pblico. Los privilegios SYSOPER son un subconjunto de los
privilegios SYSDBA.
1.3.1.2 Cmo se inicia una instancia
Cuando Oracle Database inicia una instancia, realiza los siguientes pasos bsicos:
1. Busca un fichero de parmetros de servidor en una localizacin especfica (que vara en
funcin de la plataforma), si no lo encuentra, busca un fichero de texto de parmetros de
inicializacin (SPFILE, PFILE)
2. Lee el archivo de parmetros para determinar los valores de los parmetros de
inicializacin.
3. Asigna la SGA basada en los parmetros de inicializacin.
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 parmetros explcitos en el log de alerta con una sintaxis de parmetro
vlida.
En este momento, no se ha asociado ninguna base de datos con la instancia. Los escenarios que
requieren un estado NOMOUNT incluyen la creacin de la base de datos y ciertas operaciones de
copia de seguridad y recuperacin.
1.3.1.3 Cmo se monta una Base de datos
La instancia monta una base de datos para asociarla con ella misma. Para montar la base de
datos, la instancia obtiene los nombres de los ficheros de control de la base de datos,
especificados en el parmetro de inicializacin CONTROL_FILES, y abre los ficheros. Oracle
Database lee los ficheros de control para encontrar los nombres de los ficheros de datos y de los
ficheros de redo log online, a los cuales intentar acceder cuando se abra la base de datos.
N ES026288
En una base de datos montada, la base de datos est cerrada y accesible slo a los
administradores de la base de datos. Los administradores pueden mantener la base de datos
cerrada mientras realizan operaciones de mantenimiento especficas. Sin embargo, la base de
datos no estar disponible para operaciones normales.
Si se desea que Oracle Database permita que se puedan montar mltiples instancias sobre la
misma base de datos concurrentemente, entonces se debe inicializar el parmetro
CLUSTER_DATABASE al valor adecuado. El comportamiento de la base de datos depende de esta
asignacin:
Si CLUSTER_DATABASE es FALSE (por defecto) para la primera instancia que monta una
base de datos, entonces slo esta instancia puede montar la base de datos.
Si CLUSTER_DATABASE es TRUE para la primera instancia, entonces las instancias
restantes pueden montar la base de datos si sus parmetros de inicializacin
CLUSTER_DATABASE se han establecido a TRUE. El nmero de instancias que pueden
montar la base de datos est sujeto a un mximo predeterminado especificado cuando se
crea la base de datos.
1.3.1.4 Cmo se abre una base de datos
La apertura de una base de datos montada la hace disponible para operaciones normales.
Cualquier usuario vlido puede conectar a una base de datos abierta y acceder a su informacin.
Normalmente, un administrador de la base de datos abre la base de datos para hacerla accesible
para 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 sus
correspondientes archivos de datos estarn offline cuando la base de datos se abra de
nuevo.
Adquiere un tablespace de deshacer (undo tablespace).
Si existen varios tablespaces de deshacer, el parmetro de inicializacin
UNDO_TABLESPACE designa el tablespace de deshacer a utilizar. Si este parmetro no se
inicializa, se toma el primer tablespace de deshacer disponible.
Abre los ficheros de Redo Log online.
1.3.1.5 Modo Slo Lectura
Por defecto, la base de datos se abre en modo lectura/escritura. De este modo, los usuarios
pueden hacer cambios en los datos, generar informacin de redo en el log redo online.
Alternativamente, se puede abrir en modo slo lectura, para prevenir la modificacin de datos
debida a las transacciones de los usuarios.
El modo slo lectura restringe el acceso a la base de datos a transacciones de slo lectura, que no
pueden escribir en los archivos de datos ni en los archivos de redo log online. Sin embargo, la
N ES026288
base de datos puede realizar recuperaciones u operaciones que cambien el estado de la base de
datos sin generar informacin de redo.
1.3.2 Cierre de la base de datos y de la instancia (Shutdown)
En un caso tpico de uso, se puede cerrar manualmente la base de datos, haciendo que deje de
estar disponible para los usuarios, mientras se realizan tareas de mantenimiento u otras tareas
administrativas. Se puede usar el comando SHUTDOWN de SQL*Plus o Enterprise Manager para
realizar estos pasos. La figura siguiente muestra la progresin de un estado abierto a un estado
de cierre consistente.
Oracle Database realiza automticamente los siguientes pasos cuando una base de datos se cierra
consistentemente:
1. Cierre de la base de datos.
La base de datos est montada, pero los archivos de datos online y los archivos de redo log
estn cerrados.
2. Desmontaje de la base de datos.
La instancia est iniciada, pero ya no se encuentra asociada con el archivo de control de la
base 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 un
SHUTDOWN ABORT, que provoca la terminacin inmediata de la instancia.
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 de
datos utilizando el comando SHUTDOWN o Enterprise Manager. El comando SHUTDOWN tiene
opciones para determinar el comportamiento del cierre. La tabla siguiente resume el
comportamiento 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 sesiones
actuales
No No No S
Espera hasta que finalicen las transacciones
actuales
No No S S
Realiza un checkpoint y cierra los ficheros
abiertos
No S S S
Las posibles sentencias SHUTDONW son:
SHUTDOWN ABORT
Este modo est pensado para situaciones de emergencia, es decir, cuando no se pueda
cerrar de otra forma. Este modo de cierre es el ms rpido. Sin embargo, una apertura
subsiguiente de la base de datos puede durar ms tiempo debido a que se debe realizar la
recuperacin de la instancia para hacer que los archivos de datos queden consistentes.
SHUTDOWN IMMEDIATE
Este modo es habitualmente el ms rpido despus del SHUTDOWN ABORT. Oracle
Database termina cualquier sentencia SQL que estuviese ejecutndose y desconecta a los
usuarios. Se terminan las transacciones activas y los cambios que no tuvieron aceptacin
(commit) se revocan (rollback).
SHUTDOWN TRANSACTIONAL
Este modo previene que los usuarios lancen nuevas transacciones, pero espera a que las
transacciones actuales concluyan antes de completar el cierre. Este modo puede suponer
una cantidad de tiempo significativa, dependiendo de la naturaleza de las transacciones
actuales.
SHUTDOWN NORMAL
Este es el modo por defecto de cierre. La base de datos espera a que todos los usuarios se
desconecten antes del cierre.
N ES026288
1.3.2.2 Cmo se cierra una base de datos
La operacin de cierre de la base de datos viene implcita con el apagado de la base de datos. La
naturaleza de la operacin donde de si el apagado de la base de datos es normal o anormal.
1.3.2.3 Cmo 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 opcin
distinta de ABORT, Oracle Database escribe los datos de la SGA en los ficheros de datos y en los
archivos de redo log online. A continuacin, la base de datos cierra los archivos de datos online y
los archivos de redo log. Cuando la base de datos se vuelve a abrir, los tablespaces que estaban
offline, continan estando offline.
En este momento, la base de datos est cerrada e inaccesible para operaciones normales. Los
archivos de control permanecen abiertos despus de que se haya cerrado una base de datos.
1.3.2.4 Cmo se cierra una base de datos durante un apagado anormal
Si se realiza un SHIUTDOWN ABORT u ocurre una terminacin anormal, la instancia de una base
de datos abierta se cierra y se apaga la base de datos instantneamente. Oracle Database no
escribe los datos de los buffers de la SGA en los archivos de datos y los archivos de redo log. Las
siguientes operaciones que intenten abrir de nuevo la base de datos requerirn la recuperacin de
la instancia, que Oracle Database realizar automticamente.
1.3.2.5 Cmo se desmonta una base de datos
Despus de que se haya cerrado una base de datos, Oracle Database desmonta la base de datos
para desvincularla de la instancia. Despus 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 instancia
permanece en memoria.
1.3.2.6 Cmo se apaga una instancia
El paso final en el apagado de la base de datos, es el apagado de la instancia. Cuando la instancia
de la base de datos se apaga, la SGA se elimina de la memoria y se terminan los procesos en
segundo plano.
Bajo circunstancias inusuales, podra ocurrir que el apagado de una instancia no se realizase de
forma limpia. Las estructuras de memoria podran no ser eliminadas de la memoria o uno de los
procesos en segundo plano podra no haber terminado. Cuando existan restos de una instancia
anterior, podra fallar el arranque de una nueva instancia. En estas situaciones, se puede forzar
la eliminacin de los restos de la instancia anterior y lanzar la nueva instancia, o invocando el
comando SHUTDOWN ABORT en SQL*Plus.
N ES026288
1.4 Puntos de control (Checkpoints)
Un punto de control (checkpoint) es un mecanismo crucial en los apagados consistentes de una
base de datos, en la recuperacin de instancias, y generalmente, en operaciones de Oracle
Database. El trmino checkpoint tiene que ver con los siguientes aspectos:
Una estructura de datos que indica la posicin del checkpoint, que es el SCN (System
Change Number, indica un punto lgico en el tiempo en el cual se hicieron cambios en la
base de datos) en el flujo redo en el que debe comenzar una recuperacin de la instancia.
La posicin del checkpoint viene determinada por el buffer sucio ms antiguo en la cach
del buffer de la base de datos. La posicin del checkpoint acta como puntero al flujo de
redo 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 Funcin de los Checkpoints
Oracle Database utiliza los puntos de control para conseguir los siguientes objetivos:
Reducir el tiempo de recuperacin 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 Cundo inicia Oracle Database un checkpoint
El proceso checkpoint (CKPT) es el responsable de escribir los puntos de control en las cabeceras
de los archivos de datos y en los archivos de control. Los puntos de control pueden presentarse en
varias 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 en
variedad de situaciones, incluyendo la creacin de un espacio de tablas de slo lectura,
disminuir el tamao de un archivo de datos o ejecutar la sentencia ALTER TABLESPACE
BEGIN BACKUP.
Checkpoints incrementales
N ES026288
Un checkpoint incremental es un tipo de checkpoint de hilo ideado para evitar la escritura
masiva de bloques en un intercambio de redo log online. DBWn comprueba al menos una
vez cada tres segundos si tiene trabajo pendiente. Cuando DBWn escribe los buffers
sucios, avanza la posicin del checkpoint, haciendo que CKPT escribe la posicin del
checkpoint en el archivo de control, pero no en las cabeceras de los archivos de datos.
Otros tipos de checkpoints son los que incluyen la recuperacin de una instancia y los que se
presentan cuando se elimina o se trunca algn objeto de un esquema.
1.5 Recuperacin de una instancia
La recuperacin de una instancia es el proceso de aplicar los registros en el redo log online a los
archivos de datos con el fin d reconstruir los cambios realizados despus del punto de control
ms reciente. La recuperacin de la instancia se lleva a cabo automticamente cuando un
administrador intenta abrir una base de datos que fue previamente apagada de forma
inconsistente.
1.5.1 Finalidad de la recuperacin de una instancia
La recuperacin de una instancia asegura que la base de datos est en un estado consistente
despus de un fallo en la instancia. Los archivos de una base de datos podran haber quedado en
un estado inconsistente debido a cmo 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 una
instancia. Una base de datos de una nica instancia tiene un solo hilo redo, mientras que una
base de datos Oracle RAC tiene tantos hilos redo como instancias asociadas a la base de datos.
Cuando una transaccin se acepta, el proceso LGWR escribe en el redo log online, tanto las
entradas de redo que faltan como el SCN de la transaccin. Sin embargo, el proceso DBWn
escribe los datos modificados en los archivos de datos cuando resulte ms eficiente. Por esta
razn, en un momento dado, los cambios aceptados podran no encontrarse en los archivos de
datos.
Si una instancia de una base de datos abierta falla, bien debido a una sentencia SHUTDONW
ABORT o a una finalizacin abrupta o anormal, se podran presentar las siguientes situaciones:
Los bloques de datos aceptados por una transaccin no se hayan escrito en los archivos de
datos y aparezcan slo en el redo log online. Estos cambios deben ser aplicados de nuevo
en la base de datos.
Los archivos de datos contienen cambios que haban sido aceptados cuando la base de
datos fall. Estos cambios deben ser retrocedidos (rollback) para asegurar la consistencia
transaccional.
La recuperacin de una instancia utiliza slo los archivos de redo log online y los archivos de
datos online actuales para sincronizar los archivos de datos y asegurar que queden en estado
consistente.
1.5.2 Cundo Oracle Database realiza la recuperacin de una instancia
Se requiere la recuperacin de la instancia dependiendo del estado de los hilos redo. Se marca un
hilo redo como abierto en el archivo de control cuando se abre una instancia de la base de datos
N ES026288
en modo lectura/escritura; y se marca como cerrado cuando la instancia se apaga
consistentemente. Si los hilos redo estn marcados como abiertos en el archivo de control, pero
no existe una instancia viva que los mantenga, entonces la base de datos requiere una
recuperacin de la instancia.
Oracle Database realiza la recuperacin de una instancia automticamente bajo las siguientes
condiciones:
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 de
recuperacin tambin se le denomina crash recovery. Oracle Database recupera los hilos
redo 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 recuperacin de la instancia, aplicando el redo log online
automticamente. No se requiere la intervencin del usuario.
1.5.3 Importancia de los checkpoints en la recuperacin
La recuperacin de una instancia utiliza los checkpoints para determinar qu cambios deben
aplicarse a los archivos de datos. La posicin del checkpoint garantiza que todos los cambios
aceptados con un SCN menor que el SCN del checkpoint estn salvaguardados en los archivos de
datos.
Durante la recuperacin de una instancia, la base de datos debe aplicar los cambios que ocurren
entre la posicin del checkpoint y el final del hilo redo. Como se muestra en la figura anterior,
algunos cambios podran haber sido ya escritos en los archivos de datos. Sin embargo, slo estn
garantizados los cambios con SCNs menores que la posicin del checkpoint.
1.5.4 Fases en la recuperacin de una instancia
La primera fase de la recuperacin de una instancia se denomina recuperacin de la cach o
rollforward, e implica reaplicar todos los cambios registrados en el redo log online sobre los
archivos de datos. Debido a que los datos de rollback se guardan en los redo log online, el
rollforward tambin regenera los correspondientes segmentos de deshacer.
N ES026288
El rollforward se realiza a travs de todos los ficheros redo log online que sean necesarios para
llevar a la base de datos hacia adelante en el tiempo. Despus del rollforward, los bloques de la
base de datos contienen todos os cambios aceptados que se registraron en los ficheros redo log.
Estos ficheros podran tambin contener cambios no aceptados que podran estar salvados tanto
en los archivos de datos antes del fallo, o almacenados en el redo log online e introducidos
durante la recuperacin de la cach.
Tras el rollforward, se deben deshacer todos los cambios que no se aceptaron. Oracle Database
utiliza la posicin del checkpoint, que garantiza que cada cambio aceptado con un SCN menor
que el SCN del checkpoint estar guardado en disco. Oracle Database aplica los bloques de
deshacer a los cambios no aceptados en los bloques de datos que fueron escritos antes del fallo o
introducidos durante la recuperacin de la cach. Esta fase se denomina rollback o recuperacin
de la transaccin.
Oracle Database puede hacer el rollback de varias transacciones simultneamente conforme se
necesite. Todas las transacciones que estaban activas en el momento del fallo se marcan como
terminadas. En lugar de esperar a que el proceso SMON realice el rollback de las transacciones
terminadas, las transacciones nuevas pueden hacer rollback sobre bloques individuales para
obtener los datos requeridos.
1.6 Archivos de parmetros
Para iniciar una instancia de la base de datos, Oracle Database debe leer bien un archivo de
parmetros del servidor (que es recomendado), o un archivo de texto con los parmetros de
inicializacin. Estos ficheros contienen una lista de los parmetros de configuracin.
Para crear una base de datos manualmente, se debe iniciar una instancia con un archivo de
parmetros y a continuacin lanzar la sentencia CREATE DATABASE.
N ES026288
1.6.1 Parmetros de inicializacin
Los parmetros de inicializacin son parmetros de configuracin que afectan al funcionamiento
bsico de una instancia. La instancia lee los parmetros de inicializacin desde un fichero al
comienzo.
Oracle Database proporciona muchos parmetros de inicializacin para optimizar su
funcionamiento en diversos entornos. Slo se deben declarar explcitamente unos pocos de ellos,
ya que el valor por defecto suele ser adecuado en muchos casos.
1.6.1.1 Parmetros de inicializacin de grupos funcionales
La mayor parte de los parmetros de inicializacin pertenecen a uno de los siguientes grupos
funcionales:
Parmetros que referencia a entidades , como archivos o directorios
Parmetros que asignan un lmite para un proceso, recurso de la base de datos, o para la
base de datos en s misma
Parmetros que afectan a la capacidad, como el tamao de la SGA (estos parmetros
tambin se denominan parmetros variables).
Los parmetros variables son de particular inters para los DBA ya que se pueden usar para
mejorar el rendimiento de la base de datos.
1.6.1.2 Parmetros de inicializacin bsicos y avanzados
Los parmetros de inicializacin se dividen en dos grupos: bsicos y avanzados. En la mayora de
los casos, se pueden afinar slo los 30 parmetros bsicos aproximadamente para obtener un
rendimiento razonable. El conjunto de parmetros bsicos incluyen el nombre de la base de
datos, la ubicacin de los archivos de control, el tamao del bloque de la base de datos, los
tablespaces de deshacer
In raras ocasiones, podra requerirse la modificacin de los parmetros avanzados para un
rendimiento ptimo. Los parmetros avanzados permiten a los DBAs ms expertos adaptar el
comportamiento de Oracle Database a un entorno nico.
Oracle Database proporciona valores iniciales en el fichero de inicializacin de parmetros. Es
posible editar estos valores y aadir otros, dependiendo de la configuracin y ajuste de la base de
datos. Cuando no se indica un valor para un parmetro de inicializacin, Oracle Database asume
el valor por defecto.
1.6.1.3 Ficheros de parmetros del servidor
Un archivo de parmetros del servidor es un repositorio para los parmetros de inicializacin que
es gestionado por Oracle Database. Un archivo de parmetros del servidor tiene las siguientes
caractersticas:
Slo puede existir un archivo de parmetros del servidor por base de datos. Este archivo
debe residir en la mquina que acte como servidor.
Oracle Database es el nico que lee y escribe en el fichero de parmetros del servidor;
nunca una aplicacin cliente.
N ES026288
El fichero de parmetros del servidor es binario y no puede ser modificado con un editor
de textos.
Los parmetros de inicializacin almacenados en el archivo de parmetros del servidor son
persistentes. Cualquier cambio realizado en los parmetros durante el funcionamiento de
una instancia puede persistir ms all del apagado e inicio de la instancia.
Un archivo de parmetros del servidor elimina la necesidad de mantener mltiples archivos de
texto de parmetros de inicializacin para las aplicaciones cliente. Se crea inicialmente un archivo
de parmetros del servidor desde un archivo de texto de parmetros de inicializacin usando la
sentencia CREATE SPFILE. Tambin puede crearse directamente a travs del Asistente de
Configuracin de la Base de Datos.
1.6.1.4 Ficheros de texto de parmetros de inicializacin.
Un archivo de texto de parmetros de inicializacin contiene una lista de parmetros de
inicializacin. Este tipo de archivo de parmetros tiene las siguientes caractersticas:
Cuando se arranca o se para una base de datos, el archivo de texto de parmetros de
inicializacin debe residir en la misma mquina que la aplicacin cliente que conecta
contra la base de datos.
Un archivo de texto de parmetros de inicializacin contiene texto plano, no binario.
Oracle Database puede leer pero no escribir de un archivo de texto de parmetros de
inicializacin. Para cambiar los valores de los parmetros, se debe hacer manualmente,
modificando el archivo con un editor de texto.
Los cambios que se realicen en los valores de los parmetros de inicializacin mediante
ALTER SYSTEM slo tienen efecto para la instancia actual. Se puede actualizar
manualmente el archivo de texto de parmetros de inicializacin y reiniciar la instancia
para que los cambios se apliquen.
El archivo de texto de parmetros de inicializacin contiene una serie de pares atributo=valor, uno
por lnea. Por ejemplo, una parte del archivo de parmetros de inicializacin podra ser el
siguiente:
db_name=sample
control_files=/disk1/oradata/sample_cf.dbf
db_block_size=8192
open_cursors=52
undo_management=auto
shared_pool_size=280M
pga_aggregate_target=29M
Para ilustrar los problemas de gestin que los archivos de texto de parmetros de inicializacin
podran crear, supngase que se estn utilizando los ordenadores ClientA y ClientB, y se debe
poder iniciar la base de datos con SQL*Plus en cualquiera de las dos mquinas. En este caso,
deberan existir dos archivos de texto de parmetros de inicializacin, uno en cada ordenador,
como muestra la siguiente figura. Un archivo de parmetros del servidor solucionara el problema
de la proliferacin de los archivos de parmetros.
N ES026288
1.6.1.5 Modificacin de los valores de los parmetros de inicializacin.
Es posible ajustar los parmetros de inicializacin con el fin de modificar el comportamiento de la
base de datos. La clasificacin de los parmetros como estticos o dinmicos determina cmo se
pueden modificar. Las caractersticas de cada clase de parmetros ellos son:
Caracterstica Esttico Dinmico
Requiere la modificacin del archivo de parmetros (de texto o del servidor) S No
Requiere un reinicio de la instancia de la base de datos antes de que tenga
efecto
S No
Descrito como Modificable en los parmetros de inicializacin de Oracle
Database Reference
No S
Modificable nicamente por la base de datos o instancia S No
Los parmetros estticos incluyen DB_BLOCK_SIZE, DB_NAME, y COMPATIBLE. Los parmetros
dinmicos se agrupan en parmetros a nivel de sesin, que afectan slo a la sesin de usuario
actual; y parmetros a nivel de sistema, que afectan a la base de datos y a todas las sesiones. Por
ejemplo, MEMORY_TARGET es un parmetro a nivel de sistema, mientras que
NLS_DATE_FORMAT es un parmetro a nivel de sesin.
El alcance de un cambio en un parmetro depende de cundo tenga efecto el cambio. Cuando una
instancia se ha iniciado con un archivo de parmetros del servidor, se puede utilizar la sentencia
ALTER SYSTEM SET para cambiar los valores en los parmetros a nivel de sistema, tal y como
sigue:
SCOPE=MEMORY
N ES026288
Los cambios se aplican nicamente a la instancia de la base de datos. El cambio no
persistir si se cierra la base de datos y se reinicia.
SCOPE=SPFILE
Los cambios se escriben en el archivo de parmetros del servidor pero no afectan a la
instancia actual. De esta forma, los cambios no tendrn lugar hasta que se reinicie la
instancia.
Nota:
Se debe especificar SPFILE cuando se cambia el valor de un parmetro descrito como No
modificable en Oracle Database Reference.
SCOPE=BOTH
Los cambios se escriben tanto en la memoria como en el archivo de parmetros del
servidor. Este es el alcance por defecto cuando la base de datos est utilizando un archivo
de parmetros del servidor.