Flashback Query Oracle

Nous passons en revue brièvement dans cette fonctionnalité de requête après flashback fournis par le gestionnaire Oracle 9i DB depuis la version.

Fondamentalement, il s'agit d'un type de SQL qui accède aux données qui existaient dans la base de données à un moment plus tôt, mais à l'époque l'exécution du SQL peut ne pas exister ou ont été altérés. Pour ce faire, Oracle utilise les données qui sont disponibles pendant un laps de temps UNDO. Ce segment, comme on le sait, les données stockées avant une série de modifications. Il est utilisé pour assurer la cohérence dans la lecture d'une consultation préalable à la confirmation des modifications (commit) et peut être utilisé dans une éventuelle reprise (rollback).

L'exécution graphique de requêtes Oracle Flashback

La décision nous permet de voir les données de requête flashback dans le tableau qui ont été supprimés ou modifiés.Exécution d'une requête flashback pour accéder aux données à partir d'un tableau de données cohérentes à un certain point, cette fois en spécifiant le système ou le numéro de changement de système (SCN). La base de données doit être réglé sur automatique des annulations de travail de gestion (AUM). Pour cet examen, les paramètres suivants:
UNDO_MANAGEMENT = auto
UNDO_TABLESPACE = UNDOTBS001 (tablespace qui héberge le segment défaire)
UNDO_RETENTION = 3600 (le temps en secondes que nous avons retenu les données dans le segment défaire)
Doivent être pris en considération à l'égard du paramètre si le tablespace UNDO UNDO_RETENTION n'est pas assez grand pour garder toutes les transactions ce temps, le gestionnaire de base de données va remplacer.Aussi, considérons que, pour exécuter la requête flashback commande doit avoir des autorisations sur le BDMS_FLASHBACK colis. Pour ce faire:

système> GRANT EXECUTE ON dbms_flashback d'utilisateur1;

Voici un exemple. Supposons que vous voulez pour vous renseigner sur une table qui contient cl facturessuivantes et que vous voulez accéder aux données des clients que nous avons précédemment supprimés:

système> sélectionnez en char (sysdate, 'dd-mm-aaaa HH24: MI') de deux fecha_sistema;

fecha_sistema
-------------------------
12-09-2011 12:05
système> supprimer de t_facturas OÙ cod_cliente = '00125 ';
4 lignes supprimées
système> commettre;

  

Une demi-heure plus tard en exécutant:

système> sélectionnez en char (sysdate, 'dd-mm-aaaa HH24: MI') de deux fecha_sistema
fecha_sistema
------------------------- 12-09-2011 12:35

système> exec dbms_flashback.enable_at_time (to_date ('12-09-2011 12:05, 'JJ-MM-AAAA HH24: MI'));

système> sélectionnez en char (sysdate, 'dd-mm-aaaa HH24: MI') de deux fecha_sistema
fecha_sistema
-------------------------
12-09-2011 12:35

système> exec dbms_flashback.enable_at_time (to_date ('12-09-2011 12:05, 'JJ-MM-AAAA HH24: MI'));

Procédure PL / SQL terminée avec succès.

système> select * from OÙ t_facturas cod_cliente = '00125 ';

... ...

... ...

... ...

... Et Hellip;

4 enregistrements sélectionnés.

système> execute dbms_flasback.disable;

système> SELECT COUNT (*) à partir t_facturas OÙ cod_cliente = '00125 ';

count (*)

------

0

Peut être obtenue en accédant au SCN changement même numéro:

système> dbms_flashback.get_system_change_number sélectionner du double;

GET_SYSTEM_CHANGE_NUMBER

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

1307125

système> exec dbms_flashback.enable_at_system_change_number (1307125);

Procédure PL / SQL terminée avec succès

 

Il est également possible d'utiliser la déclaration de sélectionner '...à partir de ... »:

système> select * from OÙ t_facturas cod_cliente = '00125 'TO_TIMESTAMP que d'horodatage ('12-09-2011 12:05', 'JJ-MM-AAAA HH24: MI');

système> select * from OÙ t_facturas cod_cliente = '00125 'comme des scn 1307125;

Gardez à l'esprit que, si la session est en mode Flashback Query, nous ne pouvons exécuter des instructions SELECT. Les états mise à jour (insertion, suppression et mise à jour) ne sont pas autorisés.

Dans le travail quotidien avec cette option est utile d'utiliser des tables temporaires pour travailler avec les données récupérées:

système> t_facturas_ant create tableque (SELECT * FROM WHERE = '00125 t_facturas cod_cliente 'TO_TIMESTAMP que d'horodatage ('12-09-2011 12:05,' JJ-MM-AAAA HH24: MI ');

Autres options Flashback Query

Voici quelques caractéristiques qui Oracle fournit les opérations liées à Flashback Query:
  • Query version Flashback: Accès à des changements historiques à une table.
  • Flashback Transaction Query: Accès à des changements historiques dans une opération particulière.
  • Tableau Flashback: L'accès aux données ci-dessus, mais pour une seule table.
  • Déposer Flashback: récupérer une table supprimée («Corbeille»).
  • Base de données Flashback: Permet de quitter le DB comme il était dans un temps passé.Similaire à restaurer une sauvegarde, mais avec des contraintes de temps du flashback processus, mais beaucoup plus rapide pour récupérer la copie de sauvegarde. Vous devez avoir activé le mode de flash-back et la zone de récupération flash.

Certaines de ces options exigent que le gestionnaire est "Enterprise Edition".

Il est, comme mentionné, une déclaration très utile avec de multiples options "rewind" et que nous pouvons prendre plus d'un pincement.