CREATE USAGE LIST ステートメント

CREATE USAGE LIST ステートメントは、使用量リストを定義します。使用量リストは、実行中に特定の表や索引を参照した固有のセクション (DML ステートメント) すべてをモニターするデータベース・オブジェクトです。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、 動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

このステートメントの許可 ID には、以下のいずれかの特権が含まれている必要があります。
  • DBADM 権限
  • SQLADM 権限

構文

構文図を読む構文図をスキップするCREATE USAGE LISTusage-list-nameFOR TABLEINDEX object-name LIST SIZE 100LIST SIZEinteger-value WHEN FULL WRAPWHEN FULL DEACTIVATE INACTIVE ON START DATABASEACTIVE ON START DATABASE

説明

usage-list-name
使用量リストの名前を指定します。usage-list-name (暗黙または明示の修飾子を含む) は、カタログに記述されている使用量リストを指定するものであってはなりません (SQLSTATE 42710)。スキーマ名を文字 SYS で始めることはできません (SQLSTATE 42939)。
TABLE object-name
使用量リストを定義する対象の表を指定します。object-name (暗黙または明示の修飾子を含む) は、カタログに定義されている表を指定していなければなりません (SQLSTATE 42704)。この名前に、別名、カタログ表、作成済み一時表、階層表、デタッチされた表、ニックネーム、型付き表、またはビューを指定することはできません (SQLSTATE 42809)。スキーマ名を文字 SYS で始めることはできません (SQLSTATE 42809)。
INDEX object-name
使用量リストを定義する対象の索引を指定します。object-name (暗黙または明示の修飾子を含む) は、カタログに定義されている索引を指定していなければなりません (SQLSTATE 42704)。型なし表やマテリアライズ照会表以外の表に対して定義される索引はサポートされていません (SQLSTATE 42809)。この名前には物理索引、つまりブロック索引 (BLOK)、クラスタリング索引 (CLUS)、ディメンション・ブロック索引 (DIM)、通常の索引 (REG)、および XML 列の物理索引 (XVIP) を指定しなければなりません。他のすべての索引タイプはサポートされていません (SQLSTATE 42809)。スキーマ名を文字 SYS で始めることはできません (SQLSTATE 42809)。
LIST SIZE integer-value
このリストのサイズが integer-value (項目数) であることを指定します。指定できる最小サイズは 10 で、最大サイズは 5000 です (SQLSTATE 428B7)。デフォルト・サイズは 100 項目です。
WHEN FULL
アクティブな使用量リストが満杯になった時点で実行するアクションを指定します。デフォルトでは、リストが満杯になった時点でラップします。
WRAP
使用量リストがラップして、最も古い項目を置き換えることを指定します。
DEACTIVATE
使用量リストを非アクティブにするように指定します。
INACTIVE ON START DATABASE
データベースがアクティブになった時点で、使用量リストによるモニターをアクティブ化しないことを指定します。SET USAGE LIST ステートメントを使用して、収集を明示的に開始しなければなりません。この節がデフォルトです。
ACTIVE ON START DATABASE
データベースがアクティブになった時点で、使用量リストによるモニターを自動的にアクティブ化することを指定します。

  • ユニーク・キーを使用したセクションの追跡: 使用量リストは、特定のオブジェクトを参照した固有のセクションすべて (DML ステートメントのみ) を追跡します。参照は、参照元のセクションを表す実行可能 ID と、参照時のモニター・インターバル ID のユニーク・キーを使用して、リスト内に集約されます。各リスト項目には、その項目に関連したセクションの実行のカウントと、これらのセクションの各実行でオブジェクトが受けた影響を概説した統計の集合が保持されます。
  • 使用量リストが解放される時点: CREATE USAGE LIST ステートメントがコミットされると、使用量リストが解放済みに設定されます。
  • メモリー割り振り: 使用量リストの定義対象のオブジェクトをセクションが初めて参照する時点で、メモリーが割り振られます。
  • パーティション・データベース環境でのメモリー割り振り: パーティション表やパーティション索引に関する使用量リストの状態をアクティブに設定すると、セクションが各データ・パーティションを初めて参照する時点で、そのデータ・パーティション用のメモリーが割り振られます。同様に、パーティション・データベース環境では、各アクティブ・メンバーにメモリーが割り振られます。アクティブ化の時点でメンバーが使用不可になっている場合は、そのメンバーが次回アクティブにされるときにメモリーが割り振られます (引き続き使用量リストの状態がアクティブに設定されている場合)。これは、クラスターにメンバーが追加されるときにも当てはまります。
  • WHEN FULL DEACTIVATE 指定時の使用量リストの状態: WHEN FULL DEACTIVATE 節を指定して使用量リストを作成した場合、各メンバーの使用量リストの状態は個別に非アクティブに設定されます。同様に、パーティション表やパーティション索引の場合、データ・パーティションごとの使用量リストの状態は個別に非アクティブに設定されます。
  • アクティブな使用量リストの暗黙的な再アクティブ化: パーティション・データベース環境で、INACTIVE ON START DATABASE 使用量リストの状態がアクティブに設定されている場合、この使用量リストの状態を明示的に非アクティブに設定するか、インスタンスがリサイクルされるまでの動作は、ACTIVE ON START DATABASE 節に類似したものになります。つまり、データベース・メンバーが非アクティブ化された時点かオフラインになった時点で使用量リストの状態がアクティブであれば、そのデータベース・メンバーがそれ以降に再びアクティブ化された時点で、このメンバーに関する使用量リストも暗黙的に再アクティブ化されます。
  • 非アクティブな使用量リストはデータベース・メンバーの再アクティブ化時も非アクティブのまま: パーティション・データベース環境で、ACTIVE ON START DATABASE 使用量リストの状態が非アクティブに設定されている場合、この使用量リストの状態を明示的にアクティブに設定するか、インスタンスがリサイクルされるまでの動作は、INACTIVE ON START DATABASE 節に類似したものになります。つまり、データベース・メンバーが非アクティブ化された時点かオフラインになった時点で使用量リストの状態が非アクティブであれば、そのデータベース・メンバーがそれ以降に再びアクティブ化された時点で、このメンバーに関する使用量リストの状態は非アクティブのままになります。
  • 複数の使用量リスト: 同一の表や索引に関する使用量リストを複数作成できますが、そのうち 1 つのみアクティブにすることをお勧めします。すべてをアクティブにすると、データベースのパフォーマンスとメモリー使用量に影響が及びます。
  • 使用量リストのアクティブ化と非アクティブ化: 使用量リストのアクティブ化と非アクティブ化については、SET USAGE LIST STATE ステートメントの『注』セクションを参照してください。
  • 使用量リストのサイズに関する考慮事項: 使用量リストの状態がアクティブに設定されている場合、使用量リスト用メモリーはモニター・ヒープから割り振られます。リスト・サイズの設定を最大にすると、使用量リストは約 2 MB になります。パーティション表やパーティション索引の場合、データ・パーティションごとにメモリーが割り振られます。例えば、パーティション表に 3 つのデータ・パーティションを定義している場合は、約 6 MB のメモリーが割り振られます。そのために、複数の使用量リストをアクティブにすると、モニター・ヒープのメモリー所要量が増えます。したがって、適切なリスト・サイズを選択するか、またはモニター・ヒープ・サイズがデータベース・マネージャーによって管理されるように mon_heap_sz 構成パラメーターを AUTOMATIC に設定することをお勧めします。
  • パフォーマンスに関する考慮事項: パフォーマンスを高く保つためには、作成する使用量リストの数を、必須の情報を収集するのに必要な数に限定してください。使用量リストごとにシステム・メモリーが必要になります。追加の使用量リストをアクティブにするつど、システム・パフォーマンスは低下します。

  • 例 1: 表 SAYYID.ACCOUNTS に関する使用量リスト USL_ACC を作成し、デフォルトのリスト・サイズの 100 項目を指定します。
    CREATE USAGE LIST USL_ACC FOR TABLE SAYYID.ACCOUNTS
  • 例 2: 索引 BIRD.SHOPPINGIND の使用量リスト USL_SHOPPING_IND を作成し、リスト・サイズを 50 項目にして、リストが満杯になった時点でラップするよう指定します。
    CREATE USAGE LIST USL_SHOPPING_IND FOR INDEX BIRD.SHOPPINGIND
       LISTSIZE 50
       WHEN FULL WRAP
  • 例 3: 表 MIKE.PAYROLL の使用量リスト USL_PAYROLL を作成し、リスト・サイズを 200 項目にして、リストが満杯になった時点で非アクティブになり、データベースがアクティブになった時点で必ず収集が自動的に開始されるように指定します。
    CREATE USAGE LIST USL_PAYROLL FOR TABLE MIKE.PAYROLL
       LISTSIZE 200
       WHEN FULL DEACTIVATE
       ACTIVE ON START DATABASE
  • 例 4: パーティション表 JACOBO.EMPLOYEES の使用量リスト USL_EMP を作成し、リスト・サイズを 500 項目にして、リストが満杯になった時点で非アクティブになるように指定します。
    CREATE USAGE LIST USL_EMP FOR TABLE JACOBO.EMPLOYEES
       LIST SIZE 500
       WHEN FULL DEACTIVATE
    使用量リストによるモニターをアクティブにすると、データ・パーティションごとに 500 項目のリストが割り振られます。
  • 例 5: 表 SHAKTI.PARTS の使用量リスト USL_PARTS を作成し、リスト・サイズを 20 項目にして、データベースがアクティブになった時点で手動でアクティブにし、満杯になった時点でラップするよう指定します。
    CREATE USAGE LIST USL_PARTS FOR TABLE SHAKTI.PARTS
       LIST SIZE 20
       INACTIVE ON START DATABASE
       WHEN FULL WRAP