O Oracle Flashback Query

Nós revisamos brevemente nesta funcionalidade de consulta pós flashback fornecidos pelo Gerente de DB Oracle desde a versão 9i.

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).

Execução gráfica do Oracle Flashback Query

A decisão nos permite ver os dados flashback query na tabela que foram excluídos ou modificados.Execução de uma consulta flashback para acessar dados de uma imagem de dados consistentes em um certo ponto, desta vez especificando o sistema ou o número de alteração do sistema (SCN). O banco de dados deve ser definido como Automatic Undo trabalho Management (AUM). Para esta revisão os seguintes parâmetros:
UNDO_MANAGEMENT auto =
undo_tablespace = UNDOTBS001 (tablespace que hospeda o segmento de undo)
UNDO_RETENTION = 3600 (tempo em segundos que mantivemos os dados no segmento de undo)
Devem ser tidas em conta em relação ao parâmetro se o tablespace UNDO UNDO_RETENTION não é grande o suficiente para manter todas as transações que o tempo, o gerenciador de banco vai substituir.Além disso, considere que, para executar a consulta flashback comando deve ter permissões no BDMS_FLASHBACK pacote. Para fazer isso:

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;

fecha_sistema
-------------------------
12-09-2011 12:05
sys> excluir t_facturas ONDE cod_cliente = '00125 ';
4 linhas excluídas
sys> commit;

  

Meia hora depois rodando:

sys> selecionar para char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dupla
fecha_sistema
------------------------- 12-09-2011 12:35

sys> exec dbms_flashback.enable_at_time (to_date ('12-09-2011 12:05, 'DD-MM-YYYY HH24: MI'));

sys> selecionar para char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dupla
fecha_sistema
-------------------------
12-09-2011 12:35

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

Abaixo estão algumas características que a Oracle fornece operações relacionadas com o Flashback Query:
  • 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.