.comment-link {margin-left:.6em;}

Tuesday, January 31, 2006

Flashback Database (how-to)

Antes de mais nada, se for seguir esse HOW-TO! Por favor, faça um BACKUP do banco.

Para habilitar a Flash Recovery Area.

É necessário setar os parâmetros db_recovery_file_dest e db_recovery_file_dest_size. O size primeiro senão leva o seguinte erro:

SQL> alter system set db_recovery_file_dest = '/dsk1/app/FRA' scope=both;
alter system set db_recovery_file_dest = '/dsk1/app/FRA' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE
Portanto, devemos setar o db_recovery_file_dest_size, depois o caminho do disco.
SQL> alter system set db_recovery_file_dest_size = 6g scope=both;

System altered.

SQL> alter system set db_recovery_file_dest = '/dsk1/app/FRA' scope=both;

System altered.

Flash Recovery Area - setado! Uma pausa para conceituar o que é Flash Recovery Area: No 10g a Oracle pensou em uma forma de monitorar um repositório de arquivos. É uma forma de centralizar os arquivos de recuperação (backups). A monitoração é feita através do EM (Enterprise Manager) ou das views dinâmicas.

Exemplo - v$recovery_file_dest.

SQL> select name, space_limit as quota,
2 space_used as used,
3 space_reclaimable as reclaimable,
4 number_of_files as files
5 from v$recovery_file_dest
SQL> /

NAME QUOTA USED RECLAIMABLE FILES
------------------------------ ------------- ------------- ------------- -------------
/dsk1/app/FRA 6442450944 2715843072 0 73

1 row selected.
Próximo passo, enviar meus archives para Flash Recovery Area.
SQL> alter system set log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;

System altered.
Assim como na área de UNDO temos um tempo de retenção para as transações, no flashback de database é preciso marcar um tempo para que o banco guarde informações necessárias para eventual recuperação. O parâmetro é:
SQL> show parameter flash

NAME TYPE VALUE
------------------------------------ ----------- ----------------------------------------
db_flashback_retention_target integer 1440

Portanto, retenção da flashback logging de 24 horas. Tempo em minutos. 24*60 = 1440.

Habilitar o banco para flashback logging.

SQL> connect / as sysdba
Connected.
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

1 row selected.

SQL>
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38759: Database must be mounted by only one instance and not open.
Ops! É manutenção! O banco deve estar montado somente e logo depois devemos fazer backup.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size 1218968 bytes
Variable Size 109053544 bytes
Database Buffers 167772160 bytes
Redo Buffers 7168000 bytes
Database mounted.
SQL> alter database flashback on;

Database altered.

SQL> alter database open;

Database altered.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

1 row selected.
Seu banco está pronto para flashback.

Labels:


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?