¿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, que comparten todos los usuarios. Además, existen estructuras de memoria (SGA: System Global Area) que sirven para almacenar los datos de la base de datos que se han consultado más recientemente. Estas áreas de memoria ayudan a mejorar el rendimiento de la base de datos, ya que reducen la cantidad de operaciones de E/S realizadas sobre 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 bien residen dentro de la base de datos, en un archivo de parámetros de servidor, conocido como SPFILE, el cual está 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 pedir interacción con la base de datos.
- Proceso de servidor. Hacen de 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 arranca una serie de procesos background.
Procesos Background (en segundo plano)
- DBWR: Databasewriter
- LGWR: Log Writer
- CKPT: Checkpoint
- SMON: Monitor de sistema
- PMON: Monitor de procesos
- ARCH: Proceso archivador
- RECO: Proceso de recuperación
DBWR: Este proceso es el que se encarga de escribir a disco. Es el único con permiso de escritura en disco, o sea en la base de datos. Cuando nosotros escribimos, hacemos un commit en la base de datos, realmente no está escribiendo en disco, si no que está marcando una serie de bloques de datos como que son susceptibles de ser escritos en disco, es decir, marca los datos como «confirmados», pero no escribe, si no que espera a que otra transacción los requiera para llevarlos a disco y así ahorrar un «viaje» o una operación. Por eso mismo cuando la base de datos cae..o la paramos con la opción «abort», queda inconsistente, ya que puede tener datos en bufferes «confirmados» que realmente no están escritos en disco. Por eso cuando volvemos a arrancar, necesita realizar una recuperación.
LGWR: Este proceso es que se encarga de escribir el contenido del búfer del registro de rehacer en los ficheros de registro de rehacer en linea. Se realizan las escrituras por lotes. El buffer del registro de rehacer(redo log), contiene siempre el estado más reciente de la base de datos, ya que es posible que el proceso DBWR espere 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 ficheros secuenciales lo que indica que cuando acaba de escribir en uno, empieza por otro y así sucesivamente.
CKPT: Este proceso es el encargado de realizar un «punto de comprobación». Cuando se sucede un punto de comprobación, CKPT hace que DBWR escriba todos los bloques que se hayan modificado desde el último punto de comprobación, y actualize los archivos de control y las cabeceras de los archivos de datos para registrar el punto de comprobación. Los puntos de comprobación de producen de forma automática cuando se llena un archivo de registro de rehacer en linea.
Se puede configurar el checkpoint en el fichero de inicialización de parámetros con el parámetro: LOG_CHEKPOINT_INTERVAL.
SMON: Este proceso realiza la recuperación de la instancia, según sea preciso usando los registros de rehacer en línea… (antes hablamos de que si oracle se para necesitaría hacer una recuperación si se para anormalmente, pues lo realiza así). Limpia la base de datos de transacciones inservibles. También cumple la función de agrupar 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 linea de forma ciclica, es decir, después de llenar el primero, va al segundo, cuando lo llena, va al tercero y así sucesivamente. Una vez terminado el último fichero de rehace en linea, LGWR empieza a sobreescribir los contenidos del primero. Cuando la base de datos se ejecuta en modo ARCHIVELOG, ARCH realiza una copia del cada uno de ficheros de rechace en linea antes de ser sobreescrito.
RECO: Este proceso es el encargado 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 dudas e intenta resolver las transacciones.