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.