O Oracle Flashback Query

Nós revisar brevemente nesta función de consulta pos flashback proporcionados polo Xerente de DB Oracle desde a versión 9i.

Basicamente é un tipo de SQL que accede datos que existían na base de datos nun momento anterior, pero á hora de executar o SQL pode non existir ou foron alteradas. Para iso, a Oracle usa os datos que están dispoñibles durante un segmento de tempo UNDO. Este segmento, como é sabido, os datos almacenados antes dunha serie de modificacións. Se usa para garantir a consistencia na lectura dunha consulta antes da confirmación do cambio (commit) e pode ser usado en unha posible recuperación (rollback).

Execución gráfica do Oracle Flashback Query

A decisión nos permite ver os datos flashback consulta na táboa que foron excluídos ou modificados.Execución dunha consulta flashback para acceder a datos dunha imaxe de datos consistentes en certo punto, esta vez especificando o sistema ou o número de modificación do sistema (SCN). A base de datos debe ser definido como Automatic Undo traballo Management (Aum). Para esta revisión os seguintes parámetros:
UNDO_MANAGEMENT auto =
undo_tablespace = UNDOTBS001 (tablespace que aloxa o segmento de undo)
UNDO_RETENTION = 3600 (tempo en segundos que mantivemos os datos no segmento de undo)
Hai que ter en conta en relación ao parámetro o tablespace UNDO UNDO_RETENTION non é grande abondo para manter todas as transaccións que o tempo, o xestor de bases vai substituír.Ademais, considera que, para realizar a consulta flashback mando debe ter permisos no BDMS_FLASHBACK paquete. Para iso:

sys> conceder executar DBMS_FLASHBACK para user1;

Aquí está un exemplo. Supoña que vostede queira saber máis sobre unha táboa que contén cl contastes e queres acceder aos datos do cliente, temos eliminado anteriormente:

sys> Compostos char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dual;

fecha_sistema
-------------------------
12-09-2011 12:05
sys> eliminar t_facturas ONDE cod_cliente = '00125 ';
4 liñas excluídas
sys> commit;

  

Media hora despois rodando:

sys> Compostos char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dobre
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> Compostos char (sysdate, 'dd-mm-yyyy hh24: mi') de fecha_sistema dobre
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 Feito con éxito.

sys> select * from ONDE t_facturas cod_cliente = '00125 ';

... ...

... ...

... ...

... E Hellop;

4 rexistros seleccionados.

sys> executa dbms_flasback.disable;

sys> select count (*) from t_facturas ONDE cod_cliente = '00125 ';

count (*)

------

0

Poden obterse acceder ao mesmo número SCN cambio:

sys> dbms_flashback.get_system_change_number seleccionar dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

1307125

sys> exec dbms_flashback.enable_at_system_change_number (1307125);

PL / SQL Feito con éxito

 

Tamén se pode usar seleccione a instrución '...a partir de ... ":

sys> select * from ONDE t_facturas cod_cliente = '00125 'TO_TIMESTAMP partir timestamp ('12-09-2011 12:05', 'DD-MM-YYYY HH24: MI');

sys> select * from ONDE t_facturas cod_cliente = '00125 'como de SCN 1307125;

Teña presente que mentres que a sesión está en modo de Flashback Query, só podemos executar instrucións SELECT. As instrucións de actualización (insert, delete e update) Non se admiten.

No traballo diario con esta opción é útil usar táboas temporais para traballar cos datos recuperados:

sys> t_facturas_ant crear táboacomo (select * from ONDE t_facturas cod_cliente = '00125 'TO_TIMESTAMP partir timestamp ('12-09-2011 12:05,' DD-MM-YYYY HH24: MI ');

Flashback Query outras opcións

Abaixo amósanse algunhas características que a Oracle ofrece operacións relacionadas co Flashback Query:
  • Flashback Version Query: Acceso a cambios históricos nunha táboa.
  • Flashback Transaction Query: Acceso a cambios históricos nunha transacción particular.
  • Táboa Flashback: O acceso aos datos anteriores, pero para unha única táboa.
  • Gota Flashback: Solicitar unha táboa excluída ('Lixo').
  • Base de Datos Flashback: Permite saír do DB como era nun tempo pasado.Semellante ao restaurar unha copia de seguridade, pero coas limitacións de tempo do flashback procesos, pero moito máis rápido para recuperar a copia de copia de seguridade. Ten que ter activado o modo flashback ea área de recuperación flash.

Algunhas destas opcións requiren que o xestor é "Enterprise Edition".

É, como se mencionou, unha declaración moi útil con varias opcións "Rewind" e que pode levar máis dun beliscão.