You are on page 1of 6

Oracle, cambiar el directorio de los archives

Ya sabis que si tenemos la base de datos en modo archivelog (lo normal en produccin), y se llena el directorio, o los directorios dnde estn 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 cmo estn 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 ubicacin: SQL> alter system switch logfile; Nota: No se deben mover los archives generados en la antigua ubicacin a la nueva. RMAN ir a buscar los archiver al directorio donde se generaron. Lo mejor es que hubiramos salvado los archives antes del cambio de directorio.

Otro parmetro importante:


Tambin se debe modificar DB_RECOVERY_FILE_DEST. Este parmetro indica el directorio para el flash recovery area.

RESOLUCIN DE PROBLEMAS
Puede pasar que tengamos alguno de estos parmetros 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 dnde se encuentran los parmetros. Suele estar en $ORACLE_HOME/dbs. El SPFILE es un fichero binario que no podemos editar. Tiene otras ventajas como que podemos cambiar parmetros dinmicamente, el RMAN lo salva, etc. Si utilizas el SPFILE y Oracle no levanta porque antes tienes que cambiar un parmetro, entonces puedes hacer: 1.-Pasar el SPFILE a un fichero PFILE: SQL> create pfile='/opt/oracle/product/10.2/dbs/bkp_spfile.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 4.-Cambiar el destino del recovery SQL> alter system set db_recovery_file_dest='/datos/fra_archives' scope=both 5.- Cambiar format de archives logs SQL> ALTER SYSTEM SET log_archive_format='arch_%r_%t_%s.arc' scope=spfile; SQL>shutdown immediate; SQL>startup; 6.- Comprobando cambios; SQL> alter system switch logfile;

The following variables can be used in log_archive_format: %s Log sequence number %t Thread number %a Activation ID %d Database ID %r Resetlogs ID - will ensure unique names are constructed for the archived log files across multiple incarnations of the database. Using uppercase letters (for example, %S) will make the value fixed length and padded to the left with zeros: 00064

Podemos utilizar Flash Recovery Area junto con RMAN para dejar en manos de Oracle la gestion de los ficheros que se creen en esa zona. Oracle recomienda utilizar Flash Recovery Area unicamente para labores de backup. Debemos de poner la Flash recovery area en un path diferente de los datafiles. Los ficheros que pueden ser almacenados en la Flash Recovery Area se puden clasificar en dos tipos: permanentes y transitorios. Permanentes son las copias multiplexadas de los control files y de los online redo logs. Estos ficheros no se pueden borrar sin que la base de datos falle. Los ficheros transitorioes se borran automaticamente por Oracle una vez se conviertan en obsoletos. Archivos transitorios pueden ser los archive log, copias de datafiles, control files autobackups y backup pieces. Para saber la cuota de espacio destinada a Flash Recovery Area podemos consultar la vista: V$RECOVERY_FILE_DEST.
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

NAME

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

-----------------------------------------------------------------------------------------------------------------------------------/mydisk/rcva 256000 5368709120 28 109240320

Para habilitar Flash Recovery Area tenemos que habilitar estos dos parametros: DB_RECOVERY_FILE_DEST_SIZE: Indica la quota (bytes) de espacio para los ficheros que se alojan en la Flash Recovery Area.
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G SCOPE=BOTH SID='*';

DB_RECOVERY_FILE_DEST: Indica donde se encuentra la Flash Recovery Area.


SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/disk1/flash_recovery_area' SCOPE=BOTH SID='*';

El hecho de utilizar Flash Recovery Area tiene algunas implicaciones en los parametros de inicializacion: - Para indicar el destino de los archived redo log tendremos que utilizar los parametros LOG_ARCHIVE_DEST_n Para deshabilitar la Flash Recovery Area unicamente tendremos que dejar en blanco uno de estos parametros:
SQL> show parameter db_recovery

NAME

VALUE

-------------------------------- -----------------------------db_recovery_file_dest db_recovery_file_dest_size /flash_recovery_area 4G

SQL> alter system set db_recovery_file_dest=' ' scope=both sid='*';

Podemos cambiar la ubicacion de la Flash Recovery Area haciendo:


SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+disk1' SCOPE=BOTH SID='*';

Los nuevo ficheros se crearan en la nueva ubicacion, no es necesario que cambiemos los ficheros permanentes de la vieja ubicacion, y los ficheros transitorios se iran borrando segun se vayan quedando obsoletos. Para habilitar que los ficheros de las herramientas de Flashback se vayan generando en la nueva ubicacion es necesario hacer:
- Shutdown the Database - Startup mount the Database: SQL> startup mount; - Toggle the Flashback off: SQL> alter database flashback off; - Toggle the Flashback on:

SQL> alter database flashback on; - Open the Database: SQL> alter database open;

Si tuviesemos la necesidad de mover los ficheros permanentes y los backups set creados de la vieja ubicacion hariamos:
RMAN> BACKUP AS COPY ARCHIVELOG ALL DELETE INPUT; RMAN> BACKUP DEVICE TYPE DISK BACKUPSET ALL DELETE INPUT;

Para mover las copias de los datafiles:


RMAN> BACKUP AS COPY DATAFILECOPY <name> DELETE INPUT;

Para mover los controlfiles a la nueva ubicacion haremos, cambiamos el parametro de ubicacion de los control file y reiniciamos la base de datos dejandola en NOMOUNT. Luego ejecutamos:
RMAN> RESTORE CONTROLFILE FROM 'filename_of_old_control_file';

Para mover los redo log, tendremos que aadir un nuevo fichero en la nueva Flash Recovery Area y borrar los viejos.
SQL> alter database add logfile size 100M; SQL> alter database drop logfile 'name of the old redo log';

Oracle propone la siguiente frmula para calcular el espacio que deberiamos configurar para Flashback Recovery Area:
Quota= Backup de una copia de la base de datos + Tamao de un backup incremental Tamao de (n+1) dias de archived log + +

Tamao de (y+1) dias archived log para la base de datos de standby + Tamao del control file +

Tamao de los online redo log member

http://www.oraculus.es/sql.php?ent=72

You might also like