93 DBMS_IMMUTABLE_TABLE

不変表は、不正な変更からデータを保護するread-only表です。また、人為的エラーによって発生する可能性のある偶発的なデータ変更も防止します。DBMS_IMMUTABLE_TABLEパッケージを使用すると、不変表内の期限切れの行を削除し、時間隔パーティション化を追加できます。

この章のトピックは、次のとおりです:

93.1 DBMS_IMMUTABLE_TABLEの概要

不変表は、不正な変更からデータを保護するread-only表です。また、不変表は人為的エラーによって発生する可能性のある偶発的なデータ変更も防止します。不変表および不変表内の行に対して保存期間を指定する必要があります。不変表に行が含まれていない場合、または表に指定された保存期間を経過している場合は、不変表を削除できます。不変表から行を削除できるのは、表内の行に指定された保存期間を経過した後のみです。保持期間の延長および時間隔パーティション化の追加を除き、このパッケージで不変表の定義を変更することはできません。

93.2 DBMS_IMMUTABLE_TABLEのセキュリティ・モデル

DBMS_IMMUTABLE_TABLEパッケージは、SYSによって所有され、データベース・インストールの一環としてインストールされます。このパッケージ内のルーチンは、実行者権限を使用して実行されるため、現行のユーザーの権限を使用して実行されます。

93.3 DBMS_IMMUTABLE_TABLEサブプログラムの要約

この表は、DBMS_IMMUTABLE_TABLEサブプログラムをアルファベット順に示し、簡単に説明しています。

表93-1 DBMS_IMMUTABLE_TABLEパッケージのサブプログラム

サブプログラム 説明
ADD_INTERVAL_PARTITIONINGプロシージャ このプロシージャは、時間隔パーティション化を既存のパーティション化されていないV1またはV2不変表に追加します。
DELETE_EXPIRED_ROWSプロシージャ このプロシージャは、期限切れの行を削除します。

93.3.1 ADD_INTERVAL_PARTITIONINGプロシージャ

このプロシージャは、時間隔パーティション化を既存のパーティション化されていないV1またはV2不変表に追加します。

構文

DBMS_IMMUTABLE_TABLE.ADD_INTERVAL_PARTITIONING(
    schema_name              IN    VARCHAR2,
    table_name               IN    VARCHAR2,
    interval_number          IN    NUMBER,
    interval_frequency       IN    VARCHAR2,
    first_high_timestamp     IN    TIMESTAMP); 

パラメータ

表93-2 ADD_INTERVAL_PARTITIONINGのパラメータ

パラメータ 説明

schema_name

スキーマの名前。
table_name 不変表の名前。
interval_number データベースが不変表のパーティションを作成する間隔を設定します。
interval_frequency

interval_numberに設定した値の頻度を設定します。サポートされている値は、YEARMONTHDAYHOURおよびMINUTEです。

first_high_timestamp

不変表の最初のパーティションの上限を決定するタイムスタンプ。

使用上のノート

  • コンポジット・パーティション化(つまり、サブパーティション化)は、前述の時間隔パーティション化ではサポートされていません。

93.3.2 DELETE_EXPIRED_ROWSプロシージャ

このプロシージャは、期限切れの行の一部または全部を不変表から削除します。このプロシージャは、期限切れの行を削除する前および期限切れの行を削除した後でコミットします。

構文

DBMS_IMMUTABLE_TABLE.DELETE_EXPIRED_ROWS(
   schema_name                  IN VARCHAR2,
   table_name                   IN VARCHAR2, 
   before_timestamp             IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   number_of_rows_deleted       OUT NUMBER);

パラメータ

表93-3 DELETE_EXPIRED_ROWSプロシージャのパラメータ

パラメータ 説明
schema_name スキーマの名前。
table_name 不変表の名前。
before_timestamp

パラメータがNULLの場合、表内の期限切れの行はすべて削除されます。パラメータがNULLではなく、現在の時刻および行保存時間に基づいて計算されたタイムスタンプより古い場合、タイムスタンプがパラメータ値より小さい行は削除されます。パラメータが、現在の時刻および行保存時間に基づいて計算されたタイムスタンプより新しい場合は、計算されたタイムスタンプが使用され、期限切れの行はすべて削除されます。

デフォルト値はNULLです。

number_of_rows_deleted 削除する行数。