O Oracle Flashback Query
Basicamente é um tipo de sql que acessa dados que existiam no banco de dados em um momento anterior, mas no momento de executar o sql pode não existir ou foram alteradas. Para fazer isso, a Oracle usa os dados que estão disponíveis durante um segmento de tempo UNDO. Este segmento, como é sabido, os dados armazenados antes de uma série de modificações. Ele é usado para garantir a consistência na leitura de uma consulta antes da confirmação das mudanças (commit) e pode ser usado em uma possível recuperação (rollback).
sys> conceder executar em DBMS_FLASHBACK para user1;
Aqui está um exemplo. Suponha que você queira saber mais sobre uma tabela que contém cl contastes e quiser acessar os dados do cliente, temos excluído anteriormente:
sys> selecionar para char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dual;
Meia hora depois rodando:
sys> exec dbms_flashback.enable_at_time (to_date ('12-09-2011 12:05, 'DD-MM-YYYY HH24: MI'));
sys> exec dbms_flashback.enable_at_time (to_date ('12-09-2011 12:05, 'DD-MM-YYYY HH24: MI'));
PL / SQL concluído com sucesso.
sys> select * from ONDE t_facturas cod_cliente = '00125 ';
... ...
... ...
... ...
... E Hellip;
4 registros selecionados.
sys> execute dbms_flasback.disable;
sys> select count (*) from t_facturas ONDE cod_cliente = '00125 ';
count (*)
------
0
Podem ser obtidas acessando o mesmo número SCN mudança:
sys> dbms_flashback.get_system_change_number selecionar dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1307125
sys> exec dbms_flashback.enable_at_system_change_number (1307125);
PL / SQL concluído com êxito
Também é possível usar selecione a instrução '...a partir de ... ":
sys> select * from ONDE t_facturas cod_cliente = '00125 'TO_TIMESTAMP partir de timestamp ('12-09-2011 12:05', 'DD-MM-YYYY HH24: MI');
sys> select * from ONDE t_facturas cod_cliente = '00125 'como de scn 1307125;
Tenha em mente que enquanto a sessão está em modo de Flashback Query, só podemos executar instruções SELECT. As instruções de atualização (insert, delete e update) não são permitidos.
No trabalho diário com esta opção é útil usar tabelas temporárias para trabalhar com os dados recuperados:
sys> t_facturas_ant criar tabelacomo (select * from ONDE t_facturas cod_cliente = '00125 'TO_TIMESTAMP partir de timestamp ('12-09-2011 12:05,' DD-MM-YYYY HH24: MI ');
Flashback Query outras opções
- Flashback Version Query: Acesso a mudanças históricas em uma tabela.
- Flashback Transaction Query: Acesso a mudanças históricas em uma transação particular.
- Tabela Flashback: O acesso aos dados acima, mas para uma única tabela.
- Gota Flashback: Recuperar uma tabela excluída ('Lixeira').
- Banco de Dados Flashback: Permite deixar o DB como era em um tempo passado.Semelhante ao restaurar um backup, mas com as limitações de tempo do flashback processos, mas muito mais rápido para recuperar a cópia de backup. Você deve ter habilitado o modo flashback ea área de recuperação flash.
Algumas dessas opções requerem que o gestor é "Enterprise Edition".
É, como mencionado, uma declaração muito útil com várias opções "rewind" e que pode demorar mais de um beliscão.