Обратите внимание на следующее.
■ Архив создаётся в табличной области example; вы можете просмотреть
полный список табличных областей, выполнив запрос SELECT
tablespace_name FROM dba_tablespaces.
■ Архив test_archive имеет квоту размером 1 Мб. Это означает, что он
может хранить до 1 Мб данных в табличном пространстве example.
■ Данные в test_archive хранятся в течение 1 дня, после этого данные
удаляются.
Вы можете изменить существующую таблицу с целью сохранения данных
в архиве, например:
Создание таблиц, последовательностей, индексов и представлений 349
□ ALTER TABLE store.products FLASHBACK ARCHIVE test_archive;
Все последующие изменения, выполненнные в таблице store.products,
теперь будут записаны в архив. Следующее выражение INSERT добавляет
строку в таблицу store.products:
□ INSERT INTO store.products (
product_id, product_type_id, name, description, price
) VALUES (
15, 1, ‘ Using Linux’ , 'How To Use Linux’ , 39.99
);
Следующий запрос извлекает строку:
□ SELECT product_id, name, price
FROM store.products
WHERE product_id =15;
PRODUCT_ID NAME PRICE
15 Using Linux 39.99
Вы можете просмотреть строки в том виде, как они выглядели 5 минут
назад, при помощи следующего запроса:
□ SELECT product_id, name, price
FROM store.products
AS OF TIMESTAMP
(SYSTIMESTAMP - INTERVAL ‘5’ MINUTE);
ID NAME PRICE
1 Modern Science 19.95
2 Chemistry 30
3 Supernova 25.99
4 Tank War 13.95
5 Z Files 49.99
6 2412: The Return 14.95
7 Space Force 9 13.49
8 From Another Planet 12.99
9 Classical Music 10.99
10 Pop 3 15.99
11 Creative Yell 14.99
12 My Front Line 13.49
13 Western Front 13.5
14 Eastern Front 16.5
Обратите внимание, что новая строка отсутствует. Это происходит потому,
что она была добавлена в таблицу позже указанных в запросе даты и
времени (полагая, что предыдущий оператор INSERT был выполнен менее
5 минут назад).
Вы также можете просмотреть строки в том виде, как они выглядели
для определённой метки даты-времени, с использованием следующего запроса
(если вы выполните этот запрос, вам потребуется поменять метку
350 Глава 10
даты-времени на дату и время, предшествующие запуску приведённого ранее
выражения INSERT):
□ SELECT product_id, name, price
FROM store.products
AS OF TIMESTAMP
TO_TIMESTAMP(‘ 2007-08-12 13:05:00’ , ‘ YYYY-MM-DD HH24:MI:SS’ );
Новая строка вновь будет отсутствовать в результатах, потому что она
была добавлена в таблицу позже даты, указанной в запросе.
Вы можете просмотреть строки в том виде, как они были между двумя
метками даты-времени, с помощью следующего запроса (вам нужно изменить
метки даты-времени):
D SELECT product_id, name, price
FROM store.products VERSIONS BETWEEN TIMESTAMP
T0_TIMESTAMP(‘ 2007-08-12 12:00:00’ , ‘ YYYY-MM-DD HH24:MI:SS’ )
AND T0_TIMESTAMP(‘ 2007-08-12 12:59:59’ , ‘ YYYY-MM-DD HH24:MI:SS’ );
Вы можете просмотреть строки в том виде, как они были между меткой
даты-времени и текущим моментом времени, с помощью следующего запроса
(вам нужно изменить метку даты-времени):
□ SELECT product_id, name, price
FROM store.products VERSIONS BETWEEN TIMESTAMP
T0_TIMESTAMP(‘ 2007-08-12 13:45:52’ , ‘ YYYY-MM-DD HH24:MI:SS’ )
AND MAXVALUE;
Вы можете остановить архивирование данных для таблицы с помощью
ALTER TABLE, например:
□ ALTER TABLE store.products N0 FLASHBACK ARCHIVE;
При создании таблицы вы можете указать ретроспективный архив для
этой таблицы, например:
П CREATE TABLE store.test_table (
id INTEGER,
name VARCHAR2(10),
) FLASHBACK ARCHIVE test_archive;
Вы можете получить сведения об архиве при помощи следующих представлений:
■ user_flashback_archive и dba_flashback_archive, которые отображают
общую информацию о ретроспективных архивах;
■ user_flashback_archive_ts и dba_flashback_archive_ts, которые отображают
информацию о табличных областях, содержащих ретроспективные
архивы;
■ user_flashback_archive_tables и dba_flashback_archive_tables, которые
отображают информацию о таблицах, для которых включено
ретроспективное архивирование.
Вы можете изменить ретроспективный архив; например, следующее
выражение устанавливает период хранения данных равным двум годам:
Создание таблиц, последовательностей, индексов и представлений 351
П ALTER FLASHBACK ARCHIVE test_archive
MODIFY RETENTION 2 YEAR;
Вы можете удалить данные из ретроспективного архива до определённой
метки даты-времени; например, следующее выражение удаляет данные
старше 1 дня:
П ALTER FLASHBACK ARCHIVE test_archive
PURGE BEFORE TIMESTAMP(SYSTIMESTAMP - INTERVAL ‘ 1’ DAY);
Вы можете удалить все данные в ретроспективном архиве, например:
□ ALTER FLASHBACK ARCHIVE test_archive PURGE ALL;
Вы можете удалить ретроспективный архив:
□ DROP FLASHBACK ARCHIVE test_archive;
Примечание Выполните сценарий store_schema.sql для того, чтобы в оставшейся части книги
ваши результаты выполнения запросов совпадали с моими.
Итоги
В этой главе вы узнали, что