SET USAGE LIST STATE ステートメント
SET USAGE LIST STATE ステートメントは、使用量リストの状態と、関連付けられたデータやメモリーを管理します。
このステートメントは、トランザクションの制御下にありません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、DBADM または SQLADM 権限が含まれている必要があります。
構文
説明
- usage-list-name
- 使用量リストを指定します。usage-list-name (暗黙または明示の修飾子を含む) は、カタログに記述されている使用量リストを指定していなければなりません (SQLSTATE 42704)。
- ACTIVE
- 使用量リストによるモニターをアクティブ化することを示します。セクションが表や索引を初めて参照する時点で、使用量リスト用のメモリーが割り振られます。パーティション表やパーティション索引に関する使用量リストの場合は、セクションがデータ・パーティションを初めて参照する時点でメモリーが割り振られます。パーティション・データベース環境では、各メンバーにメモリーが割り振られます。使用量リストが既に ACTIVE 状態になっている場合は、警告が戻されます (SQLSTATE 01598)。
アクティブ化の時点で、使用量リスト内のデータは除去され、収集はリストの先頭から開始されます。
- INACTIVE
- 使用量リストによるモニターを非アクティブ化することを示します。使用量リストの状態が既に INACTIVE に設定されている場合は、このキーワードは無視されます。パーティション表やパーティション索引に関する使用量リストの状態を INACTIVE に設定すると、データ・パーティションごとに使用量リストの状態が INACTIVE に設定されます。状態が既に INACTIVE になっている場合は、このキーワードは無視されます。同様に、パーティション・データベース環境では、各メンバーに関する使用量リストの状態が INACTIVE に設定されます。状態が既に INACTIVE になっている場合は、このキーワードは無視されます。
使用量リストの状態を INACTIVE に設定しても、リスト内に収集されたデータは除去されません。
- RELEASED
- 使用量リストに関連付けられているメモリーを解放することを示します。パーティション表やパーティション索引に関する使用量リストの状態を RELEASED に設定すると、各データ・パーティションに関連付けられているメモリーが解放されます。パーティション・データベース環境では、各メンバーに関連付けられているメモリーが解放されます。
注
- 現在の状態の判別: 使用量リストの現在の状態を判別するには、MON_GET_USAGE_LIST_STATUS 組み込み関数を使用します。
- パーティション・データベース環境に関する考慮事項: パーティション表やパーティション索引に関する使用量リストをアクティブにすると、データ・パーティションごとにメモリーが割り振られます。同様に、パーティション・データベース環境では、アクティブなメンバーごとにメモリーが割り振られます。
- 使用不可のメンバーに関するメモリー割り振り: 使用量リストのアクティブ化の時点でメンバーが使用不可になっている場合は、このメンバーが次回アクティブにされるときに、このメンバーに関する使用量リストに関連付けられたメモリーが割り振られます (引き続き使用量リストの状態がアクティブになっている場合)。これは、クラスターにメンバーが追加されるときにも当てはまります。
- 追加またはアタッチされるデータ・パーティションに関するメモリー割り振り : データ・パーティションを追加したりアタッチしたりする場合、パーティション表またはパーティション索引を参照するセクションが次回実行されるときに、この新しく追加またはアタッチされるデータ・パーティションに関する使用量リストに関連付けられたメモリーが割り振られます。
- INACTIVE の個別設定: WHEN FULL DEACTIVATE プロパティーを指定して使用量リストを作成した場合、データ・パーティションまたはメンバーごとの使用量リストの状態は個別に INACTIVE に設定されます。
- アクティブな使用量リストの暗黙的な再アクティブ化: パーティション・データベース環境で、INACTIVE ON START DATABASE 使用量リストの状態が ACTIVE に設定されている場合、この使用量リストを明示的に非アクティブにするか、インスタンスがリサイクルされるまでの動作は、ACTIVE ON START DATABASE と同じようになります。つまり、データベース・メンバーが非アクティブ化された時点かオフラインになった時点で使用量リストの状態がアクティブであれば、そのデータベース・メンバーがそれ以降に再びアクティブ化された時点で、このメンバーに関する使用量リストは暗黙的に再アクティブ化されます。
- 解放状態の定義: 使用量リストが定義済みで (明示的にも自動的にも) アクティブにされていない場合や、SET USAGE LIST STATE ステートメントを使用して解放されている場合は、その使用量リストは解放された状態であると見なされます。解放状態の使用量リストは、MON_GET_USAGE_LIST_STATUS 表関数によって戻されません。
- アクティブ化保留、アクティブ、および障害状態: 使用量リストが (明示的または自動的に) アクティブにされると、使用量リストの状態はアクティブ化保留状態に設定され、セクションが表や索引を初めて参照する時点でメモリーが割り振られます。この時点で、使用量リストの状態はアクティブに設定されます。使用量リスト用のメモリーを割り振ることができない場合は、使用量リストは障害状態に設定され、SET USAGE LIST STATE ステートメントを使用して明示的にアクティブにしなければなりません。
- 非アクティブな使用量リストはデータベース・メンバーの再アクティブ化時も非アクティブのまま: パーティション・データベース環境で、ACTIVE ON START DATABASE 使用量リストの状態が INACTIVE に設定されている場合、この使用量リストを明示的にアクティブにするか、インスタンスがリサイクルされるまでの動作は、INACTIVE ON START DATABASE と同じようになります。つまり、データベース・メンバーが非アクティブ化された時点かオフラインになった時点で使用量リストの状態が非アクティブであれば、そのデータベース・メンバーがそれ以降に再びアクティブ化された時点で、このメンバーに関する使用量リストの状態は非アクティブのままになります。
- パーティション表または索引に関する使用量リストのアクティブ化、非アクティブ化、または解放: パーティション表やパーティション索引に関する使用量リストをアクティブにしたり、非アクティブにしたり、解放したりすると、その状態変更が各データ・パーティションに適用されます。同様に、パーティション・データベース環境では、状態変更は各メンバーに適用されます。
- 使用量リストのサイズに関する考慮事項: アクティブ化の時点で、使用量リストに関連付けられたメモリーがモニター・ヒープから割り振られます。リスト・サイズの設定を最大にすると、使用量リストは約 2 MB になります。パーティション表やパーティション索引の場合、データ・パーティションごとにメモリーが割り振られます。例えば、パーティション表に 3 つのデータ・パーティションを定義している場合は、割り振られる合計メモリーは約 6 MB です。そのために、複数の使用量リストをアクティブにすると、モニター・ヒープのメモリー所要量が増えます。したがって、適切なリスト・サイズを選択するか、またはモニター・ヒープ・サイズがデータベース・マネージャーによって管理されるように mon_heap_sz 構成パラメーターを AUTOMATIC に設定することをお勧めします。
- 使用量リストを INACTIVE に設定した場合のデータ収集: 使用量リストの状態を INACTIVE に設定しても、このリスト内に収集されたデータは除去されません。
- データ・アクセスとメモリー: リスト用のメモリーが割り振られている場合、リスト内のデータは (MON_GET_TABLE_USAGE_LIST 表関数や MON_GET_INDEX_USAGE_LIST 表関数を使用して) アクセス可能のままになります。
- メモリーの解放: 以下のいずれかのイベントが発生すると、使用量リストに関連付けられたメモリーが解放されます。
- 使用量リストのドロップ。
- 使用量リストの定義対象の表または索引のドロップ。すべてのデータ・パーティションに関する使用量リストに関連付けられたメモリーが解放されます。パーティション・データベース環境では、すべてのアクティブなメンバーに関する使用量リストに関連付けられたメモリーが解放されます。
- データ・パーティションがパーティション表やパーティション索引からデタッチされる時点。このデータ・パーティションに関連付けられたメモリーのみ解放されます。
- データベース・メンバーが非アクティブになる時点。このメンバーに関連付けられたメモリーのみ解放されます。
- インスタンスまたはデータベース全体が非アクティブになる時点。データベースを非アクティブにしてから再始動すると、使用量リストのデータは存続しません。
- SET USAGE LIST STATE ステートメントを使用して、使用量リストに関連付けられたメモリーを明示的に解放する時点。
