変更の開始

表制御パーティションを使用するための表スペースの変換

インデックス制御パーティションを使用するパーティション化された(非UTS)テーブルスペースを範囲パーティション(PBR)テーブルスペースに変換する前に、テーブル制御パーティションを使用するように変換する必要があります。 索引制御のパーティションを使用する表スペース (すべての非 UTS 表スペースと同様に) は推奨されません。

始める前に

変換後にパーティション・キーからのパーティションに影響しない末尾の列を除外するには、IX_TB_PART_CONV_EXCLUDE サブシステム・パラメーターを YES に設定します。 詳細は、「EXCLUDE PART KEY COLUMNS フィールド(IX_TB_PART_CONV_EXCLUDE サブシステム・パラメータ )」を参照してください。

インデックス制御パーティショニングを使用する新しいテーブルの作成を防止するには、サブシステム・パラメータ PREVENT_NEW_IXCTRL_PART をデフォルト値の YES に設定します。 詳細については、 マクロ DSN6SPRM の PREVENT_NEW_IXCTRL_PART を参照してください。

このタスクについて

パーティション化 (非 UTS) 表スペースの場合、Db2は、表制御のパーティション化と索引制御のパーティション化の両方をサポートします。 表制御のパーティション化は、索引制御のパーティション化に比べて、より多くのオプションと柔軟性が提供されます。 インデックス制御によるパーティショニングには、パーティショニングを制御するためのパーティショニングインデックスが必要です。 ベーステーブル用の非UTSテーブルスペースは非推奨となり、将来的にサポートされなくなります。

表 1. 表制御のパーティション化と索引制御のパーティション化の間の相違点
表制御のパーティション化 索引制御のパーティション化
パーティション索引またはクラスタリング索引は必要ありません。 パーティション索引とクラスタリング索引が必要です。
1 つの表スペース内に複数のパーティション化索引を作成可能。 1 つの表スペース内にはパーティション化索引を 1 つだけ作成可能。
表スペース・パーティションは、物理パーティション番号と論理パーティション番号の両方により識別される。 表スペース・パーティションは、物理パーティション番号により識別される。
変更の開始上限キーは常に適用されます。つまり、範囲外のキー値は、関係する操作に応じて、エラーまたは破棄されたデータになる可能性があります。変更の終わり 大容量テーブルスペース以外では、上限キーは強制されません。
パーティショニングされた(UTSではない)テーブルスペースをパーティショニング・バイ・レンジ・テーブルスペースに変換する前にも、変換が必要です。
もっと詳しく知る: 変更の開始非推奨の従来のパーティション化 (非 UTS) 表スペースを範囲によるパーティション化表スペースに変換するためのさまざまなパスの包括的な背景、方法、および例については、ホワイト ペーパー 「索引制御パーティションからユニバーサル表スペース (UTS) への変換」を参照してください。変更の終わり

プロシージャー

特定の索引操作によっては、常にDb2が索引制御のパーティション化表スペースを表制御のパーティション化表スペースに自動的に変換する原因となるものがあります。 索引制御パーティション化を使用する表を、表制御のパーティション化を使用するように変換するには、次のいずれかのアクションを使用します。

  • パーティション索引に NOT CLUSTER 文節を指定して ALTER INDEX ステートメントを発行します。
    例えば、同じコミット有効範囲内で以下の 2 つの ALTER INDEX ステートメントを発行して、表で制御されるパーティションを使用して、その索引に対してクラスタリングを再アクティブ化することができます。
    ALTER INDEX index-name NOT CLUSTER;
    Db2 関連するテーブルスペースがインデックス制御パーティショニングを使用していないことを示すために、SQLCODE +20272を発行します。
    ALTER INDEX index-name CLUSTER;
    このステートメントは、索引の明示的なクラスタリングを再度アクティブにします。
  • ALTER TABLE ステートメントを発行して、新しいパーティションの追加、パーティション境界の変更、または索引制御のパーティション化表スペースで最後までパーティションを回転します。
    このような場合、 Db2 は自動的にテーブル制御パーティショニングに変換されますが、インデックスは自動的に削除されません。 Db2 既存のインデックスが有効であると仮定しています。
  • 表スペース上にパーティション索引を作成するための PARTITIONED 文節を指定する CREATE INDEX ステートメントを発行します。
  • DROP INDEX ステートメントを発行して、パーティション索引をドロップします。
    パーティション索引をドロップすると、Db2は、関連付けられている索引制御のパーティション化表スペースを表制御のパーティション化表スペースに自動的に変換します。

結果

テーブル制御パーティショニングへの変換後、 Db2 は、大規模ではないテーブルスペースの既存の高限界キー値を、そのキーの最高値に変更します。 Db2は、ハイ・リミット・キー値の適用も開始します。これは、索引制御パーティションを使用する表の場合には当てはまりません。

また、Db2は、変換された表スペース内の表に依存するパッケージも無効にします。

Db2は、以下の状況では、表スペースの最後のパーティションを REORG ペンディング (REORP) 状態にします。

新規パーティションの追加または回転
Db2は、デフォルトの上限キー値ではなく、元の上限キー値を保管します。 Db2 上限キー値がすでに適用されている場合、または最後のパーティションが空でない場合を除き、最後のパーティションをREORP状態にします。
パーティションを変更すると、表制御パーティションへの変換が行われます
Db2は、限界キー列のデータ・タイプに可能な最大値に、既存の上限キーを変更します。 表制御のパーティション化への変換後、Db2は上限キー値をユーザー指定値に変更し、最後のパーティションを REORP 状態にします。

例えば、それぞれのトランザクションごとに 1 行を含む TRANS という非常に大きいトランザクション表があるとします。 この表には、以下の列があります。
  • ACCTID はお客様のアカウント ID です
  • POSTED はトランザクションの日付です

TRANS を含む表スペースは 13 のパーティションに分割され、それぞれが 1 カ月分のデータを含んでいます。 既存の 2 つの索引は、以下のように定義されています。

汎用プログラミングインターフェース情報の開始。
  • パーティショニング・インデックスは、以下のCREATE INDEXステートメントのPARTITION ENDING AT句によって、トランザクション日付で定義されます。パーティショニング・インデックスはクラスタリング・インデックスであり、テーブル内のデータ行はトランザクション日付順に並びます。 パーティション索引は表スペース内のデータのパーティション化を制御します。
  • 非パーティション索引が、カスタマー・アカウント ID に基づいて定義されています。
    CREATE INDEX IX2 ON TRANS(ACCTID);

汎用プログラミングインターフェース情報の終了。

Db2は、通常、非パーティション索引 IX2 を使用して、顧客アカウント ID を介してトランザクション表にアクセスします。 パーティション索引 IX1 はデータ・アクセスには使用されず、スペースを無駄にしています。 さらに、表の可用性について重大な要件があり、データ使用可能性の最小限の中断でパーティション・レベルでのオンライン REORG ジョブを実行できる必要があります。

汎用プログラミングインターフェース情報の開始。

  1. パーティション索引 IX1 をドロップします。
    DROP INDEX IX1;

    パーティショニングインデックスを削除すると、 IX1、 Db2 はテーブルスペースをインデックス制御パーティショニングからテーブル制御パーティショニングに変換します。 Db2 キー列に指定された最高値に、もともと指定されていた上限キー値を変更します。

  2. IX2 の代わりとして、表内の 13 個のデータ・パーティションに一致するパーティション・クラスタリング索引 IX3 を作成します。
    CREATE INDEX IX1 ON TRANS(POSTED)
       CLUSTER
       (PARTITION 1  ENDING AT ('01/31/2002'),
        PARTITION 2  ENDING AT ('02/28/2002'),
        ...
        PARTITION 13 ENDING AT ('01/31/2003'));

    索引 IX3 を作成すると、Db2は、表内の 13 個のデータ・パーティションに一致する 13 個のパーティションを持つパーティション索引を作成します。 各索引パーティションには、その月のトランザクションのアカウント番号が含まれ、それらのアカウント番号は各パーティション内で順番に配置されます。 例えば、索引のパーティション 11 は、2002 年 11 月のトランザクションを含む表パーティションに対応します。また、そのパーティションには、それらのトランザクションのアカウント番号が順序付けされて含まれています。

  3. 索引 IX2 をドロップしました。IX3 は置き換えられました。
    
    DROP INDEX IX2;
    COMMIT;

    汎用プログラミングインターフェース情報の終了。

次の作業

この手順の結果として生成されるのはパーティション化された(非UTS)テーブルスペースであり、これは将来サポートされなくなる非推奨のテーブルスペースタイプでもあります。 最良の結果を得るには、 パーティション化された(非UTS)テーブルスペースを範囲パーティションユニバーサルテーブルスペースに変換する方法で説明されているように、テーブルスペースもPBRテーブルスペースに変換してください。
変更の終わり