th0x4c 備忘録

[Oracle] フラッシュバック・データ・アーカイブ(Oracle Total Recall)

目的

フラッシュバック・データ・アーカイブ(Oracle Total Recall) を使用して、表への更新履歴を長期間保存する。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)

マニュアル

フラッシュバック・データ・アーカイブの使用

フラッシュバック・データ・アーカイブ(Oracle Total Recall) を使用して、表への更新履歴を長期間保存できる。例えば、コンプライアンス上変更履歴を年単位で長時間保存しておく必要がある場合などに有効。

  • フラッシュバック・データ・アーカイブの作成

CREATE FLASHBACK ARCHIVE 文を使用してフラッシュバック・データ・アーカイブを作成する。 データを1年間保持するデフォルトのフラッシュバック・データ・アーカイブ fla1USERS 表領域に作成。 作成するには FLASHBACK ARCHIVE ADMINISTER システム権限を持つユーザか、SYSDBA として接続する必要がある。

SQL> connect /as sysdba
Connected.
SQL> CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE users
     RETENTION 1 YEAR;

Flashback archive created.
  • 表のフラッシュバック・アーカイブの有効化

scott.emp 表のフラッシュバック・アーカイブを有効にして、フラッシュバック・データ・アーカイブ fla1 に履歴データを格納するようにする。 scott スキーマに fla1 に対する FLASHBACK ARCHIVE オブジェクト権限を与えて、ALTER TABLE 文を発行する。

SQL> connect /as sysdba
Connected.
SQL> GRANT FLASHBACK ARCHIVE ON fla1 TO scott;

Grant succeeded.

SQL> connect scott/tiger
Connected.
SQL> ALTER TABLE scott.emp FLASHBACK ARCHIVE fla1;

Table altered.
  • フラッシュバック・データ・アーカイブが有効になっていることの確認

scott スキーマで emp 表のフラッシュバック・データ・アーカイブが有効になっていることの確認

SQL> connect scott/tiger
Connected.
SQL> col table_name for a30
     col owner_name for a30
     col flashback_archive_name for a30
     col archive_table_name for a30
     col status for a10
     set lines 200
SQL> SELECT * FROM USER_FLASHBACK_ARCHIVE_TABLES;

TABLE_NAME                     OWNER_NAME                     FLASHBACK_ARCHIVE_NAME         ARCHIVE_TABLE_NAME             STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ----------
EMP                            SCOTT                          FLA1                           SYS_FBA_HIST_75335             ENABLED