In-Database Archiving を使用する [12c新機能]

12cでは、レコード単位で表示・非表示を制御可能となった。
create table コマンドに、row archival 句を指定することで、
テーブルに非表示設定用の列(ora_archive_state)が追加される。

この ora_archive_state 列には、デフォルトで非表示を示す 0 が入り、
0 以外の値を指定すると、そのレコードが表示される仕組みとなっている。

テーブル作成

SQL> create table hoge(col1 number(10), col2 char(10)) row archival;

row archival 句を付けて、テーブル作成後に user_tab_cols テーブルを
参照すると、hidden_column が YES になっていることがわかる。

row archival visibility パラメータで表示させる

ora_archive_state 列は、desc コマンドや 通常の select * from … では
表示されないが、 row archival visibility パラメータを設定すれば表示される。

  • セッション単位で有効化
  • SQL> alter session set row archival visibility=ALL;

  • ora_archive_state 列を明示して select
  • SQL> select hoge.*, ora_archive_state from hoge;

  • セッション単位で無効化
  • SQL> alter session set row archival visibility=ACTIVE;
    アクティブ列のみとなる。

    非表示機能を無効化したい場合

    SQL> alter table hoge no row archival;
    no row archival でデフォルト通り、アクティブ列のみとなる。

    関連記事