lunes, marzo 21, 2011

Oracle, cambiar el directorio de los archives

Modificado el 27/03/2011.

Ya sabéis que si tenemos la base de datos en modo archivelog (lo normal en producción), y se llena el directorio, o los directorios dónde están los archives, la base de datos se para, ya que Oracle no tiene forma de guardar los movimientos realizados sobre la base de datos.

Vamos a cambiar el directorio de archives con la base de datos abierta:

Para ver cómo están definidos los directorios actuales:

Entramos en SQLPLUS:

Vamos a ver
$sqlplus "/as sysdba"

SQL>archive log list;

SQL> show parameter archive

Para cambiar los directorios:

SQL> alter system set log_archive_dest_1='LOCATION=/oradata/archives' scope=both;

Para forzar la escritura de un archive log y ver que se escribe en la nueva ubicación:

SQL> alter system archive log

Nota: No se deben mover los archives generados en la antigua ubicación a la nueva. RMAN irá a buscar los archiver al directorio donde se generaron. Lo mejor es que hubiéramos salvado los archives antes del cambio de directorio.


Otro parámetro importante:

También se debe modificar DB_RECOVERY_FILE_DEST.
Este parámetro indica el directorio para el flash recovery area.


RESOLUCIÓN DE PROBLEMAS


Puede pasar que tengamos alguno de estos parámetros tengan puesto un directorio que realmente no existe. Entonces tendremos un problema porque la base de datos no va a levantar.

Lo que tenemos que hacer es saber si utilizamos el PFILE o el SPFILE en nuestra base de datos.

El PFILE es un fichero de texto editable dónde se encuentran los parámetros. Suele estar en $ORACLE_HOME/dbs.

El SPFILE es un fichero binario que no podemos editar. Tiene otras ventajas como que podemos cambiar parámetros dinámicamente, el RMAN lo salva, etc.

Si utilizas el SPFILE y Oracle no levanta porque antes tienes que cambiar un parámetro, entonces puedes hacer:

1.-Pasar el SPFILE a un fichero PFILE:
SQL> create pfile=/path/to/backup.ora from spfile;ç

2.-Modificar el PFILE con un editor de texto.

3.-Pasar el PFILE a SPFILE:
SQL> create spfile from pfile=/path/to/backup.ora

Saludos.

1 comentario:

Unknown dijo...

Hola, podría decirse que al llenarse el archive destination la base de datos queda en estado down?