保留中のデータ定義変更

保留中のデータ定義変更 は、変更を適用するためにオブジェクトを再編成する必要があるため、即時には有効にならないデータ定義変更です。 保留中のデータ定義変更をマテリアライズする準備ができたら、REORG ユーティリティーを実行して、保留中の変更を定義およびデータに適用します。 保留中の定義変更があるオブジェクトは、変更を適用するのに都合がよい時期がくるまでは、引き続き使用可能です。

特定のオプションを指定した ALTER ステートメントでは、データベース・オブジェクトの定義に対する保留中の変更が生じる可能性があります。 オブジェクトの定義に対する保留中の変更が生じる ALTER ステートメントが発行されると、セマンティックの検証および許可検査が実行されます。 ただし、表定義およびデータに対する変更は適用されず、REORG ユーティリティーを実行して保留中の変更が解決されるまでは、オブジェクトは再編成ペンディング通知 (AREOR) 状態に置かれます。

保留中のデータ定義変更のほとんどは、ユニバーサル表スペースに対してのみサポートされますが、以下は例外です。

  • MAXPARTITIONS 属性を使用して、単一表のシンプルまたはセグメント化 (非 UTS) 表スペースを増加対応パーティション表スペースに変換します。
  • SEGSIZE 属性を使用して、パーティション化 (非 UTS) 表スペースを範囲パーティション表スペースに変換します。
  • パーティション化 (非 UTS) 表スペースのパーティション境界を変更します。
  • ALTER TABLESPACE文のMOVE TABLEオプションを使用して、マルチテーブルのシンプルまたはマルチテーブルのセグメント化(UTS以外)テーブルスペースから、パーティション・バイ・グロース・テーブルスペースにテーブルを移動します。

保留中の変更は、SYSIBM.SYSPENDINGDDL カタログ表に記録されます。 保留中の変更が適用されると、従属パッケージは必要に応じて無効になり、SYSIBM.SYSPENDINGDDL カタログ表の対応するエントリーが削除され、通知 REORG 保留中の状態が削除されます。

保留中の定義変更が発生する状況

以下のステートメントにより、保留中のデータ定義の変更が発生する可能性があります。

ALTER TABLESPACE
以下の表に、ALTER TABLESPACE ステートメントが保留中の定義変更として処理される原因となる文節および特定の条件をリストします。 変更内容は、ALTER TABLESPACE ステートメントが発行された時点では定義またはデータには反映されません。 代わりに、表スペース全体が、REORG ペンディング通知 (AREOR) 状態になります。 後続の表スペース全体の再編成によって、この保留定義変更が表スペースの定義とデータに適用されます。 テーブル空間の定義が不完全な状態であってはなりません。
条項またはオプション 次の場合に使用される保留定義変更...
BUFFERPOOL 表スペースのデータ・セットは既に作成されており、以下の条件のいずれかが当てはまります。
  • 表スペースまたは基本表スペース内のいずれかのオブジェクトに、保留中の定義変更が既に存在する。
  • 指定されたバッファー・プールのページ・サイズが、表スペースに現在使用されているバッファー・プールのページ・サイズと異なる。
DSSIZE 表スペースのデータ・セットは既に作成されており、以下の条件のいずれかが当てはまります。
  • 表スペースまたは表スペース内のいずれかのオブジェクトに対して、保留中の定義変更が既に存在する。
  • 表スペースで相対ページ番号付けを使用しており、 表スペース・レベルで指定されている DSSIZE 値が、表スペース内の 1 つ以上のパーティションで現在使用されている値より小さい。
  • 表スペースで絶対ページ番号付けを使用しており、 指定されている DSSIZE 値が、表スペースで現在使用されている値と異なる。
MAXPARTITIONS 表スペースのデータ・セットが既に作成され、その表スペースが PBG 表スペースでない場合。
MEMBER CLUSTER 表スペースのデータ・セットが既に作成され、以下の条件のいずれかが真である場合。
  • 表スペースまたは表スペース内のすべてのオブジェクトに対して、保留中の定義変更が既に存在しています。
  • MEMBER CLUSTER 属性が別の値に変更されました。
テーブルを移動 変更された表スペースのデータ・セットは、既に作成されています。
PAGENUM 表スペースのデータ・セットが既に作成されており、次のいずれかの条件が真である場合、PAGENUM 属性に対する変更は、表スペースの定義に対する保留中の変更です。
  • 表スペースまたは関連の索引に、保留中の定義変更が既に存在する。
  • 指定する PAGENUM 属性が表スペースで現在使用されている値と異なる。
SEGSIZE 表スペースのデータ・セットは既に作成されており、以下の条件のいずれかが当てはまります。
  • 表スペースまたは表スペース内のすべてのオブジェクトの定義に対して、保留中の定義変更が既に存在しています。
  • ユニバーサル表スペースに対して指定された SEGSIZE 値が、既存の値と異なる。
  • 表スペースは、パーティション化された (UTS 以外) 表スペースから、範囲ごとの表スペースに変換されます。

増加対応パーティション (PBG) 表スペースの BUFFERPOOL、DSSIZE、MAXPARTITIONS、または SEGSIZE 属性に保留中の定義変更が指定されている場合、パーティションの数は、保留中の変更が適用される時点での既存データの量に基づいて決定され、パーティションの増加が発生する可能性があります。 LOB 列が存在する場合、SQLRULES (DB2) または SQLRULES (STD) が有効であるかどうか、または表スペースが明示的または暗黙的に作成されたかどうかに関係なく、新規に作成されたパーティションに対して追加の LOB 表スペースおよび補助オブジェクトを暗黙的に作成します。 新規 LOB オブジェクトは、既存の LOB オブジェクトからバッファー・プール属性および許可を継承します。

ALTER TABLE
以下の表に、ALTER TABLE ステートメントが保留中の定義変更として処理される原因となる文節および特定の条件をリストします。これは、ALTER TABLE ステートメントが発行された時点の定義またはデータには反映されません。 代わりに、表スペースまたは特定のパーティションが通知 REORG ペンディング状態 (AREOR) に置かれます。 表スペース、または特定の影響を受けたパーティションの再編成は、保留定義の変更を表の定義およびデータに適用します。 収容表スペースの定義は、不完全な状態であってはなりません。
条項またはオプション 次の場合に使用される保留定義変更...
ALTER COLUMN 表スペースのデータ・セットがすでに作成されており、以下のすべての条件が当てはまる場合、列のデータ・タイプ、長さ、精度、またはスケールを変更するステートメントは、表スペースの定義に対する保留中の変更です。
  • DDL_MATERIALIZATION サブシステム・パラメーターが ALWAYS_PENDING に設定されています。
  • 基本表スペースがユニバーサル表スペースである。
DROP COLUMN 表スペースのデータ・セットは既に作成されています。
ADD PARTITION データ・セットは既に定義されており、既存の論理パーティション間に新しいパーティションが追加されます。

通常、変更は保留中の変更であり、追加されたパーティションは通知 REORG 保留 (AREOR) 状況に置かれます。 整数が最後の論理パーティションを指定しない限り、次の論理パーティションも AREOR 状況になります。 ただし、影響を受けるパーティションに他の保留中の定義変更が存在しない場合は、制限付きの状況で、即時変更を使用できる場合があります。

ALTER PARTITION このステートメントは、以下のタイプのパーティション化表スペースの限界キーを変更します。
  • 範囲パーティション化表スペース
  • 表制御パーティションを持つパーティション化 (非 UTS) 表スペース。

通常、変更は保留中の変更であり、変更されたパーティションは通知 REORG 保留 (AREOR) 状況に置かれます。 整数が最後の論理パーティションを指定しない限り、次の論理パーティションも AREOR 状況になります。 ただし、影響を受けるパーティションに他の保留中の定義変更が存在しない場合は、制限付きの状況で、即時変更を使用できる場合があります。

以下の条件のいずれかが当てはまる場合、変更は即時であり、制限ステータスはありません。
  • 影響を受けるパーティションのデータ・セットにデータが含まれていません。
  • 可能なデータ値の範囲 (実際のデータ値ではなく) のみに基づいて、データが破棄されたり、パーティション間で移動されたりする可能性はありません。 この状態は、ステートメントが限界キーに同じ既存の値を指定している場合、または最後の論理パーティションの新しい限界キーが可能なデータ値の範囲を拡張した場合に発生する可能性があります。
変更の開始FL 500 パーティションの変更変更の終わり 変更の開始表スペースのデータ・セットは既に作成されています。変更の終わり
ALTER INDEX

以下の表に、ALTER INDEX ステートメントが保留中の定義変更として処理される原因となる文節および特定の条件をリストします。これは、ALTER INDEX ステートメントが発行された時点の定義またはデータには反映されません。 索引は、代わりに、REORG ペンディング通知 (AREOR) 状態になります。 適切なユーティリティーを使用して索引全体を再編成すると、変更が具体化され、保留中の定義変更がカタログおよびデータに適用されます。

表スペースに対する保留中の定義変更がない場合は、SHRLEVEL CHANGE を指定した REORG INDEX ユーティリティー、またはSHRLEVEL CHANGE あるいは REFERENCE を指定した REORG TABLESPACE ユーティリティーを実行し、索引の定義への変更を実体化できます。 表スペースに対しても保留定義変更が存在する場合は、SHRLEVEL CHANGE または REFERENCE を指定した REORG TABLESPACE ユーティリティーを実行して、索引の定義に対する変更 (および表スペースの保留定義) を有効にする必要があります。

条項またはオプション 次の場合に使用される保留定義変更...
BUFFERPOOL 索引のデータ・セットが作成され、以下のすべての条件が満たされます。
  • 基本表、または関連する XML 表あるいは補助表に対して索引が定義されています。この場合、基本表の表スペースは、ユニバーサル表スペース (UTS) であるか、保留中の定義変更によって UTS に変換されています。
  • バッファー・プールが、異なるサイズのバッファー・プールに変更されるか、あるいはバッファー・プールが同じサイズのバッファー・プールに変更され、表スペースまたは表スペース内のオブジェクトに保留中の定義変更がある。
COMPRESS 索引のデータ・セットが作成され、以下のすべての条件が満たされます。
  • 基本表、または関連する XML 表あるいは補助表に対して索引が定義されています。この場合、基本表の表スペースは、ユニバーサル表スペース (UTS) であるか、保留中の定義変更によって UTS に変換されています。
  • 圧縮属性が変更されたか、表スペース内の表スペースまたはオブジェクトに保留中の定義変更があります。