Instancia de Oracle AI Database

En este capítulo se explica la naturaleza de una instancia de base de datos Oracle, los archivos de parámetros y de diagnóstico asociados a una instancia y lo que ocurre durante la creación de la instancia y la apertura y el cierre de una base de datos.

Nota: A efectos de este capítulo, el término "base de datos" hace referencia a una base de datos de contenedor (CDB) multi-inquilino, a menos que se indique lo contrario.

Introducción a la instancia de Oracle AI Database

Una instancia de base de datos es un juego de estructuras de memoria que gestionan archivos de base de datos.

En el nivel físico, una CDB es un juego de archivos en disco creado por la sentencia CREATE DATABASE. Una CDB contiene una o más PDB creadas con el usuario. Una PDB contiene su propio juego de archivos de datos dentro del juego general de archivos de datos que pertenece a la CDB. La instancia de base de datos gestiona los datos asociados a la CDB y sus PDB y sirve a sus usuarios.

Cada CDB en ejecución está asociada a al menos una instancia de base de datos Oracle. Puesto que una instancia existe en la memoria y una base de datos (en el sentido más estrecho del término) es un juego de archivos en el disco, una instancia puede existir sin una base de datos y una base de datos puede existir sin una instancia.

Estructura de instancia de base de datos

Cuando se inicia una instancia, Oracle AI Database asigna un área de memoria denominada área global del sistema (SGA) e inicia uno o más procesos en segundo plano.

El SGA tiene diversos fines, incluidos los siguientes:

Los procesos de Oracle que se ejecutan en una única computadora comparten el SGA. La forma en que los procesos de Oracle se asocian a SGA varía en función del sistema operativo.

Una instancia de base de datos también incluye procesos en segundo plano y procesos de servidor. Cada proceso tiene su propia memoria dedicada considerada como parte de la instancia. La instancia sigue funcionando cuando terminan los procesos del servidor.

En el siguiente gráfico se muestran los componentes principales de una instancia de base de datos Oracle.

Figura 1: Instancia de base de datos

Descripción de la ilustración cncpt325.png

Consulte además:

Configuraciones de instancia de base de datos

Oracle AI Database se ejecuta en una configuración de instancia única o en una configuración de Oracle Real Application Clusters (Oracle RAC). Estas configuraciones se excluyen mutuamente.

En una configuración de instancia única, existe una relación de uno a uno entre la base de datos y una instancia de base de datos. En Oracle RAC, existe una relación de uno a varios entre la base de datos y las instancias de base de datos.

En la siguiente figura se muestran las posibles configuraciones de instancias de base de datos.

Figura 2: Configuraciones de instancia de base de datos

Descripción de la ilustración cncpt296.gif

Ya sea en una configuración de instancia única u Oracle RAC, una instancia de base de datos está asociada a una sola base de datos a la vez. Puede iniciar una instancia de base de datos y montar (asociar la instancia a) una base de datos, pero no montar dos bases de datos simultáneamente con la misma instancia. Nota: En este capítulo se trata una configuración de base de datos de instancia única, a menos que se indique lo contrario.

Varias instancias se pueden ejecutar simultáneamente en la misma computadora, cada una con acceso a su propia base de datos. Por ejemplo, una computadora puede alojar dos bases de datos distintas: prod1 y prod2. Una instancia de base de datos gestiona prod1, mientras que una instancia independiente gestiona prod2.

Consulte también: Guía de despliegue y administración de Oracle Real Application Clusters para obtener información específica de Oracle RAC

Instancias de lectura/escritura y de solo lectura

Cada instancia de base de datos es de lectura/escritura o de solo lectura.

Una instancia de base de datos de lectura/escritura, que es el valor por defecto, puede procesar DML y soporta conexiones directas desde aplicaciones cliente. Por el contrario, una instancia de base de datos de sólo lectura puede procesar consultas, pero no soporta la modificación de DML (UPDATE, DELETE, INSERT y MERGE) ni conexiones de cliente directas.

Nota: A menos que se indique lo contrario en este manual, todas las referencias a instancias de base de datos son a instancias de lectura/escritura.

En versiones anteriores, todas las instancias de base de datos, a menos que accedieran a una base de datos en espera, eran de lectura/escritura. A partir de Oracle Database 12c versión 2 (12.2), las instancias de solo lectura y de lectura/escritura pueden coexistir en una única base de datos. Esta configuración es útil para sentencias SQL paralelas que consultan y modifican datos, ya que tanto las instancias de lectura/escritura como las de solo lectura pueden consultar, mientras que las instancias de lectura/escritura modifican.

A diferencia de las instancias de lectura/escritura, las instancias de solo lectura tienen las siguientes características:

Para designar una instancia como de solo lectura, defina el parámetro de inicialización INSTANCE_MODE en READ_ONLY. El valor por defecto del parámetro es READ_WRITE.

Consulte además:

Duración de una instancia de base de datos

Una instancia de base de datos comienza cuando se crea con el comando STARTUP y termina cuando se termina.

Durante este período, una instancia de base de datos se puede asociar a una sola base de datos. Además, la instancia solo puede montar una base de datos una vez, cerrarla solo una vez y abrirla solo una vez. Después de cerrar o cerrar una base de datos, debe iniciar una instancia diferente para montar y abrir esta base de datos.

La siguiente tabla ilustra una instancia de base de datos que intenta volver a abrir una base de datos que ha cerrado anteriormente.

Tabla 1 Duración de una instancia

Sentencia Explicación
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.
SQL> SELECT
  TO_CHAR(STARTUP_TIME,'MON-DD-RR HH24:MI:SS')
  AS "Inst Start Time" FROM V$INSTANCE;

  Inst Start Time
 ------------------
 JUN-18-14 13:14:48
Esta consulta muestra la hora a la que se inició la instancia actual.
SQL> SHUTDOWN IMMEDIATE
La instancia cierra la base de datos y se cierra, poniendo fin a la vida útil 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-14 13:16:40
Esta consulta muestra la hora a la que se inició la instancia actual. La hora de inicio diferente muestra que esta instancia es diferente de la que cierra la base de datos.

Identificación de una instancia de base de datos

Varias instancias de base de datos pueden residir en un único host. Por lo tanto, debe tener un medio para especificar a qué instancia desea acceder. Las reglas de Oracle Optimal Flexible Architecture (OFA) son un juego de directrices de configuración creadas para garantizar instalaciones de Oracle bien organizadas. En los ejemplos de esta sección se asume una arquitectura OFA.

Esta sección incluye los siguientes temas:

Directorio Base de Oracle

El directorio base de Oracle almacena los binarios de los productos de Oracle.

El directorio base de Oracle es el directorio raíz de la base de datos para los propietarios de la instalación de Oracle AI Database. Puede haber muchas instalaciones de Oracle AI Database en un host y muchos propietarios de instalaciones de software de Oracle AI Database.

En el siguiente ejemplo se muestra el directorio base de Oracle de la cuenta de usuario del sistema operativo oracle:

/u01/app/oracle

En la ruta anterior, /u01/ es el punto de montaje y /u01/app/ es el subárbol del software de la aplicación.

Consulte también: Guía de instalación de Oracle AI Database para Linux para obtener una visión general de la base de datos de Oracle

Directorio Raíz de Oracle

El directorio raíz de Oracle es la ubicación de software de una base de datos Oracle.

Debe especificar un nuevo directorio principal de Oracle para cada instalación nueva de software de Oracle AI Database. A partir de Oracle Database 21c, el directorio raíz de Oracle es de solo lectura. El directorio raíz de Oracle almacena archivos estáticos, como archivos binarios.

Por defecto, el directorio raíz de Oracle es un descendiente del árbol de directorios base (ORACLE_BASE) de Oracle. Puede instalar esta versión, o versiones anteriores del software de base de datos, más de una vez en el mismo host, en diferentes directorios raíz de Oracle dentro de un único base de Oracle. Varias bases de datos, de diferentes versiones y propiedad de diferentes cuentas de usuario, pueden coexistir simultáneamente.

En el siguiente ejemplo se muestran los nombres de ruta de acceso completa de tres directorios raíz de Oracle diferentes, todos dentro del mismo directorio base de Oracle de /u01/app/oracle/:

/u01/app/oracle/product/19.3.0/dbhome_1
/u01/app/oracle/product/19.3.0/dbhome_2
/u01/app/oracle/product/20.1.0/dbhome_1

La parte del nombre de la ruta después del directorio base de Oracle (/u01/app/oracle/) incluye el número de versión del producto (por ejemplo, 19.3.0) y el directorio relativo del directorio raíz de Oracle (por ejemplo, dbhome_1). El directorio /u01/app/oracle/product/19.3.0/ contiene dos directorios raíz de Oracle independientes: dbhome_1 y dbhome_2.

El directorio directorio raíz base de Oracle (ORACLE_BASE_HOME), que se encuentra en ORACLE_BASE/homes/home_name, almacena archivos dinámicos específicos de un directorio raíz de Oracle. El directorio de configuración base de Oracle (ORACLE_BASE_CONFIG), que comparten todos los directorios raíz de Oracle en un directorio base de Oracle, almacena archivos dinámicos específicos de la instancia.

En el siguiente ejemplo, la primera ruta es un directorio raíz de Oracle y la segunda ruta es el directorio raíz base de Oracle para este directorio raíz de Oracle:

/u01/app/oracle/product/20.1.0/dbhome_1
/u01/app/oracle/homes/dbhome_1

Consulte también: Oracle AI Database Installation Guide for Linux para obtener una visión general del directorio raíz de Oracle

Identificador del Sistema Oracle (SID)

El identificador del sistema (SID) es un nombre único para una instancia de base de datos Oracle en un host específico.

En UNIX y Linux, Oracle AI Database utiliza el SID y los valores del directorio raíz de Oracle para crear una clave para la memoria compartida. Además, Oracle AI Database utiliza el SID por defecto para localizar el archivo de parámetros de inicialización, que localiza archivos relevantes como los archivos de control de la base de datos.

En la mayoría de las plataformas, la variable de entorno ORACLE_SID define el SID y la variable ORACLE_HOME define el directorio raíz de Oracle. Al conectarse a una instancia de base de datos, los clientes pueden especificar el SID en una conexión de Red de Oracle o utilizar un nombre de servicio de red. Oracle AI Database convierte un nombre de servicio de red en ORACLE_HOME y ORACLE_SID.

Los archivos específicos de la instancia se almacenan por separado en la base de Oracle. Los archivos cuyos nombres incluyen el SID residen en el subdirectorio dbs del directorio de configuración base de Oracle (ORACLE_BASE_CONFIG). Debido a esta separación, puede crear una base de datos con software en un directorio raíz de Oracle existente y, a continuación, iniciar una instancia para esta base de datos con software que reside en un nuevo directorio raíz de Oracle.

Consulte además:

Visión General de Inicio y Cierre de Instancias de Base de Datos

Una instancia de base de datos proporciona acceso de usuario a una base de datos. La instancia y la base de datos pueden estar en varios estados.

Visión General del Inicio de Instancia y Base de Datos

Normalmente, inicia manualmente una instancia y, a continuación, monta y abre la base de datos, lo que hace que esté disponible para los usuarios. Puede utilizar el comando STARTUP de SQL*Plus, Oracle Enterprise Manager (Enterprise Manager) o la utilidad SRVCTL para realizar estos pasos.

Para iniciar una instancia de base de datos con la Red de Oracle, se debe cumplir lo siguiente:

El listener crea un servidor dedicado, que puede iniciar la instancia de base de datos.

En el siguiente gráfico se muestra cómo la base de datos avanza de un estado de cierre a un estado abierto.

Figura 3: Secuencia de Inicio de Instancia y Base de Datos

Descripción de la ilustración cncpt212.gif

Una base de datos realiza las siguientes fases cuando pasa de un estado de cierre a un estado de base de datos abierta.

Tabla 2 Pasos en el inicio de la instancia

Fase Estado de montaje Descripción Para saber más
1 Instancia iniciada sin montar la base de datos La instancia se ha iniciado, pero aún no está asociada a una base de datos. "Cómo se inicia una instancia"
2 Base de datos montada La instancia se inicia y se asocia a una base de datos leyendo su archivo de control. La base de datos está cerrada a los usuarios. "Cómo se monta una base de datos"
3 Apertura de Base de Datos La instancia se inicia y está asociada a una base de datos abierta. Los datos contenidos en los archivos de datos son accesibles para los usuarios autorizados. "Cómo se abre una base de datos"

Consulte además:

Conexión con Privilegios de Administrador

El inicio y el cierre de la base de datos son potentes opciones administrativas que están restringidas a los usuarios que se conectan a Oracle AI Database con privilegios de administrador.

Los usuarios normales no tienen control sobre el estado actual de una base de datos Oracle. Según el sistema operativo, una de las siguientes condiciones establece privilegios de administrador para un usuario:

Los siguientes privilegios especiales del sistema permiten el acceso a una instancia de base de datos incluso cuando la base de datos no está abierta:

El control de los privilegios anteriores está fuera de la propia base de datos. Al conectarse a una base de datos con el privilegio del sistema SYSDBA, se encuentra en el esquema propiedad de SYS. Cuando se conecta como SYSOPER, se encuentra en el esquema público. Los privilegios SYSOPER son un subjuego de privilegios SYSDBA.

Consulte además:

Cómo se inicia una instancia

Cuando Oracle AI Database inicia una instancia, avanza por etapas.

Las etapas son las siguientes:

  1. Busca un archivo de parámetros del servidor en una ubicación predeterminada específica de la plataforma y, si no se encuentra, un archivo de parámetros de inicialización de texto (especificar STARTUP con los parámetros SPFILE o PFILE sustituye el comportamiento predeterminado).

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

  3. Asigna el SGA según la configuración del parámetro de inicialización

  4. Inicia los procesos en segundo plano de Oracle

  5. Abre los archivos de rastreo y alert log y escribe todos los valores de parámetros explícitos en el log de alertas en una sintaxis de parámetros válida

En esta etapa, no hay ninguna base de datos asociada a la instancia. Los escenarios que necesitan un estado NOMOUNT incluyen la creación de la base de datos y determinadas operaciones de copia de seguridad y recuperación.

Consulte también: Oracle AI Database Administrator's Guide para aprender a gestionar los parámetros de inicialización mediante un archivo de parámetros del servidor

Cómo se monta una base de datos

La instancia monta una base de datos para asociar la base de datos a esta instancia.

Para montar la base de datos, la instancia obtiene los nombres de los archivos de control de la base de datos especificados en el parámetro de inicialización CONTROL_FILES y abre los archivos. Oracle AI Database lee los archivos de control para buscar los nombres de los archivos de datos y los archivos redo log en línea a los que intentará acceder al abrir la base de datos.

En una base de datos montada, la base de datos se cierra y solo pueden acceder a ella los administradores de la base de datos. Los administradores pueden mantener la base de datos cerrada al completar operaciones de mantenimiento específicas. Sin embargo, la base de datos no está disponible para operaciones normales.

Si Oracle AI Database permite que varias instancias monten la misma base de datos simultáneamente, la configuración del parámetro de inicialización CLUSTER_DATABASE puede hacer que la base de datos esté disponible para varias instancias. El comportamiento de la base de datos depende de la configuración:

Consulte además:

Cómo se abre una base de datos

Abrir una base de datos montada hace que esté disponible para el funcionamiento normal de la base de datos.

Cualquier usuario válido puede conectarse 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 que esté disponible para uso general.

Al abrir la base de datos, Oracle AI Database realiza las siguientes acciones:

Consulte además:

Modo de solo lectura

Por defecto, la base de datos se abre en el modo de lectura/escritura. En este modo, los usuarios pueden realizar cambios en los datos, generando redo en el redo log en línea. También se puede abrir en el modo de solo lectura para evitar que las transacciones de usuario modifiquen los datos. Nota: Por defecto, una base de datos en espera física se abre en modo de solo lectura.

El modo de solo lectura restringe el acceso a la base de datos a transacciones de solo lectura, que no pueden escribir en archivos de datos ni en archivos redo log en línea. Sin embargo, la base de datos puede realizar operaciones de recuperación que cambien el estado de la base de datos sin generar redo. Por ejemplo, en modo de solo lectura:

Consulte además:

Comprobaciones de archivos de base de datos

Si alguno de los archivos de datos o redo log no está presente cuando la instancia intenta abrir la base de datos, o si los archivos están presentes pero fallan las pruebas de consistencia, la base de datos devuelve un error. Puede ser necesaria la recuperación de medios físicos.

Consulte también: Guía del usuario de copia de seguridad y recuperación de Oracle AI Database para obtener una visión general de la copia de seguridad y la recuperación

Visión General del Cierre de Base de Datos e Instancia

En un caso de uso típico, cierre manualmente la base de datos, lo que hace que no esté disponible para los usuarios mientras realiza tareas de mantenimiento u otras tareas administrativas. Puede utilizar el comando SHUTDOWN de SQL*Plus o Enterprise Manager para realizar estos pasos.

En la siguiente figura, se muestra la progresión de un estado abierto a un cierre consistente.

Figura 4: Secuencia de Cierre de Instancia y Base de Datos

Descripción de la ilustración cncpt281.gif

Oracle AI Database realiza automáticamente los siguientes pasos cada vez que una base de datos abierta se cierra de forma consistente.

Tabla 3 Pasos del Cierre Consistente

Fase Estado de montaje Descripción Para saber más
1 Database closed La base de datos está montada, pero los archivos de datos en línea y los archivos redo log están cerrados. "Cómo se Cerra una Base de Datos"
2 Base de datos desmontada La instancia se inicia, pero ya no está asociada al archivo de control de la base de datos. "Cómo se desmonta una base de datos"
3 Instancia de base de datos cerrada La instancia de base de datos ya no se inicia. "Cómo se cierra una instancia"

Oracle AI Database no realiza todos los pasos anteriores en un fallo de instancia o SHUTDOWN ABORT, que termina inmediatamente la instancia.

Modos de cierre

Un administrador de base de datos con privilegios SYSDBA o SYSOPER puede cerrar la base de datos mediante el comando SHUTDOWN de SQL*Plus o Enterprise Manager. El comando SHUTDOWN tiene opciones que determinan el comportamiento de cierre.

En la siguiente tabla, se resume el comportamiento de los diferentes modos de cierre.

Tabla 4 Modos de cierre de la base de datos

Comportamiento de la base de datos ABORT (ABORT) IMMEDIATE TRANSACCIONAL NORMAL
Permite nuevas conexiones de usuario 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 punto de control y cierra los archivos abiertos No Sí Sí Sí

Las posibles sentencias SHUTDOWN son:

Consulte además:

Cómo se cierra una base de datos

La operación de cierre de base de datos está implícita en un cierre de base de datos. La naturaleza de la operación depende de si el cierre de la base de datos es normal o anormal.

Cómo se cierra una base de datos durante el cierre normal

Cuando una base de datos se cierra como parte de una SHUTDOWN con cualquier opción que no sea ABORT, Oracle AI Database escribe datos en SGA en los archivos de datos y en los archivos redo log en línea.

Posteriormente, la base de datos cierra los archivos de datos en línea y los archivos redo log en línea. Los archivos de datos fuera de línea de los tablespaces fuera de línea ya se han cerrado. Cuando la base de datos se vuelve a abrir, cualquier tablespace que estaba fuera de línea permanece fuera de línea.

En esta etapa, la base de datos se cierra y no se puede acceder a ella para las operaciones normales. Los archivos de control permanecen abiertos después de cerrar una base de datos.

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

Si se produce una terminación SHUTDOWN ABORT o anormal, la instancia de una base de datos abierta se cierra y cierra la base de datos de forma instantánea.

En un cierre anormal, Oracle AI Database no escribe datos en los buffers del SGA en los archivos datos y los archivos redo log. La siguiente vez de que vuelva a abrirse la base de datos requerirá la recuperación a instancias, proceso que Oracle AI Database realiza automáticamente.

Cómo se desmonta una base de datos

Después de cerrar la base de datos, Oracle AI Database desmonta la base de datos para desasociarla de la instancia.

Después de desmontar una base de datos, Oracle AI Database cierra los archivos de control de la base de datos. En este punto, la instancia de base de datos permanece en memoria.

Cómo cerrar una instancia

El paso final en el cierre de la base de datos es cerrar la instancia. Cuando la instancia de base de datos se cierra, SGA deja de ocupar memoria y los procesos en segundo plano terminan.

En circunstancias poco habituales, puede que el cierre de una instancia de base de datos no se produzca correctamente. Es posible que las estructuras de memoria no se eliminen de la memoria o que uno de los procesos en segundo plano no se termine. Cuando existen restos de una instancia anterior, puede fallar un inicio de instancia posterior. En tales situaciones, puede forzar el inicio de la nueva instancia eliminando los restos de la instancia anterior y, a continuación, iniciando una nueva instancia o emitiendo una sentencia SHUTDOWN ABORT.

En algunos casos, la limpieza de procesos en sí puede encontrar errores, lo que puede provocar la terminación del monitor de procesos (PMON) o la instancia. El parámetro de inicialización dinámica INSTANCE_ABORT_DELAY_TIME especifica cuántos segundos debe retrasar un fallo de instancia generado internamente. Este retraso le da la oportunidad de responder. La base de datos escribe un mensaje en el log de alertas cuando se inicia la terminación retrasada. En algunas circunstancias, al permitir que determinados recursos de la base de datos se pongan en cuarentena, la instancia puede evitar la terminación.

Consulte además:

Visión General de los Puntos de Control

Un punto de control es un mecanismo crucial para los cierres de bases de datos coherentes, la recuperación de instancias y la operación de Oracle AI Database en general.

El término tiene los siguientes significados relacionados:

Objetivo de los puntos de control

Oracle AI Database utiliza puntos de control para lograr varios objetivos.

Los objetivos incluyen los siguientes:

Cuando Oracle AI Database inicia puntos de control

El proceso de punto de control (CKPT) es responsable de escribir puntos de control en las cabeceras y el archivo de control del archivo de datos.

Los puntos de control se producen en diversas situaciones. Por ejemplo, Oracle AI Database utiliza los siguientes tipos de puntos de control:

Otros tipos de puntos de control incluyen puntos de control y de recuperación de medios físicos e instancias cuando los objetos de esquema se borran o truncan.

Consulte además:

Visión General de Recuperación de Instancias

La recuperación de instancias es el proceso de aplicación de registros en el redo log en línea a los archivos de datos para reconstruir los cambios realizados después del punto de control más reciente.

La recuperación de instancias se produce automáticamente cuando un administrador intenta abrir una base de datos que anteriormente se había cerrado de forma inconsistente.

Objetivo de la Recuperación de Instancias

La recuperación de instancias garantiza que la base de datos se encuentre en un estado consistente después de un fallo de la instancia. Los archivos de una base de datos se pueden dejar en un estado inconsistente debido a cómo Oracle AI Database gestiona los cambios de la base de datos.

Un subproceso de deshacer es un registro de todos los cambios generados por una instancia. Una base de datos de instancia única tiene un thread de redo, mientras que una base de datos Oracle RAC tiene varios threads de redo, uno para cada instancia de base de datos.

Cuando se confirma una transacción, el proceso de escritor de logs (LGWR) escribe tanto las entradas de redo restantes en la memoria como el SCN de la transacción en el redo log en línea. Sin embargo, el proceso de escritor de base de datos (DBW) escribe bloques de datos modificados en los archivos de datos siempre que sea más eficaz. Por este motivo, los cambios sin confirmar pueden existir temporalmente en los archivos de datos mientras que los cambios confirmados aún no existen en los archivos de datos.

Si falla una instancia de una base de datos abierta, ya sea debido a una sentencia SHUTDOWN ABORT o a una terminación anormal, pueden producirse las siguientes situaciones:

La recuperación de instancias utiliza solo archivos redo log en línea y archivos de datos en línea actuales para sincronizar los archivos de datos y garantizar que sean coherentes.

Consulte además:

Cuando Oracle AI Database realiza una recuperación de instancia

La necesidad de recuperación de instancias depende del estado de los threads de redo.

Un thread de redo se marca como abierto en el archivo de control cuando una instancia de base de datos se abre en modo de lectura/escritura y se marca como cerrado cuando la instancia se cierra de forma consistente. Si los threads de redo se marcan como abiertos en el archivo de control, pero ninguna instancia activa contiene las colas de threads correspondientes a estos threads, la base de datos necesita la recuperación de la instancia.

Oracle AI Database realiza la recuperación de instancias automáticamente en las siguientes situaciones:

El proceso en segundo plano SMON realiza la recuperación de instancias y aplica el redo en línea automáticamente. No se requiere intervención del usuario.

Consulte además:

Importancia de los puntos de control para la recuperación de instancias

La recuperación de instancias utiliza puntos de control para determinar qué cambios se deben aplicar a los archivos de datos. La posición del punto de control garantiza que cada cambio confirmado con un SCN menor que el SCN del punto de control se guarde en los archivos de datos.

En la siguiente figura se muestra el thread de redo en el redo log en línea.

Figura 5: Posición de Punto de Control en Redo Log en Línea

Descripción de la ilustración cncpt282.gif

Durante la recuperación de instancias, la base de datos debe aplicar los cambios que se producen entre la posición del punto de control y el final del thread de redo. Como se muestra en la Figura 16-5, es posible que algunos cambios ya se hayan escrito en los archivos de datos. Sin embargo, solo los cambios con SCN inferiores a la posición del punto de control están garantizados de estar en el disco.

Consulte también: Guía de ajuste de rendimiento de Oracle AI Database para aprender a limitar el tiempo de recuperación de instancias

Fases de Recuperación de Instancias

La primera fase de recuperación de instancias se denomina recuperación de caché o avanzar y vuelve a aplicar todos los cambios registrados en el redo log en línea a los archivos de datos.

Puesto que el redo log en línea contiene datos de deshacer, el reenvío también regenera los segmentos de deshacer correspondientes. El avance continúa a través de tantos archivos redo log en línea como sea necesario para que la base de datos avance a tiempo. Después de la operación de transferencia, los bloques de datos contienen todos los cambios confirmados registrados en los archivos redo log en línea. Estos archivos también pueden contener cambios sin confirmar que se hayan guardado en los archivos de datos antes del fallo o que se hayan registrado en el redo log en línea y que se hayan introducido durante la recuperación de caché.

Después de la renovación, cualquier cambio que no se haya confirmado se debe deshacer. Oracle AI Database utiliza la posición del punto de control, lo que garantiza que todos los cambios confirmados con un SCN inferior al SCN del punto de control se guarden en el disco. Oracle AI Database aplica bloques de deshacer para realizar un rollback de los cambios sin confirmar en los bloques de datos que se escribieron antes del fallo o se introdujeron durante la recuperación de caché. Esta fase se denomina reversión o recuperación de transacciones.

En la siguiente figura, se muestran los dos pasos necesarios para realizar una recuperación tras un fallo de la instancia de base de datos.

Figura 6: Pasos Básicos de Recuperación de Instancias: Reversión y Reversión

Descripción de la ilustración cncpt196.gif

Oracle AI Database puede realizar un rollback de varias transacciones simultáneamente según sea necesario. Todas las transacciones que estaban activas en el momento del fallo se marcan como finalizadas. En lugar de esperar a que el proceso SMON realice un rollback de las transacciones terminadas, las nuevas transacciones pueden realizar un rollback de bloques individuales para obtener los datos necesarios.

Consulte además:

Visión general de los archivos de parámetros

Para iniciar una instancia de base de datos, Oracle AI Database debe leer un archivo de parámetros del servidor, que se recomienda, o un archivo de parámetros de inicialización de texto, que es una implementación heredada. Estos archivos contienen una lista de parámetros de configuración.

Para crear una base de datos manualmente, debe iniciar una instancia con un archivo de parámetros y, a continuación, emitir una sentencia CREATE DATABASE. Por lo tanto, la instancia y el archivo de parámetros pueden existir incluso cuando la base de datos en sí no existe.

Parámetros de Inicialización

Los parámetros de inicialización son parámetros de configuración que afectan al funcionamiento básico de una instancia. La instancia lee los parámetros de inicialización de un archivo en el inicio.

Oracle AI Database proporciona muchos parámetros de inicialización para optimizar su funcionamiento en diversos entornos. Solo se deben definir explícitamente algunos de estos parámetros porque los valores por defecto suelen ser los adecuados.

Grupos funcionales de parámetros de inicialización

Los parámetros de inicialización se dividen en diferentes grupos funcionales.

La mayoría de los parámetros de inicialización pertenecen a uno de los siguientes grupos:

Los parámetros variables son de especial interés para los administradores de la base de datos porque pueden utilizar estos parámetros para mejorar el rendimiento de la base de datos.

Parámetros de Inicialización Básica y Avanzada

Los parámetros de inicialización se dividen en dos grupos: básico y avanzado.

Normalmente, debe definir y ajustar solo los aproximadamente 30 parámetros básicos para obtener un rendimiento razonable. Los parámetros básicos definen características como el nombre de la base de datos, las ubicaciones de los archivos de control, el tamaño de bloque de la base de datos y el tablespace de deshacer.

En raras situaciones, puede ser necesario modificar los parámetros avanzados para obtener un rendimiento óptimo. Los parámetros avanzados permiten a los DBA expertos adaptar el comportamiento de Oracle AI Database para cumplir con requisitos únicos.

Oracle AI Database proporciona valores en el archivo de parámetros de inicialización de inicio proporcionado con el software de la base de datos o según lo haya creado el asistente de configuración de bases de datos (DBCA). Puede editar estos parámetros de inicialización proporcionados por Oracle y agregar otros, según la configuración y la forma en que planea ajustar la base de datos. Para los parámetros de inicialización relevantes no incluidos en el archivo de parámetros, Oracle AI Database proporciona los valores por defecto.

Consulte además:

Archivos de Parámetros del Servidor

Un archivo de parámetros del servidor es un repositorio para los parámetros de inicialización.

Un archivo de parámetros del servidor tiene las siguientes características clave:

Un archivo de parámetros del servidor elimina la necesidad de mantener varios archivos de parámetros de inicialización de texto para las aplicaciones cliente. Un archivo de parámetros del servidor se crea inicialmente a partir de un archivo de parámetros de inicialización de texto mediante la sentencia CREATE SPFILE. También se puede crear directamente mediante el asistente de configuración de bases de datos.

Consulte además:

Archivos de Parámetros de Inicialización de Texto

Un archivo de parámetros de inicialización de texto es un archivo de texto que contiene una lista de parámetros de inicialización.

Este tipo de archivo de parámetros, que es una implementación heredada del archivo de parámetros, tiene las siguientes características clave:

El archivo de parámetros de inicialización de texto contiene una serie de pares key=value, uno por línea. Por ejemplo, una parte de un archivo de parámetros de inicialización podría tener el siguiente aspecto:

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 gestión que pueden crear los archivos de parámetros de texto, suponga que utiliza los equipos clienta y clientb y debe poder iniciar la base de datos con SQL*Plus en cualquiera de los equipos. En este caso, deben existir dos archivos de parámetros de inicialización de texto independientes, uno en cada equipo, como se muestra en la Figure 16-7. Un archivo de parámetros del servidor resuelve el problema de la proliferación de archivos de parámetros.

Figura 7: Varios archivos de parámetros de inicialización

Descripción de la ilustración cncpt247.gif

Consulte además:

Modificación de Valores de Parámetros de Inicialización

Puede ajustar los parámetros de inicialización para modificar el comportamiento de una base de datos. La clasificación de los parámetros como static o dynamic determina cómo se pueden modificar.

En la siguiente tabla se resumen las diferencias.

Tabla 5 Parámetros de inicialización estáticos y dinámicos

Característica Estático Dinámico
Requiere modificación del archivo de parámetros (texto o servidor) Sí No
Necesita reiniciar la instancia de base de datos antes de que se aplique el valor Sí No
Se describe como "Modificable" en la entrada del parámetro de inicialización Oracle AI Database Reference No Sí
Solo modificable para la base de datos o la instancia Sí No

Los parámetros estáticos incluyen DB_BLOCK_SIZE, DB_NAME y COMPATIBLE. Los parámetros dinámicos se agrupan en parámetros de nivel de sesión, que afectan sólo a la sesión de usuario actual, y parámetros de nivel de sistema, que afectan a la base de datos y a todas las sesiones. Por ejemplo, MEMORY_TARGET es un parámetro de nivel de sistema, mientras que NLS_DATE_FORMAT es un parámetro de nivel de sesión.

El ámbito de un cambio de parámetro depende de cuándo se aplique el cambio. Cuando se ha iniciado una instancia con un archivo de parámetros de servidor, puede utilizar la sentencia ALTER SYSTEM SET para cambiar los valores de los parámetros de nivel de sistema de la siguiente manera:

La base de datos imprime el nuevo valor y el antiguo valor de un parámetro de inicialización en el log de alertas. Como medida preventiva, la base de datos valida los cambios de parámetros básicos para evitar que se escriban valores no válidos en el archivo de parámetros del servidor.

Consulte además:

Descripción general de archivos de diagnóstico

Oracle AI Database incluye una infraestructura de diagnóstico de fallos para prevenir, detectar, diagnosticar y resolver problemas de la base de datos. Los problemas incluyen errores críticos, como bugs de código, corrupción de metadatos y corrupción de datos de clientes.

Los objetivos de la infraestructura avanzada de diagnóstico de fallos son los siguientes:

Repositorio de Diagnóstico Automático

El repositorio de diagnóstico automático (ADR) es un repositorio basado en archivos que almacena datos de diagnóstico de la base de datos, como archivos de rastreo, el log de alertas, el log DDL y los informes de supervisión de estado.

Las características clave de ADR incluyen:

Las características anteriores permiten a los clientes y a los Servicios de Soporte Oracle correlacionar y analizar datos de diagnóstico en varias instancias, componentes y productos de Oracle.

ADR se encuentra fuera de la base de datos, lo que permite a Oracle AI Database acceder y gestionar ADR cuando la base de datos física no está disponible. Una instancia de base de datos puede crear ADR antes de crear una base de datos.

Problemas e Incidentes

ADR realiza un seguimiento proactivo de los problemas, que son errores críticos en la base de datos.

Los errores críticos se manifiestan como errores internos, como ORA-600, u otros errores graves. Cada problema dispone de una clave de problema, que es una cadena de texto que lo describe.

Cuando se produce un problema varias veces, ADR crea un incidente con registro de hora para cada incidencia. Un incidente se identifica de forma única mediante un ID de incidente numérico. Cuando se produce un incidente, ADR envía una alerta de incidente a Enterprise Manager. El diagnóstico y la resolución de errores críticos suelen comenzar a partir de una alerta de incidente.

Debido a que un problema puede generar muchos incidentes en poco tiempo, ADR aplica el control de inundación a la generación de incidentes después de que se alcancen ciertos umbrales. Un incidente controlado por el flujo genera una entrada de log de alertas, pero no genera volcados de incidentes. De esta manera, ADR le informa que hay un error crítico en curso sin sobrecargar el sistema con datos de diagnóstico.

Consulte también: Guía del administrador de Oracle AI Database para obtener información detallada sobre la infraestructura de diagnóstico de fallos

Estructura de ADR

ADR base es el directorio raíz de ADR.

La base de ADR puede contener varios directorios raíz de ADR, donde cada directorio raíz de ADR es el directorio raíz para todos los rastreos de datos de diagnóstico, volcados, el log de alertas, etc. para una instancia de un producto o componente de Oracle. Por ejemplo, en un entorno de Oracle RAC con almacenamiento compartido y Oracle ASM, cada instancia de base de datos y cada instancia de Oracle ASM tienen su propio directorio raíz de ADR. La Figura 16-8 ilustra la jerarquía de directorios de ADR para una instancia de base de datos. En esta jerarquía pueden existir otros directorios raíz de ADR para otros productos o componentes de Oracle, como Oracle ASM u Oracle Net Services, en la misma base de ADR.

Figura 8: Estructura de directorios de ADR para una instancia de Oracle AI Database

Descripción de la ilustración admin077.gif

Como se muestra en el siguiente ejemplo de Linux, al iniciar una instancia con un SID y un nombre de base de datos únicos antes de crear una base de datos, Oracle AI Database crea ADR por defecto como una estructura de directorios en el sistema de archivos del host. El SID y el nombre de la base de datos forman parte del nombre de ruta de acceso para los archivos del directorio raíz de ADR.

Ejemplo 16-1 Creación de ADR

% setenv ORACLE_SID osi
% echo "DB_NAME=dbn" > init.ora
% sqlplus / as sysdba
.
.
.
Connected to an idle instance.

SQL> STARTUP NOMOUNT PFILE="./init.ora"
ORACLE instance started.

Total System Global Area  146472960 bytes
Fixed Size                  1317424 bytes
Variable Size              92276176 bytes
Database Buffers           50331648 bytes
Redo Buffers                2547712 bytes

SQL> COL NAME FORMAT a21
SQL> COL VALUE FORMAT a60
SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;

NAME                  VALUE
--------------------- --------------------------------------------------------
Diag Enabled          TRUE
ADR Base              /d1/3910926111/oracle/log
ADR Home              /d1/3910926111/oracle/log/diag/rdbms/dbn/osi
Diag Trace            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace
Diag Alert            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/alert
Diag Incident         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/incident
Diag Cdump            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/cdump
Health Monitor        /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/hm
Default Trace File    /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/osi_ora_29229.trc
Active Problem Count  0
Active Incident Count 0
ORACLE_HOME           /d1/3910926111/oracle
Attention Log         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/attention_osi.log
13 rows selected.

Log de Alertas

Cada base de datos tiene un alert log, que es un archivo que contiene un log cronológico de mensajes y errores de la base de datos.

El contenido del log de alertas incluye lo siguiente:

Si una operación administrativa se realiza correctamente, Oracle AI Database escribe un mensaje en el log de alertas como "completado" junto con un registro de hora.

Oracle AI Database crea un log de alertas en el subdirectorio alert que se muestra en la Figura 16-8 al iniciar por primera vez una instancia de base de datos, incluso si aún no se ha creado ninguna base de datos. Este archivo se encuentra en formato XML. El subdirectorio trace contiene un log de alertas de solo texto.

Consulte V$DIAG_INFO para localizar el log de alertas.

Log de atención

Cada base de datos tiene un log de atención, que contiene eventos de base de datos críticos y muy visibles.

El log de atención incluye solo eventos de base de datos críticos y muy visibles, lo que permite identificar una alerta y realizar las acciones adecuadas. Cada mensaje del log de atención tiene varios atributos, incluidos el público objetivo, la causa y una acción que se debe realizar. El log de atención proporciona información con el siguiente formato:

Oracle AI Database crea un log de atención denominado attention_ORACLE_SID.log en el subdirectorio trace que se muestra en la Figura 16-8. También puede consultar V$DIAG_INFO para localizar el log de atención.

Log de DDL

El log DDL tiene el mismo formato y el mismo comportamiento básico que el log de alertas, pero solo contiene sentencias DDL y detalles. La base de datos escribe la información DDL en su propio archivo para reducir el desorden en el log de alertas.

Los registros log DDL son texto DDL, que, opcionalmente, se aumenta con información adicional. Existe un registro log para cada sentencia DDL. El log DDL se almacena en el subdirectorio log/ddl del directorio raíz de ADR.

Archivos de Rastreo

Un archivo de rastreo es un archivo que contiene datos de diagnóstico utilizados para investigar problemas. Además, los archivos de rastreo pueden proporcionar orientación para ajustar aplicaciones o una instancia.

Tipos de archivos de rastreo

Cada proceso de servidor y en segundo plano puede escribir periódicamente en un archivo de rastreo asociado. Los archivos contienen información sobre el entorno del proceso, el estado, las actividades y los errores.

La utilidad de rastreo SQL también crea archivos de rastreo, que proporcionan información de rendimiento sobre sentencias SQL individuales. Puede activar el rastreo de un identificador de cliente, servicio, módulo, acción, sesión, instancia o base de datos de varias formas. Por ejemplo, puede ejecutar los procedimientos adecuados en el paquete DBMS_MONITOR o definir eventos.

Consulte además:

Ubicaciones de archivos de rastreo

ADR almacena los archivos de rastreo en el subdirectorio trace. Los nombres de archivo de rastreo dependen de la plataforma y utilizan la extensión .trc.

Normalmente, los nombres de los archivos de rastreo de procesos en segundo plano de la base de datos contienen el SID de Oracle, el nombre del proceso en segundo plano y el número de proceso del sistema operativo. Un ejemplo de archivo de rastreo para el proceso RECO es mytest_reco_10355.trc.

Los nombres de archivo de rastreo de procesos del servidor contienen el SID de Oracle, la cadena ora y el número de proceso del sistema operativo. Un ejemplo de nombre de archivo de rastreo de procesos de servidor es mytest_ora_10304.trc.

A veces, los archivos de rastreo tienen los correspondientes archivos de metadatos de rastreo, que terminan con la extensión .trm. Estos archivos contienen información estructural denominada trace maps que la base de datos utiliza para la búsqueda y la navegación.

Consulte además:

Segmentación de archivos de rastreo

Cuando el tamaño del archivo de rastreo es limitado, la base de datos puede dividirlo automáticamente en un máximo de cinco segmentos. Los segmentos son archivos independientes que tienen el mismo nombre que el archivo de rastreo activo, pero con un número de segmento agregado, como en ora_1234_2.trc.

Cada segmento suele ser el 20% del límite definido por MAX_DUMP_FILE_SIZE. Cuando el tamaño combinado de todos los segmentos supera el límite, la base de datos suprime el segmento más antiguo (aunque nunca el primer segmento, que puede contener información relevante sobre el estado inicial del proceso) y, a continuación, crea un nuevo segmento vacío.

Consulte también: Guía del administrador de Oracle AI Database para aprender a controlar el tamaño de los archivos de rastreo

Volcados de Diagnóstico

Un archivo de volcado de diagnóstico es un tipo especial de archivo de rastreo que contiene información detallada puntual sobre un estado o una estructura.

Un rastreo tiende a ser una salida continua de datos de diagnóstico. Por el contrario, un volcado suele ser una salida puntual de datos de diagnóstico en respuesta a un evento.

Rastreo de volcados e incidentes

La mayoría de los volcados se producen debido a incidentes.

Cuando se produce un incidente, la base de datos escribe uno o más volcados en el directorio de incidentes creado para el incidente. Los volcados de incidentes también contienen el número de incidente en el nombre del archivo.

Durante la creación del incidente, una aplicación puede realizar un volcado de estado de pila o del sistema como parte de una acción. En estos casos, la base de datos agrega el nombre del volcado al nombre del archivo de incidente en lugar del nombre del archivo de rastreo por defecto. Por ejemplo, debido a un incidente en un proceso, la base de datos crea el archivo prod_ora_90348.trc. Un volcado en el incidente genera el archivo prod_ora_90348_incident_id.trc, donde incident_id es el ID numérico del incidente. Una acción de volcado de pila creada como parte del incidente genera el archivo de volcado de pila prod_ora_90348_incident_id_dump_id.trc, donde dump_id es el ID numérico del volcado de rastreo.