Ficheros de arranque init.ora y spfile.ora

E-mail Imprimir PDF

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'];

 

 

Comentarios   

 
-1 #1 Anónimo 20-10-2006 21:30
ALTER SYSTEM set shared_pool_size= 150 SCOPE=spfile ;

Ejecuto el siguiente comando y me sale este error:

ERROR en lÝnea 1:

ORA-32001: se ha solicitado la escritura en SPFILE, pero no se ha especificado

ning·n SPFILE al iniciar

Podrian ayudarme.......
 
 
0 #2 Anónimo 24-10-2006 10:29
Creo que lo que te puede estar pasanado es que no utilices spfile para iniciar la base de datos y tu base de datos haya sido iniciada mediante archivo init.ora

Asi que tendrías que realizar los cambios en el init.ora y reiniciar tu base de datos.

Otra opción es que te crees un archivo spfile e inicies la base de datos con ese fichero entonces ya puedes utilizar los comandos alter system set ..... scope memory.

para crear el spfile con un init.ora utiliza el siguiente comando

CREATE SPFILE [='spfile_name'] FROM PFILE [='Spfile_name'];
 
 
0 #3 Juan Carlos 04-05-2007 02:01
si tengo la siguiente respuesta despues de escribir

sql> show sga:

Database Buffers 3154116608

Variable Size 1711276032

Fixed Size 738072

Redo Buffers 52445184



Total System Global Area 4918575896

cua les son las variables y valores involucrados en el archivo init.ora ? si el blok size es de 8192 y algunos de los valores los listo a continuacion:

db_bl ock_size 8192

db_files 1024

hash_area_size

log_buffer 52428800

shared_poo l_size 500M

db_cache_size 3000M

large_pool_si ze 500M

java_pool_size 40M

sort_area_size 10485760

sort_area_ retained_size 65536
 
 
0 #4 Marcela 22-06-2007 19:11
Como podria cambiar el parametro Global_names y para q sirve?
 
 
0 #5 Dayan 03-09-2007 01:33
Quiero cambiar el parametro db_block_size y no me deja me manda un error, cree un spfile a partir de un pfile como dicen ustedes y di de baja e inicie con el spfile y trata de cambiar este parametro pero no quiere, me pueden decir porque, ayudenme porfavor.

Me manda este error:

Mi sentencia es

alter system set db_block_size=1024 socpe=spfile;

Mi error es:

alter system set db_block_size=1024 socpe=spfile

*

ERROR AT LINE 1:

ORA-32017: failure in updating SPFILE

ORA-32016: parameter "db_block_size" cannot be updated in SPFILE
 
 
+1 #6 JSL 19-12-2007 12:54
Hola:

Tengo una duda y es que no encuento mi archivo init.ora.

Tengo una base de datos que se llama "ORCLE" y teóricamente debería de tener en la ruta "D:oracleproduct10.1 .0db_1database" un archivo llamado initorcle.ora, No ?

Pues bien, no lo tengo y además si hago una busqueda en todo el PC no lo encuentro.

Alguien me puede ayudar ?

Muchas Gracias.
 
 
0 #7 GJ 03-01-2008 17:01
hola JSL, lo que sucede es que tu BD esta usando SPFILE y no el init, lo que tienes que hacer es bajar de nivel asi,

CREATE PFILE FROM SPFILE

aqui lo que haras es crear tu initORCLE.ora desde tu SPFILEORCLE.ORA, que si no me equivoco dede tener ese nombre

y cuando vuelvas a buscarlos aparece con la fecha y la hora que ejecutaste esa sentencia.

Espero te sirva.

GJ
 
 
0 #8 Ricardo 23-04-2008 20:28
Tengo un error...si me pueden dar una idea.

Instale oracle10g, en S.Operativo, Unix, tengo todos los parametros seteados, pero me da un error. de "ORA-01031: insufficient privileges", cuando le doy el startup nomount. Para luego crear la B.D. la forma en q procedo es el sgt. y me da el error:

$ sqlplus /nolog

SQL> conn sys/oracle as sysdba

Connected to an idle instance.

SQL> startup nomount

ORA-01031: insufficient privileges

ni me deja crear el Spfile,, consulto, sera q falta algo para el usuario sys o system,, para ingresar como sysdba, o en Unix, se le debe dar algun permiso especial al usuario oracle(del S. Operativo). o algun Grant... al usuario sys..
 
 
-1 #9 kingping 08-08-2008 00:40
UTL_FILE_DIR

como lo configuro que valores son los adecuados.
 
 
0 #10 PIPO 14-09-2009 08:14
CREATE SPFILE [='spfile_name'] FROM PFILE [='Spfile_name'];

ESTA MAL!!! ME DICE EL SQLPLUS QUE EL FROM NO ESTÁ DÓNDE DEBERÍA............. .
 
 
+2 #11 bien 28-09-2009 17:10
bien bien
 
 
+1 #12 Jacaes 06-10-2009 15:06
Muy bueno su articulo, donde puedo encontrar mas de esta categoria ? . GRACIAS
 
 
0 #13 omare 21-08-2010 07:31
tengo un problem, modifique el parametro processes a 10000 y ahora no arranca la db, aparece el error ora00064, como puedo cambiar el parametro si no se inicia la db?
 
 
0 #14 Moko 05-11-2010 07:37
Sino puedes levantar la instancia de la bd, deberias modificar la variable processes que cambiastes en el fichero de texto init.ora y guardar los cambios.

De esta forma ya deberias poder levantar la instancia de la bd.
 
 
+1 #15 booker 08-11-2010 17:03
como puedo saber que archivo de parametros estoy utilizando y en que ruta se encuentra
 
 
-1 #16 Santiago CZS 22-02-2011 12:47
Hola Buenos Días Amigo.

Quiero escribir un comentario para esta información escrita en esta página.

1.- Esta información no esta completa en los puntos 7 y 8.

Comenzare a explicar:

Init.ora.

Cuando inicias una BD con un archivo init.ora(pfile) puede hacer cambios solo a parámetros dinámicos.

Por ejemplo:

alter system set undo_retention = 100; (Si funcionará, ya que es un parametro diinamico y se cambiara solo en memoria)

alter system set processes = 50; (fallara ya que es un parametro estatico)

alter system set processes = 50 scope=both (fallara porque intentara escribir a un archivo spfile y los parametros dinamicos no se pueden cambiar en memoria).

alter system set processes = 50 scope=spfile (fallara porque intentara escribir a un archivo spfile pero si la instancia se inicio con un pfile estatisco)

alter system set processes = 50 scope=memory (fallara, ya que los parametros estaticos no se pueden cambiar en memoria).



Si utilizas un archivo init.ora(pfile - estatico) para iniciar tu instancia, y deseas cambiar un parametro estatico debes apagar la instancia, establecer el parametro en el archivo init.ora con su valor e iniciar la instacia. Listo.

spfile.ora

Cuando inicias una BD con un archivo spfile(dinamico) puede realizar varias combinaciones en cambios a parametros.

Por ejemplo:

alter system set processes = 50; (fallara porque es un parametro estatico y no se puede cambiar en memoria).

alter system set processes = 50 scope=both (fallara porque es un parametro estatico y no se puede cambiar en memoria).

alter system set processes = 50 scope=spfile (exito porque la instancia se inicio con spfile para el siguiente inicio tomara el valor para processes, el cambio se guardo en el spfile especificado en scope. un parametro estatico puede utiliza scope=spfile solamente)

alter system set undo_retention = 500; (exito modificara el parametro en memoria y en el spfile, esta parametro es dinamico. un parametro dinamico puede utiliza scope memory, spfile o both ya que se puede cambiar en todas partes)

Consejo: Cada vez que cambies un parametro primero identifica con que tipo de archivo inicias tu instancia y luego procede.

init.ora solo permite cambiar parametros dinamicos.

spfile.o ra permite cambiar parametros dinamicos y estaticos.

Recuerda la clausula scope que le dice al alter donde va a quedar el cambio. El scope por defecto es both(ambos)

Saludos .

Santiago CZS.
 
 
+1 #17 Eyashiel 11-03-2011 21:35
donde sonsigo el archivo init.ora esque lo ha borrado mi anrivirus

y ahora no puedo continuar instalado la base de datos de oracle 8
 

Haz login para dejar un comentario. Puedes hacer login con tu cuenta de:

Haz login con tu cuenta orasite

Haz login con tu cuenta de:

Errores Oracle más comunes