Выбрать главу

Обратите внимание на следующее.

■ Архив создаётся в табличной области 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 для того, чтобы в оставшейся части книги

ваши результаты выполнения запросов совпадали с моими.

Итоги

В этой главе вы узнали, что