A partir de la versión 9i, Oracle introdujo el fichero de parámetros de arranque 'spfile' como mejora a los antiguos arranques con los 'init.ora', no obstante el uso de spfile es opcional aunque es recomendable su uso para Oracle 9i, Oracle 10g y por supuesto en Oracle 11g.
Las algunas ventajas del spfile sobre el init.ora son:
- Los ‘init.ora’ no se podían incluir en los backups realizados con RMAN, los 'spfile' si pueden ser incluidos.
- Con los ‘spfile’ se puede realizar el arranque de una instancia en remoto, mientras que con los ‘init.ora’ el fichero debe estar en el sistema que se realiza el arranque.
- Los ‘spfile’ son archivos binarios, mientras que los ‘init.ora’ son ficheros de texto, no obstante Unix/Linux podéis ver su contenido usando el comando 'strings'.
- Una de las mayores mejoras es que cada vez que cambiemos un parámetro con 'ALTER SYSTEM' podemos guarda el cambio en el 'spfile', esto no era posible con el 'init.ora', ejemplo:
ALTER SYSTEM SET open_cursors=500 SCOPE=spfile
Guardará el cambio solo en el 'spfile', requiere rearranque de la BBDD para que tomo efecto
No obstante podemos seguir si lo deseamos usando el 'init.ora' en lu lugar del 'spfile'.
Aunque usemos en nuestras base de datos el spfile conviene no olvidar el 'init.ora' pues es caso de que nuestra base de datos no arranque por algún error podemos arrancar desde un init.ora más menos estándar para solucionar el problema.
El spfile reside normalmente en $ORACLE_HOME/dbs pero podemos emplazarlo donde queramos, simplemente en el 'init.ora' hacemos referencia a la ruta y nombre del 'spfile'.
Para saber si una base datos ha sido arrancada con un init.ora o un spfile podemos verlo de dos maneras, mirando el contenido del parámetro spfile o consultado la vista V$SPPARAMETER, si la vista esta vacía el arranque se ha realizado con un init.ora sino habrá una row por cada parámetro.