Oracle Flashback Query

Wir kurz in diesem Beitrag Flashback-Abfrage-Funktionalität von der Oracle DB-Manager seit der Version 9i zur Verfügung gestellt.

Grundsätzlich ist es eine Art von SQL, die Daten in der Datenbank zu einem früheren Zeitpunkt existiert, aber zu der Zeit läuft der sql möglicherweise nicht vorhanden oder verändert wurden zugreift. Um dies zu tun, verwendet Oracle die Daten, die verfügbar sind während eines Zeitabschnitts UNDO. In diesem Segment, wie bekannt ist, die Daten vor einer Reihe von Änderungen gespeichert. Es wird verwendet, um die Konsistenz in der Lektüre eine Konsultation vor der Bestätigung der Änderungen (Commit) zu gewährleisten und kann in einer möglichen Erholung (Rollback) verwendet werden.

Graphic Ausführung von Oracle Flashback Query

Das Urteil ermöglicht es uns, Flashback-Abfrage in der Tabelle, die gelöscht wurden oder verändert wird.Ausführen einer Flashback-Abfrage, um Daten aus einem Bild von konsistenten Daten an einem bestimmten Punkt, dieses Mal die Angabe, um das System oder die System Change Number (SCN) zugreifen. Die Datenbank muss auf Automatisches Undo-Management arbeiten (AUM) werden. Für diese Bewertung die folgenden Parameter:
UNDO_MANAGEMENT = auto
UNDO_TABLESPACE = UNDOTBS001 (Tablespace, dass das Segment rückgängig Hosts)
UNDO_RETENTION = 3600 (Zeit in Sekunden, die wir erhalten die Daten in das Segment rückgängig)
Muss Berücksichtigung im Hinblick auf die Parameter übernommen werden, wenn die UNDO_RETENTION UNDO Tablespace ist nicht groß genug, um alle Transaktionen, die Zeit, den Datenbank-Manager geht zu überschreiben zu halten.Bedenken Sie außerdem, dass, um den Befehl auszuführen Flashback-Abfrage müssen die Berechtigungen für das Paket BDMS_FLASHBACK haben. Um dies zu tun:

sys> Zuschuss auf dbms_flashback zu user1 auszuführen;

Hier ist ein Beispiel. Angenommen, Sie möchten über eine Tabelle, die Rechnungen cl enthält erkundigengende und wollen den Kunden Daten, die wir zuvor gelöscht haben Zugriff:

sys> wählen, um char (sysdate, 'dd-mm-yyyy hh24: mi') from dual fecha_sistema;

fecha_sistema
-------------------------
12-09-2011 12:05
sys> Löschen von t_facturas WHERE cod_cliente = '00125 ';
4 Zeilen gelöscht
sys> commit;

  

Eine halbe Stunde später mit dem Kommando:

sys> wählen, um char (sysdate, 'dd-mm-yyyy hh24: mi') from dual fecha_sistema
fecha_sistema
------------------------- 12-09-2011 12:35

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

sys> wählen, um char (sysdate, 'dd-mm-yyyy hh24: mi') from dual fecha_sistema
fecha_sistema
-------------------------
12-09-2011 12:35

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

PL / SQL-Prozedur erfolgreich abgeschlossen.

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

... ...

... ...

... ...

... & Hellip;

4 ausgewählte Datensätze.

sys> execute dbms_flasback.disable;

sys> select count (*) aus t_facturas WHERE cod_cliente = '00125 ';

count (*)

------

0

Kann durch den Zugriff auf die gleiche Änderungsnummer SCN gewonnen werden:

sys> dbms_flashback.get_system_change_number wählen from dual;

GET_SYSTEM_CHANGE_NUMBER

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

1307125

sys> exec dbms_flashback.enable_at_system_change_number (1307125);

PL / SQL-Prozedur erfolgreich abgeschlossen

 

Es ist auch möglich, die Aussage "Wählen Sie ...wie von ... ":

sys> select * from WHERE t_facturas cod_cliente = '00125 'TO_TIMESTAMP als der Zeitstempel ('12-09 bis 2011 00.05', 'DD-MM-YYYY HH24: MI');

sys> select * from WHERE t_facturas cod_cliente = '00125 'als der scn 1307125;

Beachten Sie, dass während der Sitzung in Flashback Query-Modus, können wir nur ausführen SELECT-Anweisungen. Die Update-Anweisungen (einfügen, löschen und aktualisieren) sind nicht erlaubt.

In der täglichen Arbeit mit dieser Option ist nützlich, um temporäre Tabellen verwenden, um mit den abgerufenen Daten zu arbeiten:

sys> create table t_facturas_antas (select * from WHERE t_facturas cod_cliente = '00125 'TO_TIMESTAMP als der Zeitstempel ('12-09 bis 2011 00.05,' DD-MM-YYYY HH24: MI ');

Andere Optionen Flashback Query

Im Folgenden sind einige Features, die Oracle bietet Operationen im Zusammenhang mit Flashback Query:
  • Flashback Version Query: Der Zugang zu historischen Änderungen an einer Tabelle.
  • Flashback Transaction Query: Der Zugang zu historischen Veränderungen in einer bestimmten Transaktion.
  • Flashback Table: Der Zugriff auf Daten vor, jedoch für eine einzelne Tabelle.
  • Flashback Drop: Abrufen eines gelöschten Tabelle ("Recycle Bin").
  • Flashback Database: Lets verlassen die DB, wie es in einer vergangenen Zeit war.Ähnlich wie ein Backup wiederherstellen, aber mit dem Zeitdruck der Prozesse Rückblende, aber viel schneller auf die Backup-Kopie zu erhalten. Sie müssen Flashback-Modus und die Flash Recovery-Bereich aktiviert haben.

Einige dieser Optionen erfordern, dass der Manager "Enterprise Edition" ist.

Es ist, wie erwähnt, eine sehr nützliche Anweisung mit mehreren Optionen "zurückspulen" und dass wir mehr als eine Prise zu nehmen.