Flashback Query

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Flashback Query — ретроспективные запросы, функциональная возможность Oracle RDBMS, позволяющая запрашивать данные так, как если бы это было сделано в заданный момент времени в прошлом.

Существует 2 способа использования ретроспективных запросов:

  1. ключ AS OF в SELECT-запросе;
  2. пакет DBMS_FLASHBACK.

Пример «AS OF»:

SELECT  * FROM USERS AS OF TIMESTAMP
 TO_TIMESTAMP('01-JAN-07 10:00:00','DD-MON-YY HH24: MI: SS');

Пример DBMS_FLASHBACK:

DECLARE
 CURSOR c IS SELECT * FROM users;
 user c%ROWTYPE;
BEGIN
 DBMS_FLASHBACK.ENABLE_AT_TIME('01-JAN-07 10:00:00');
 OPEN c;
 DBMS_FLASHBACK.DISABLE;
 LOOP 
  FETCH c INTO user; 
  EXIT WHEN c%NOTFOUND;
 END LOOP; 
 CLOSE c;
END;

Для реализации возможности ретроспективных запросов Oracle RDBMS использует сегмент отката (то есть структуру данных, позволяющую сохранять данные о выполняемых изменениях для последующей отмены транзакций). Параметр UNDO_RETENTION конфигурационного файла init.ora определяет как долго данные о сделанных изменениях будут храниться в сегменте отката.

Возможность использования ретроспективных запросов Flashback Query стала доступна начиная с Oracle 10.1.

Ссылки[править | править вики-текст]