Flashback oracle что это
Flashback Queries в Oracle
Flashback Queries (ретроспективные запросы) – это сравнительно старая возможность СУБД Oracle, позволяющая восстанавливать данных из сегмента отката. Впервые она появилась в версии 9iR1 и в дальнейшем только совершенствовалась.
Начну рассказ с полезного примера. Представим ситуацию, с которой я сталкивался не раз: во время разработки хранимого кода теряется свежая версия пакета, которая еще не попала в систему управления версиями. Попробуем достать исходный код из словаря, используя ретроспективные запросы.
Для примера создадим функцию, которая возвращает имя пользователя в БД:
SQL> create or replace function myfunc return varchar2
2 is
3 begin
4 return user;
5 end myfunc;
6 /
Меняем функцию, теперь она возвращает имя пользователя в операционной системе:
SQL> create or replace function myfunc return varchar2
2 is
3 begin
4 return sys_context(‘USERENV’,’OS_USER’);
5 end myfunc;
6 /
Чтобы вернуться к первому варианту функции, выполним запрос (необходимы административные привилегии):
Второй вариант отката с помощью пакета DBMS_FLASHBACK:
SQL> select text from all_source where type = ‘FUNCTION’ and name = ‘MYFUNC’ order by line;
TEXT
—————————————————-
function myfunc return varchar2
is
begin
return sys_context(‘USERENV’,’OS_USER’);
end myfunc;
SQL> select dbms_flashback.get_system_change_number from dual;
SQL> exec dbms_flashback.enable_at_system_change_number(1060120);
PL/SQL procedure successfully completed
SQL> select text from all_source where type = ‘FUNCTION’ and name = ‘MYFUNC’ order by line;
SQL> exec dbms_flashback.disable;
PL/SQL procedure successfully completed
Для работы ретроспективных запросов необходимо установить параметр инициализации UNDO_MANAGEMENT=AUTO. Кроме того, на возможность отката влияют размер табличного пространства UNDO и параметр UNDO_RETENTION (в секундах).
Инструкция FLASHBACK TABLE
Позволяет восстанавливать таблицы до состояния на заданный момент времени с помощью одной инструкции.
Восстанавливает табличные данные вместе со связанными индексами и ограничениями.
Позволяет возвращать таблицу и ее содержимое в состояние, существовавшее на определенный момент времени, или к изменению системы, определенному номером SCN.
Функция Oracle «Flashback Table» позволяет восстанавливать таблицы на заданный момент времени с помощью одной инструкции. Если база данных находится в интерактивном режиме, можно восстановить табличные данные вместе со связанными индексами и константами, отменяя изменения только в указанных таблицах.
Функция Flashback Table сходна со средством автоматического восстановления. Например, если пользователь случайно удалил из таблицы важные строки, а затем захотел восстановить удаленные строки, можно воспользоваться инструкцией FLASHBACK TABLE для восстановления таблицы на момент времени до удаления и просмотреть пропавшие строки в таблице.
При использовании инструкции FLASHBACK TABLE можно вернуть таблицу и ее содержимое в состояние на конкретный момент времени или к изменению системы с номером SCN.
Синтаксис FLASHBACK TABLE
Средство восстановления случайных изменений таблиц:
восстанавливает таблицу до состояния, существовавшего в более ранний момент времени;
преимущества: простота использования, доступность и быстрое выполнение;
выполняется на месте.
FLASHBACK TABLE[schema.]table[, [ schema.]table ]. TO < TIMESTAMP | SCN >expr [ < ENABLE | DISABLE >TRIGGERS ]; |
Средство автоматического восстановления
Команда FLASHBACK TABLE является средством автоматического восстановления данных в таблице вместе со связанными атрибутами, такими как индексы и представления. Восстановление выполняется в базе данных, находящейся в интерактивном режиме, путем отката назад только последующих изменений заданной таблицы. По сравнению с традицион- ными механизмами восстановления эта функция обладает значительными преимуществами, такими как простота использования, доступность и более быстрое восстановление. Она также устраняет для администратора базы данных необходимость поиска и восстановления свойств приложения. Функция Flashback table не предназначена для восстановления физических повреждений данных, обусловленных плохим состоянием диска.
Использование инструкции FLASHBACK TABLE
Синтаксис и примеры
Корзина является фактически таблицей словаря данных, содержащей сведения об удаленных объектах. Удаленные таблицы и все связанные объекты, такие как индексы, ограничения, вложенные таблицы и так далее, не удаляются и по-прежнему занимают место на диске. Они продолжают учитываться в дисковых квотах пользователя, пока специально не очищаются из корзины или пока не возникнет ситуация, когда они должны быть очищены базой данных из- за ограничений по месту, занимаемому таблицами.
SELECT * FROM RECYCLEBIN ;
Когда удаляют пользователя, все объекты, принадлежащие этому пользователю, не помещаются в корзину, а все объекты в корзине очищаются.
Корзину можно очистить с помощью следующей инструкции:
Flashback Transaction Query и Flashback Table в Oracle
Представление FLASHBACK_TRANSACTION_QUERY позволяет идентифицировать транзакцию или транзакции, отвечающие за определенные изменения данных таблицы, которые произошли за указанный интервал времени. Flashback Transaction Query просто опрашивает представление FLASHBACK_TRANSACTION_QUERY и предоставляет информацию о транзакциях, включая операторы SQL, необходимые для отмены изменений, проведенных либо одиночной транзакцией, либо набором транзакций за указанный период времени. Это средство позволяет не только исправлять логические ошибки, но также проводить аудит транзакций в базе данных.
Flashback Transaction Query получает всю информацию о транзакциях из сегментов отмены. Поэтому значение, установленное для параметра UNDO_RETENTION, определяет, насколько глубоко в прошлое можно вернуться, чтобы получить данные отмены.
В случае применения инструмента Oracle LogMiner для отмены SQL-операторов Oracle приходится последовательно читать файлы журналов повторного выполнения для получения необходимой информации. Средство Flashback Transaction Query позволяет использовать индексированный путь доступа для прямого получения требуемых данных отмены, вместо прохода по всему файлу журнала повторного выполнения. Можно также отменить отдельную транзакцию или набор транзакций за определенный период времени.
Использование средства Flashback Transaction Query
Для опроса представления FLASHBACK_TRANSACTION_QUERY понадобится системная привилегия SELECT ANY TRANSACTION. Это представление содержит столбцы, позволяющие идентифицировать временную метку транзакции, пользователя, выполнившего транзакцию, тип операции, выполненной в процессе транзакции, а также сегменты отмены, необходимые для извлечения исходной строки. В листинге ниже показана структура представления FLASHBACK_TRANSACTION_QUERY.
Представление FLASHBACK_TRANSACTION_QUERY включает следующие столбцы.
На заметку! Если в столбце OPERATION находится значение UNKNOWN, это значит, что в табличном пространстве отмены недостаточно информации, чтобы корректно идентифицировать точный тип операции транзакции.
В случае если любая из таблиц, участвующих в операции Flashback Transaction Query, содержит связанные строки, или если используются кластеризованные таблицы,перед применением Flashback Transaction Query в базе данных следует включить дополнительное протоколирование. Это делается с помощью следующего оператора SQL:
Приведенный ниже запрос отобразит все транзакции, как зафиксированные, так и активные, во всех сегментах отмены:
Запрос в листинге ниже показывает, как определить операцию, которая отменит транзакцию, и конкретный оператор SQL, который выполнит такую отмену:
Столбец OPERATION в листинге выше показывает, что за период времени, указанный в запросе, было выполнено две вставки. Столбец UNDO_SQL показывает точный оператор SQL, который потребуется выполнить для отмены изменений — эту информацию запрос извлекает из сегментов отмены. В этом простом примере мы видим только два оператора delete, которые вы должны выполнить, если захотите отменить вставки, показанные запросом. Однако транзакции обычно содержат несколько операторов DML, и в этом случае нужно применить отмену изменений в той последовательности, в которой это вернул запрос, чтобы корректно восстановить данные в их исходное состояние.
Совет. Если вы собираетесь пользоваться запросами Oracle Flashback Query или Oracle Flashback Transaction Query для исправления критичных ошибок данных, рассмотрите применение установки RETENTION_GARANTEE для табличного пространства отмены. Это гарантирует, что база данных сохранит необходимые не устаревшие данные отмены во всех сегментах отмены.
Соображения по поводу Flashback Transaction Query
Относительно Flashback Transaction Query необходимо принимать во внимание следующие соображения.
Совместное использование Flashback Transaction Query и Flashback Versions Query
Средство Flashback Versions Query позволяет извлекать различные версии строки, вместе с их уникальными идентификаторами, временными метками версии строки, номерами SCN и т.п. Оно показывает, что было в строке, и что случилось с ней. Средство Flashback Transactions Query, с другой стороны, не только идентифицирует тип операции, выполненный с каждой версией строки, но также предоставляет код SQL, необходимый для возврата ее в оригинальное состояние. Оно показывает, как вернуться к предыдущей версии строки.
Возможности этих двух средств можно комбинировать, используя их последовательно для проведения аудита и связанных с ним действий. Рассмотрим пример, демонстрирующий, как комбинировать средства Flashback Versions Query и Flashback Transactions Query для отмены нежелательных изменений в данных.
Для начала воспользуемся Flashback Versions Query для идентификации всех версий строки в определенной таблице, которые изменились за определенный период времени, как показано в листинге ниже (это идентично первому листингу в данной статье).
Предположим, что в листинге выше идентифицирована вторая строка, которая показывает операцию удаления (D). По ошибке один из пользователей неправильно удалил строку. Все, что потребуется сделать, чтобы получить корректный SQL-оператор для отмены этого удаления — это взять идентификатор транзакции (XID) из этого результата Flashback Versions Query и найти его в представлении FLASHBACK_TRANSACTION_QUERY.В листинге ниже показан запрос, который нужно выполнить.
Запрос из листинга выше дает точный оператор SQL, необходимый для отмены операции удавления, которая выполнена транзакцией с идентификатором XID, равным 0020030002D. Как видите, Flashback Versions Query и Flashback Transaction Query представляют собой взаимодополняющие средства. Их можно использовать вместе не только для отмены логических ошибок данных, но также для проведения аудита транзакций в базе данных. С помощью этих двух средств можно точно выяснить, как определенная строка получила определенный набор значений, и затем при необходимости извлечь операторы SQL, необходимые для отмены этих изменений.
Средство Flashback Table
Средство Oracle Flashback Table позволяет восстанавливать таблицу по состоянию на определенный момент времени в прошлом. Это средство полагается на информацию отмены из сегментов отмены базы данных для выполнения восстановления к моменту времени, без восстановления каких-либо файлов данных или применения каких-то архивных файлов журналов повторного выполнения, что требуется при традиционном восстановлении базы к конкретному моменту времени. Средство Flashback Table можно использовать для отката изменений к прошедшему моменту времени, определенному временной меткой или номером SCN.
Поскольку для возврата состояния таблицы (вместо восстановления ваших файлов резервных копий) вы полагаетесь на данные отмены, переводить базу данных или какие-то ее табличные пространства в автономное (отключенное) состояние на период выполнения операции Flashback Table не потребуется. Oracle устанавливает монопольные блокировки DML на восстанавливаемую таблицу или таблицы, но эти таблицы остаются в онлайновом режиме.
На заметку! В Oracle Database 11g есть два средства Flashback, относящиеся к таблицам в целом. Первое — Flashback Table — позволяет вернуть таблицу к состоянию на определенный момент времени. Это средство целиком зависит от доступности необходимых данных отмены, и обсуждается в настоящей статье. Второе средство — Flashback Drop (FLASHBACK TABLE имя_таблицы TO BEFORE DROP) — позволяет извлечь таблицу, которая вообще была удалена. Это средство полезно при восстановлении базы к моменту времени и полагается в этом на корзину (Recycle Bin). Средство Flashback Drop я планирую рассмотреть в будущих статьях моего блога, посвященных восстановлению баз данных Oracle Database.
Как работает средство Flashback Table
Flashback Table использует информацию отмены для восстановления строк данных в блоках таблиц, измененных операторами DML вроде INSERT, UPDATE и DELETE. Давайте последовательно рассмотрим шаги операции Flashback Table.
На заметку! Объекты пользователя SYS восстановить не удастся.
Первым делом следует убедиться, что пользователь, выполняющий операцию Flashback Table, имеет все привилегии, которые могут быть либо FLASHBACK ANY TABLE,либо более специфичная объектная привилегия FLASHBACK на необходимой таблице. Пользователь должен также иметь на таблице привилегии SELECT, INSERT, DELETE и ALTER.
Операции ретроспективы (flashback) не предохраняют ROWID-идентификаторы Oracle, когда они восстанавливают строки в измененных блоках таблицы, поскольку при своей работе выполняют операции DML. Эти операции DML изменяют ROWID-идентификаторы затронутых строк, поэтому вы должны гарантировать разрешение перемещения строк в таблицах с использованием средства Flashback Table:
Разрешив перемещение строк в таблице, вы готовы выполнить ретроспективу таблицы на любой момент времени или к любому номеру SCN в прошлом, при условии наличия необходимой информации в табличном пространстве отмены.
Прежде чем применять средство Flashback Table, ознакомьтесь с его полным синтаксисом:
В этой статье будет показана только часть FLASHBACK TABLE. TO SCN | TIMESTAMP этого оператора FLASHBACK TABLE. В последней строке BEFORE DROP ссылается на средство FLASHBACK DROP, которое будет раскрыто в моих следующих статьях в блоге при обсуждении приемов восстановления баз данных Oracle.
Вот пример, показывающий, как выполнить ретроспективу таблицы к прошлому номеру SCN:
Совет. По завершении операции Flashback Table все индексы, относящиеся к таблицам в списке Flashback Table, также будут возвращены к состоянию на момент времени, к которому возвращается таблица. Однако статистика оптимизатора будет отражать текущие данные в таблице.
Можно также специфицировать время, задавая временную метку вместо номера SCN:
Эта команда FLASHBACK TABLE восстанавливает таблицу persons к состоянию на 7:00 30 января 2008 г.
Возврат таблицы на один день назад осуществляется с помощью следующего оператора:
Ретроспективу можно выполнить для более одной таблицы за раз, как показано в следующем примере (сначала необходимо удостовериться, что перемещение строк в таблице разрешено):
Операция Flashback Table выполняется “по месту”, в онлайновом режиме, и потому не требует перевода файлов данных или табличных пространств в автономное состояние, в отличие от традиционного восстановления к определенному моменту времени. СУБД Oracle Database по умолчанию отключает все связанные триггеры и заново включает их по завершении восстановления таблицы, хотя это поведение легко изменить, добавив конструкцию ENABLE TRIGGERS к оператору FLASHBACK TABLE:
В случае отсутствия достаточных данных отмены для возврата таблицы к старому состоянию возникает ошибка, показанная в листинге ниже, и это означает, что часть данных отмены была перезаписана. К сожалению, средство Flashback Table не поможет в этом случае, поскольку оно полностью полагается на присутствие необходимой информации отмены. Единственное решение в этом случае состоит в использовании табличного пространства отмены большего размера или включении средства гарантированного сохранения данных отмены.
Отмена операции Flashback Table
Если окажется, что результаты Flashback Table не удовлетворяют, можно снова выдать оператор FLASHBACK TABLE для возврата таблицы к состоянию, в котором она пребывала перед первым вызовом FLASHBACK TABLE.
Перед запуском операции Flashback Table важно всегда запоминать текущий номер SCN, чтобы при необходимости можно было отменить операцию повторным вызовом FLASHBACK TABLE. TO SCN. Текущий номер SCN базы данных отображается с помощью следующего запроса:
Ограничения средства Flashback Table
Со средством Flashback Table связано несколько ограничений, важнейшие из которых перечислены ниже.
На заметку! Вся операция ретроспективы выполняется как одна транзакция
12 Using Oracle Flashback Technology
This chapter explains how to use Oracle Flashback Technology in database applications.
Overview of Oracle Flashback Technology
Oracle Flashback Technology is a group of Oracle Database features that let you view past states of database objects or to return database objects to a previous state without using point-in-time media recovery.
With flashback features, you can:
Perform queries that return past data
Perform queries that return metadata that shows a detailed history of changes to the database
Recover tables or rows to a previous point in time
Automatically track and archive transactional data changes
Roll back a transaction and its dependent transactions while the database remains online
Undo data is persistent and survives a database shutdown. By using flashback features, you can use undo data to query past data or recover from logical damage. Besides using it in flashback features, Oracle Database uses undo data to perform these actions:
Roll back active transactions
Recover terminated transactions by using database or process recovery
Provide read consistency for SQL queries
For additional general information about flashback features, see Oracle Database Concepts
Application Development Features
In application development, you can use these flashback features to report historical data or undo erroneous changes. (You can also use these features interactively as a database user or administrator.)
Oracle Flashback Query
Use this feature to retrieve data for an earlier time that you specify with the AS OF clause of the SELECT statement. For more information, see «Using Oracle Flashback Query (SELECT AS OF)».
Oracle Flashback Version Query
Use this feature to retrieve metadata and historical data for a specific time interval (for example, to view all the rows of a table that ever existed during a given time interval). Metadata for each row version includes start and end time, type of change operation, and identity of the transaction that created the row version. To create an Oracle Flashback Version Query, use the VERSIONS BETWEEN clause of the SELECT statement. For more information, see «Using Oracle Flashback Version Query».
Oracle Flashback Transaction Query
Typically, you use Oracle Flashback Transaction Query with an Oracle Flashback Version Query that provides the transaction IDs for the rows of interest (see «Using Oracle Flashback Transaction Query with Oracle Flashback Version Query»).
Use this feature to set the internal Oracle Database clock to an earlier time so that you can examine data that was current at that time, or to roll back a transaction and its dependent transactions while the database remains online (see Flashback Transaction). For more information, see «Using DBMS_FLASHBACK Package».
Use Flashback Transaction to roll back a transaction and its dependent transactions while the database remains online. This recovery operation uses undo data to create and run the corresponding compensating transactions that return the affected data to its original state. (Flashback Transaction is part of DBMS_FLASHBACK package.) For more information, see «Using DBMS_FLASHBACK Package».
Flashback Data Archive (Oracle Total Recall)
Use Flashback Data Archive to automatically track and archive both regular queries and Oracle Flashback Query, ensuring SQL-level access to the versions of database objects without getting a snapshot-too-old error. For more information, see «Using Flashback Data Archive (Oracle Total Recall)».
Database Administration Features
These flashback features are primarily for data recovery. Typically, you use these features only as a database administrator.
Oracle Flashback Table
Use this feature to restore a table to its state at a previous point in time. You can restore a table while the database is on line, undoing changes to only the specified table.
Oracle Flashback Drop
Use this feature to recover a dropped table. This feature reverses the effects of a DROP TABLE statement.
Oracle Flashback Database
Use this feature to quickly return the database to an earlier point in time, by undoing all of the changes that have taken place since then. This is fast, because you do not have to restore database backups.
Configuring Your Database for Oracle Flashback Technology
Before you can use flashback features in your application, you or your database administrator must perform the configuration tasks described in these topics:
Configuring Your Database for Automatic Undo Management
To configure your database for Automatic Undo Management (AUM), you or your database administrator must:
Create an undo tablespace with enough space to keep the required data for flashback operations.
The more often users update the data, the more space is required. The database administrator usually calculates the space requirement.
For a fixed-size undo tablespace, Oracle Database automatically tunes the system to give the undo tablespace the best possible undo retention.
For an automatically extensible undo tablespace, Oracle Database retains undo data longer than the longest query duration and the low threshold of undo retention specified by the UNDO_RETENTION parameter.
Setting UNDO_RETENTION does not guarantee that unexpired undo data is not discarded. If the system needs more space, Oracle Database can overwrite unexpired undo with more recently generated undo data.
Specify the RETENTION GUARANTEE clause for the undo tablespace to ensure that unexpired undo data is not discarded.
Oracle Database Administrator’s Guide for more information about creating an undo tablespace and enabling AUM
Configuring Your Database for Oracle Flashback Transaction Query
To configure your database for the Oracle Flashback Transaction Query feature, you or your database administrator must:
Ensure that Oracle Database is running with version 10.0 compatibility.
Enable supplemental logging:
Configuring Your Database for Flashback Transaction
To configure your database for the Flashback Transaction feature, you or your database administrator must:
With the database mounted but not open, enable ARCHIVELOG :
Open at least one archive log:
If not done, enable minimal and primary key supplemental logging:
If you want to track foreign key dependencies, enable foreign key supplemental logging:
If you have very many foreign key constraints, enabling foreign key supplemental logging might not be worth the performance penalty.
Enabling Oracle Flashback Operations on Specific LOB Columns
To enable flashback operations on specific LOB columns of a table, use the ALTER TABLE statement with the RETENTION option.
Because undo data for LOB columns can be voluminous, you must define which LOB columns to use with flashback operations.
Granting Necessary Privileges
For Oracle Flashback Query and Oracle Flashback Version Query
To allow access to specific objects during queries, grant FLASHBACK and SELECT privileges on those objects.
To allow queries on all tables, grant the FLASHBACK ANY TABLE privilege.
For Oracle Flashback Transaction Query
Grant the SELECT ANY TRANSACTION privilege.
For DBMS_FLASHBACK Package
For Flashback Data Archive (Oracle Total Recall)
To allow a specific user to enable Flashback Data Archive on tables, using a specific Flashback Data Archive, grant the FLASHBACK ARCHIVE object privilege on that Flashback Data Archive to that user. To grant the FLASHBACK ARCHIVE object privilege, you must either be logged on as SYSDBA or have FLASHBACK ARCHIVE ADMINISTER system privilege.
To allow execution of these statements, grant the FLASHBACK ARCHIVE ADMINISTER system privilege:
CREATE FLASHBACK ARCHIVE
ALTER FLASHBACK ARCHIVE
DROP FLASHBACK ARCHIVE
To disable Flashback Data Archive for a table that has been enabled for Flashback Data Archive, you must either be logged on as SYSDBA or have the FLASHBACK ARCHIVE ADMINISTER system privilege.
Using Oracle Flashback Query (SELECT AS OF)
To use Oracle Flashback Query, use a SELECT statement with an AS OF clause. Oracle Flashback Query retrieves data as it existed at an earlier time. The query explicitly references a past time through a time stamp or System Change Number (SCN). It returns committed data that was current at that point in time.
Uses of Oracle Flashback Query include:
Recovering lost data or undoing incorrect, committed changes.
For example, if you mistakenly delete or update rows, and then commit them, you can immediately undo the mistake.
Comparing current data with the corresponding data at an earlier time.
For example, you can run a daily report that shows the change in data from yesterday. You can compare individual rows of table data or find intersections or unions of sets of rows.
Checking the state of transactional data at a particular time.
For example, you can verify the account balance of a certain day.
Simplifying application design by removing the need to store some kinds of temporal data.
Oracle Flashback Query lets you retrieve past data directly from the database.
Applying packaged applications, such as report generation tools, to past data.
Providing self-service error correction for an application, thereby enabling users to undo and correct their errors.
Example of Examining and Restoring Past Data
Suppose that you discover at 12:30 PM that the row for employee Chung was deleted from the employees table, and you know that at 9:30AM the data for Chung was correctly stored in the database. You can use Oracle Flashback Query to examine the contents of the table at 9:30 AM to find out what data was lost. If appropriate, you can restore the lost data.
Example 12-1 retrieves the state of the record for Chung at 9:30AM, April 4, 2004:
Example 12-1 Retrieving a Lost Row with Oracle Flashback Query
Example 12-2 restores Chung’s information to the employees table:
Example 12-2 Restoring a Lost Row After Oracle Flashback Query
Guidelines for Oracle Flashback Query
You can specify or omit the AS OF clause for each table and specify different times for different tables.
If a table is a Flashback Data Archive and you specify a time for it that is earlier than its creation time, the query returns zero rows for that table, rather than causing an error. (For information about Flashback Data Archives, see «Using Flashback Data Archive (Oracle Total Recall)».)
You can use the AS OF clause in queries to perform data definition language (DDL) operations (such as creating and truncating tables) or data manipulation language (DML) statements (such as INSERT and DELETE ) in the same session as Oracle Flashback Query.
To use the result of Oracle Flashback Query in a DDL or DML statement that affects the current state of the database, use an AS OF clause inside an INSERT or CREATE TABLE AS SELECT statement.
If a possible 3-second error (maximum) is important to Oracle Flashback Query in your application, use an SCN instead of a time stamp. See «General Guidelines for Oracle Flashback Technology».
You can create a view that refers to past data by using the AS OF clause in the SELECT statement that defines the view.
If you specify a relative time by subtracting from the current time on the database host, the past time is recalculated for each query. For example:
SYSTIMESTAMP refers to the time zone of the database host environment.
You can store the results by preceding Oracle Flashback Query with a CREATE TABLE AS SELECT or INSERT INTO TABLE SELECT statement. For example, this query reinserts into table employees the rows that existed an hour ago:
SYSTIMESTAMP refers to the time zone of the database host environment.
Using Oracle Flashback Version Query
Use Oracle Flashback Version Query to retrieve the different versions of specific rows that existed during a given time interval. A row version is created whenever a COMMIT statement is executed.
Specify Oracle Flashback Version Query using the VERSIONS BETWEEN clause of the SELECT statement. The syntax is:
where start and end are expressions representing the start and end, respectively, of the time interval to be queried. The time interval includes ( start and end ).
Oracle Flashback Version Query returns a table with a row for each version of the row that existed at any time during the specified time interval. Each row in the table includes pseudocolumns of metadata about the row version, described in Table 12-1. This information can reveal when and how a particular change (perhaps erroneous) occurred to your database.
Table 12-1 Oracle Flashback Version Query Row Data Pseudocolumns