Ficheros de arranque init.ora y spfile.ora
1. Objetivos
Este articulo explica los ficheros de parámetros que utiliza la base de datos oracle para arrancar: init.ora y spfile.ora
2. Introducción
Oracle es una base de datos configurable mediante una serie de parámetros, el administrador puede optimizar los valores de esta base de datos. Estos parámetros de optimización y configuración de base de datos se almacenan en un fichero. Este fichero es el primero al que se accede al arrancar la base de datos oracle. El fichero de parámetros del que estamos hablando se denomina init.ora
En este fichero como hemos indicado anteriormente escribiremos los parámetros de configuración de oracle, pero si en este archivo alguno de los parámetros de oracle configurables no se encuentra este parámetro tomará el valor que oracle tenga por defecto.
3. Tipos de parámetros existentes
Existen tres tipos de parámetros en oracle:
– Parámetros “fijos”: Son parámetros que una vez instalada la base de datos no se pueden volver a modificar / configurar. El juego de caracteres es un claro ejemplo.
– Parámetros Estáticos: Son parámetros que se pueden modificar, pero su modificación implica cerrar la base de datos y volverla a abrir para que los lea del fichero y pueda realizar el cambio.
– Parámetros Dinámicos: Son parámetros cuyo valor se puede cambiar sin necesidad de cerrar la base de datos a diferencia de los estáticos.
Para saber si un parámetro es fijo, estático o dinámico os remito a la documentación oficial de oracle: parametros inicializacion
4. Ubicación y nomenclatura del fichero init.ora
El archivo init.ora lo podemos encontrar en Windows dentro del directorio ORACLE_HOME\database y en UNIX dentro del directorio ORACLE_HOME/dbs. El nombre del archivo siempre corresponderá a initsid.ora siendo sid el nombre de la base de datos.( Este es el nombre que oracle buscará al arrancar la base de datos)
5. spfile.ora
Init.ora no es el único archivo de parámetros que podemos encontrar en las base de datos oracle. A partir de la versión 9 encontramos el archivo spfile.ora. Este es el primer archivo que va a «buscar» oracle en su arranque de base de datos. Si no encuentra este archivo entonces irá a buscar el archivo init.ora. Este archivo está codificado y las modificaciones en él se realizarán mediante una serie de comandos oracle que posteriormente indicaremos. Es cierto que este archivo podemos intentar abrirlo con el notepad solo que probablemente quede corrupto o inservible. La ubicación de este archivo es la misma que la del init.ora
6. Cambio de los valores de los parámetros
Si queremos realizar algún cambio en algún parámetro de base de datos tenemos que diferenciar dos cosas:
– Si el cambio es en el init.ora o spfile.ora
– Tipo de parámetro sobre el que se quiere hacer el cambio
CAMBIOS EN EL INIT.ORA
Vamos a explicar como realizar un cambio en el fichero init.ora, para ello tenemos que tener en cuenta el tipo de parámetro que vamos a cambiar. Como hemos visto al principio de este articulo, existen tres tipos de parámetros, dejando a un lado los parámetros fijos (aquellos que no se pueden cambiar una vez instalada la base de datos) nos quedan los parámetros estáticos y los dinámicos. Para modificar un parámetro estático nos basta con editar el fichero init.ora y modificar o añadir ahí el parámetro nuevo reiniciando la base de datos para que coja estos cambios. En cuando a los parámetros dinámicos podemos cambiarlos en tiempo real sin parar la base de datos mediante la siguiente sentencia.
SQL> ALTER SYSTEM SET PARAMETRO = VALOR;
Este cambio pasa automáticamente a ser efectivo en la base de datos, aunque tenemos que tener en cuenta que la próxima vez que la base de datos sea iniciada lo que va a leer es el fichero de parámetros init.ora y si este cambio no se ha realizado en este fichero la base de datos obtendrá lo que en él ponga.
CAMBIOS EN EL SPFILE.ORA
Como hemos comentado este fichero lo podemos encontrar en las bases de datos a partir de la versión 9 y como también hemos comentado es un fichero no editable por lo que los cambios se realizan a través del comando ALTER SYSTEM añadiendo la cláusula SCOPE con una serie de valores que detallaremos a continuación con un ejemplo:
Vamos a cambiar el parámetro shared_pool_size a 150 Megas
SQL> ALTER SYSTEM set shared_pool_size= 150 SCOPE=spfile
En este caso hemos cambiado el parámetro y estos cambios se han recogido en el archivo spfile, por lo tanto tomarán su cambio cuando sea reiniciada la base de datos.
SQL> ALTER SYSTEM set shared_pool_size= 150 SCOPE=memory
En este caso se ha cambiado el parámetro y estos cambios se han recogido solamente en memoria, esto quiere decir que se hacen efectivos al momento (si el tipo de parámetro lo permite) pero este cambio no se ver reflejado en el archivo de parámetros por lo tanto cuando volvamos a reiniciar la base de datos tomará el valor que en este tenía ( el antiguo ).
SQL> ALTER SYSTEM set shared_pool_size= 150 SCOPE=both
En este caso el parámetro se cambia tanto en el spfile como en memoria
7. Pérdida del spfile
Como hemos comentado en un par de ocasiones el archivo spfile no es un archivo editable y si se edita con notepad y se vuelve a guardar lo mas probable es que se corrompa. En caso de perdida de este archivo es bueno tener un init.ora a partir del cual podemos recuperarlo o recrearlo. Si tenemos un init.ora la sentencia para hacer esto es la siguiente:
SQL> CREATE SPFILE [='spfile_name'] FROM PFILE [='Spfile_name'];