¿Qué es una instancia en Oracle?
Oracle utiliza un conjunto de procesos en segundo plano para acceder a los datos de la base de datos, compartidos por todos los usuarios. Además, existen estructuras de memoria (SGA: System Global Area) que almacenan los datos de la base de datos consultados recientemente. Estas áreas de memoria mejoran el rendimiento de la base de datos, reduciendo las operaciones de E/S en los archivos de datos.
Una instancia de base de datos (conocida como servidor) es un conjunto de estructuras de memoria y procesos en segundo plano que acceden a un conjunto de archivos de la base de datos. Los parámetros que determinan el tamaño y la composición de una instancia se almacenan en un archivo de inicialización denominado init.ora o residen dentro de la base de datos, en un archivo de parámetros de servidor, conocido como SPFILE, almacenado en el fichero spfile.ora.
Para visualizar los procesos en segundo plano, puede hacer un select
a la vista v$bgprocess.
Tipos de Procesos en Oracle
En Oracle, los procesos pueden ser de estos tipos:
- Proceso de usuario: Lanzado por el usuario para interactuar con la base de datos.
- Proceso de servidor: Actúan como enlace entre los procesos de usuarios y el servidor Oracle. Se utilizan como manejadores de los procesos de usuario. Los comandos de usuario se envían a estos procesos, que se encargan de solicitar peticiones a la base de datos mediante el interfaz de programas de Oracle (OPI, Oracle Program Interface).
- Procesos en segundo plano (background): Cada instancia de Oracle inicia una serie de procesos background.
Procesos Background (en segundo plano)
- DBWR: Database Writer
- LGWR: Log Writer
- CKPT: Checkpoint
- SMON: Monitor de sistema
- PMON: Monitor de procesos
- ARCH: Proceso archivador
- RECO: Proceso de recuperación
DBWR: Este proceso se encarga de escribir en disco. Es el único con permiso de escritura en la base de datos. Cuando se realiza un commit
en la base de datos, no se escribe directamente en disco, sino que se marcan los bloques de datos como susceptibles de ser escritos. Estos datos se marcan como»confirmado», pero no se escriben hasta que otra transacción los requiera, ahorrando operaciones de escritura. Por eso, cuando la base de datos se cae o se detiene con la opción»abor», queda inconsistente, ya que puede tener datos en búferes»confirmado» que no están escritos en disco. Al reiniciar, se necesita una recuperación.
LGWR: Este proceso escribe el contenido del búfer del registro de rehacer en los archivos de registro de rehacer en línea. Las escrituras se realizan por lotes. El búfer del registro de rehacer (redo log) contiene el estado más reciente de la base de datos, ya que el proceso DBWR puede esperar antes de escribir los bloques modificados desde los búferes de bloques de datos a los archivos de datos. Los archivos de registro de rehacer son secuenciales, lo que significa que al finalizar la escritura en uno, se inicia en otro y así sucesivamente.
CKPT: Este proceso realiza un»punto de comprobació». Durante un punto de comprobación, CKPT hace que DBWR escriba todos los bloques modificados desde el último punto de comprobación y actualice los archivos de control y las cabeceras de los archivos de datos para registrar el punto de comprobación. Los puntos de comprobación se producen automáticamente cuando se llena un archivo de registro de rehacer en línea.
Se puede configurar el checkpoint en el fichero de inicialización de parámetros con el parámetro: LOG_CHECKPOINT_INTERVAL.
SMON: Este proceso realiza la recuperación de la instancia, según sea necesario, utilizando los registros de rehacer en línea. Limpia la base de datos de transacciones inservibles. También agrupa extensiones libres contiguas en la base de datos. Smon solo agrupa el espacio libre en espacios de tablas cuyo valor de almacenamiento predeterminado sea distinto de 0.
PMON: Realiza limpiezas de procesos fallidos de usuarios. Libera recursos que estuviera usando el usuario. Sirve, por ejemplo, cuando hay bloqueos. Libera bloqueos y pone a disposición para otros usuarios.
ARCH: Proceso que escribe en los registros de rehacer en línea de forma cíclica. Después de llenar el primero, va al segundo, y así sucesivamente. Una vez terminado el último fichero de rehacer en línea, LGWR empieza a sobreescribir los contenidos del primero. Cuando la base de datos se ejecuta en modo ARCHIVELOG, ARCH realiza una copia de cada uno de los ficheros de rehacer en línea antes de ser sobreescrito.
RECO: Este proceso se encarga de realizar las recuperaciones de fallos en las bases de datos distribuidas. Este proceso trata de acceder a las bases de datos implicadas en transacciones distribuidas y intenta resolver las transacciones.