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:
Exemplo - v$recovery_file_dest.
Habilitar o banco para flashback logging.
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;Portanto, devemos setar o db_recovery_file_dest_size, depois o caminho do disco.
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
SQL> alter system set db_recovery_file_dest_size = 6g scope=both;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.
System altered.
SQL> alter system set db_recovery_file_dest = '/dsk1/app/FRA' scope=both;
System altered.
Exemplo - v$recovery_file_dest.
Próximo passo, enviar meus archives para Flash Recovery Area.
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.
SQL> alter system set log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;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 é:
System altered.
SQL> show parameter flashPortanto, retenção da flashback logging de 24 horas. Tempo em minutos. 24*60 = 1440.
NAME TYPE VALUE
------------------------------------ ----------- ----------------------------------------
db_flashback_retention_target integer 1440
Habilitar o banco para flashback logging.
SQL> connect / as sysdbaOps! É manutenção! O banco deve estar montado somente e logo depois devemos fazer backup.
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.
SQL> shutdown immediateSeu banco está pronto para flashback.
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.
Labels: how to