パーティションの入れ替え

ALTER TABLE ステートメントを使用すると、どの論理パーティションも最終パーティションになるように循環できます。 パーティションの循環は、パーティション化 (非 UTS) 表スペースおよびパーティションごとの表スペースに対してサポートされますが、増加対応パーティション表スペースに対してはサポートされません。

このタスクについて

推奨汎用プログラミングインターフェース情報の開始。パーティショニングされたテーブルスペースを作成する際には、予想される成長分を余分に確保する必要はありません。 代わりに、必要になったときに ALTER TABLE ADD PARTITION ステートメントを使用して、パーティションを追加できます。 アプリケーションにとってパーティションの循環が適切な場合は、ALTER TABLE ROTATE PARTITION ステートメントを使用して新規パーティションの追加を回避します。 汎用プログラミングインターフェース情報の終了。

NULL 可能なパーティション列: Db2を使用すると、NULL 可能な列をパーティション列として使用できます。 ただし、表制御のパーティション化では、Db2は、パーティション・キーの順序に応じて、NULL 可能なパーティション列を持つ表に NULL 値を挿入することを制限することができます。 循環操作の後、パーティション・キーが昇順になっている場合、Db2はキー列に NULL 値を持つ行が挿入されないようにします。 パーティション・キーが降順の場合、Db2はキー列に NULL 値を持つ行の INSERT を許可します。 この行は先頭パーティションに挿入されます。

プロシージャー

汎用プログラミングインターフェース情報の開始。最後のパーティションになるようにパーティションを回転させるには:

  1. ALTER TABLE ステートメントを出して ROTATE PARTITION オプションを指定します。
  2. オプション: RUNSTATS ユーティリティを実行します。 汎用プログラミングインターフェース情報の終了。

例えば、表スペースのパーティション構造が 2006 年までは十分足りているものとします。 以下の表は、2006 年までの表スペースの表示形式を示しています。 2007 年用にパーティションがもう 1 つ必要になったときに、1996 年のデータはもう必要ないと判断したとします。 そこで、2007 年のトランザクションを入れるために 1996 年用のパーティションをリサイクルすることにします。
表 1. パーティション化表スペースの抜粋
パーティション 限界値 パーティションをバックアップするデータ・セット名
P008 12/31/2004 catname.DSNDBx.dbname.psname .I0001.A008
P009 12/31/2005 catname.DSNDBx.dbname.psname .I0001.A009
P010 12/31/2006 catname.DSNDBx.dbname.psname .I0001.A010

汎用プログラミングインターフェース情報の開始。テーブルTRANSの最初のパーティションを最後のパーティションにするには、次の文を発行します

ALTER TABLE TRANS ROTATE PARTITION FIRST TO LAST 
   ENDING AT ('12/31/2007') RESET; 

昇順の限界値を持つ表の場合は、ENDING AT 節のデータは前のパーティションの限界値よりも大きくなければなりません。 Db2 最初のパーティションを、最も低い上限値を持つパーティションとして選択します。

降順の限界値を持つ表の場合は、データは前のパーティションの限界値より小さくなければなりません。 Db2 最初のパーティションを、上限値が最も高いパーティションとして選択します。

RESET キーワードは、最初の論理パーティション内の既存のデータを削除することを指定しており、削除トリガーは活動化されません。 最も古い (または最初の) パーティションが P001 であるため、Db2は新しい限界値を P001 に割り当てます。 このパーティションは、12/31/2007 の新規限界値と 12/31/2006 の前限界値の間の範囲内にあるすべての行を保持します。 RESET 操作は既存のデータをすべて削除します。 ALTER が完了したら、パーティションを即時に使用できます。 テーブルが大きい場合、またはローテーション前の最後のパーティションが空の場合、パーティションはREORG保留(REORP)状態にはなりません。汎用プログラミングインターフェース情報の終了。

以下の表は、先頭パーティションが入れ替わって、最終パーティションになった後の、表スペースの表示形式を示しています。

表 2. 先頭パーティションを最終パーティションになるように循環する
パーティション 限界値 パーティションをバックアップするデータ・セット名
P002 12/31/1997 猫名.DSNDB xデータベース名psname.I0001.A002
P003 12/31/1998 猫名.DSNDB xデータベース名psname.I0001.A003
P004 12/31/1999 猫名.DSNDB xデータベース名psname.I0001.A004
P005 12/31/2000 猫名.DSNDB xデータベース名psname.I0001.A005
P006 12/31/2001 猫名.DSNDB xデータベース名psname.I0001.A006
P007 12/31/2002 猫名.DSNDB xデータベース名psname.I0001.A007
P008 12/31/2003 猫名.DSNDB x.db.ps名.I0001.A008
P009 12/31/2004 猫名.DSNDB xデータベース名psname.I0001.A009
P010 12/31/2005 猫名.DSNDB xデータベース名psname.I0001.A010
P011 12/31/2006 猫名.DSNDB xデータベース名psname.I0001.A011
P001 12/31/2007 猫名.DSNDB xデータベース名psname.I0001.A001