En este post, quiero mostrar la diferencia entre tener una base de datos con Pfile contra una que tiene Spfile.
Para iniciar, definamos lo que es cada
uno de los términos. Ambos se refieren a un archivo, este archivo, es el
que define el comportamiento de la base de datos por medio de
parámetros de la misma.
Pfile
El nombre viene de Parameter File y es un archivo de texto y vive en el sistema de archivos, específicamente en el:
ORACLE_HOME\database (windows) ORACLE_HOME/dbs (linux o unix)
Este archivo cuyo formato es initSID.ora,
es leído cuando se levanta la instancia de la base de datos y con base
en él, se conforma el comportamiento de la misma. Los parámetros de la
base de datos pueden ser modificados en dicho archivo y serán tomados en
cuenta la siguiente vez que se levante la base de datos. Para
modificarlo, basta con que se use un editor común de texto.
Spfile
El nombre proviene de Server Parameter File,
y es un archivo binario asociado a la base de datos. La enorme
diferencia, estriba en que al estar levantada la base, se pueden
modificar varios parámetros de la misma dinámicamente sin tener que
darla de baja.
Esto sin embargo, aunque funciona para la
mayoría de parámetros, no lo hace para todos, pero con poder modificar
esa mayoría, basta para poder realizar ajustes a la base de datos sin
problema.
¿Cómo interactuar entre ambos tipos?
Después, conectándonos como Sysdba, para
saber antes si tenemos nuestra base de datos como Spfile, o no, tenemos
que mostrar el valor de dicho parámetro con show parameter como se indica en el ejemplo siguiente:
SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string SQL>
Si el valor está vacío, implica que
nuestra base de datos está con Pfile. Si se observa un valor, significa
lo contrario, con lo cual, tendremos nuestra base de datos como Spfile.
Para hacer que nuestra base de datos que está como Pfile, se base ahora en un Spfile, se tiene que usar el comando:
create spfile from pfile;
con el cual, se crea una copia binaria
del Pfile para que la base de datos lo tome la siguiente vez que sea
levantada como se puede ver en el siguiente ejemplo:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> create spfile from pfile;
File created.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
E:\oracle\product\10.2.0\BIN>cd ..\database
E:\oracle\product\10.2.0\database>dir *pfile*
El volumen de la unidad E es MetalliOra
El número de serie del volumen es: D0FD-FE0C
Directorio de E:\oracle\product\10.2.0\database
18/03/2009 06:57 p.m. 2,560 SPFILELAB.ORA
1 archivos 2,560 bytes
0 dirs 19,240,804,352 bytes libres
E:\oracle\product\10.2.0\database>
Después de hacer esto, se reinicia
la base de datos y nada más por la existencia del Spfile, ya se habrá
dado de alta con los parámetros del mismo:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 666894336 bytes
Fixed Size 1298472 bytes
Variable Size 448794584 bytes
Database Buffers 209715200 bytes
Redo Buffers 7086080 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DATAB
ASE\SPFILELAB.ORA
Si después de tener una base de datos
basada en un Spfile, se desea regresar a un Pfile, se tienen que seguir
los pasos enumerados a continuación:
-
Verificar que se tiene un archivo initSID.ora
-
Si no se tiene el archivo, entonces, crear uno en base al spfile con el comando: create pfile from spfile
-
Arreglar los parametros en el archivo generado (initSID.ora).
-
Borrar el spfile.
-
Reiniciar la base de datos.
Ejemplo:
SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string E:\ORACLE\PRODUCT\10.2.0\DATAB ASE\SPFILELAB.ORA SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options E:\oracle\product\10.2.0\BIN>cd ..\database E:\oracle\product\10.2.0\database>dir init* El volumen de la unidad E es MetalliOra El número de serie del volumen es: D0FD-FE0C Directorio de E:\oracle\product\10.2.0\database 24/01/2009 03:11 p.m. 946 initlab.ora 1 archivos 946 bytes 0 dirs 19,240,779,776 bytes libres E:\oracle\product\10.2.0\database>ren initlab.ora tempinitlab.ora E:\oracle\product\10.2.0\database>dir init* El volumen de la unidad E es MetalliOra El número de serie del volumen es: D0FD-FE0C Directorio de E:\oracle\product\10.2.0\database No se encuentra el archivo E:\oracle\product\10.2.0\database>cd ..\bin E:\oracle\product\10.2.0\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on MiÚ Mar 18 19:14:51 2009 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create pfile from spfile; File created. SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options E:\oracle\product\10.2.0\BIN>cd ..\database E:\oracle\product\10.2.0\database>dir init* El volumen de la unidad E es MetalliOra El número de serie del volumen es: D0FD-FE0C Directorio de E:\oracle\product\10.2.0\database 18/03/2009 07:14 p.m. 951 INITlab.ORA 1 archivos 951 bytes 0 dirs 19,240,775,680 bytes libres E:\oracle\product\10.2.0\database>del spfilelab.ora E:\oracle\product\10.2.0\database>cd ..\bin E:\oracle\product\10.2.0\BIN>sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on MiÚ Mar 18 19:18:27 2009 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string E:\ORACLE\PRODUCT\10.2.0\DATAB ASE\SPFILELAB.ORA SQL> startup force ORACLE instance started. Total System Global Area 666894336 bytes Fixed Size 1298472 bytes Variable Size 448794584 bytes Database Buffers 209715200 bytes Redo Buffers 7086080 bytes Database mounted. Database opened. SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string
En este momento, ya la base de datos se encuentra basada en el Pfile.
¿Qué contiene un Pfile y un Spfile?
Básicamente, los parámetros en
cuestión que modelarán la base de datos, en el caso del Spfile, tiene
caracteres binarios entendibles para Oracle aunque ilegibles para
nosotros, más los parámetros que se están definiendo. Los parámetros que
no son incluidos en dichos archivos, toman su valor por default al
momento de levantar la base de datos. Aquí incluyo un par de imágenes
con la muestra de ambos archivos abiertos en el Notepad++.
- Pfile
- Spfile
Espero haya sido de utilidad el presente
post y en base a él, sea más claro el cómo funciona un archivo de
parámetros para la base de datos Oracle.
FUENTE: Oracle
No hay comentarios:
Publicar un comentario