REORG TABLE コマンド

REORG TABLE コマンドは、フラグメント化されたデータを消去するために行を再作成し、情報を縮小化することによって、表を再編成します。 パーティション表では、単一パーティションを再編成できます。

範囲

このコマンドは、データベース・パーティション・グループ内のすべてのデータベース・パーティションに影響を与えます。

許可

REORG TABLE コマンドを使用するには、以下のいずれかの権限が必要です。
  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • DBADM
  • SQLADM
  • 表のスキーマに対する SCHEMAADM
  • 表に対する CONTROL 特権

必要な接続

データベース

コマンド構文

Read syntax diagramSkip visual syntax diagramREORGTABLEtable-nameTable clauseTable partitioning clause Database partition clause
Table clause
Read syntax diagramSkip visual syntax diagramCLASSICclassic-optionsINPLACEinplace-optionsSTOPPAUSERECLAIM EXTENTSALLOW WRITE ACCESSALLOW READ ACCESSALLOW NO ACCESS
classic-options
Read syntax diagramSkip visual syntax diagramALLOW NO ACCESSALLOW READ ACCESSUSEtbspace-nameINDEXindex-nameINDEXSCANLONGLOBDATAUSElongtbspace-nameKEEPDICTIONARYRESETDICTIONARY
inplace-options
Read syntax diagramSkip visual syntax diagram ALLOW WRITE ACCESSALLOW READ ACCESS FULLINDEXindex-nameTRUNCATE TABLENOTRUNCATE TABLECLEANUP OVERFLOWS STARTRESUME
Table partitioning clause
Read syntax diagramSkip visual syntax diagramON DATA PARTITIONpartition-name
Database partition clause
Read syntax diagramSkip visual syntax diagramONDBPARTITIONNUMDBPARTITIONNUMSPartition selection clauseALL DBPARTITIONNUMSEXCEPTDBPARTITIONNUMDBPARTITIONNUMSPartition selection clause)
Partition selection clause
Read syntax diagramSkip visual syntax diagram( ,db-partition-number1TOdb-partition-number2 )

コマンド・パラメーター

TABLE table-name
再編成する表を指定します。 表は、ローカルまたはリモート・データベースにあるものです。 名前または別名は、 スキーマテーブル名の形式を使用します。 スキーマ は、表の作成に使用したユーザー名です。 スキーマ名を省略した場合、 デフォルトのスキーマが想定されます。

RECLAIM EXTENTS パラメーターは、 カラム・オーガナイズ 表でサポートされる唯一のパラメーターです。

型付き表の場合、指定する表名は階層のルート表の名前でなければなりません。

マルチディメンション・クラスタリング (MDC) 表または挿入時クラスタリング (ITC) 表の再編成に対して索引を指定することはできません。 表の再編成を MDC 表または ITC 表に対してインプレースで使用することはできません。

データ・パーティション表の表再編成に対して ON DATA PARTITION 節が指定されている場合、指定されたデータ・パーティションのみが再編成されます。
  • 表に非パーティション索引が定義されていない場合、アクセス・モードは指定されたパーティションにのみ適用されます。 この制限には、システム生成の XML パス索引は含まれません。 ユーザーは表の他のパーティションから読み取ったりそこに書き込んだりできます。
  • 表に非パーティション索引が定義されている場合、 このALLOW NO ACCESS モードがデフォルトであり、サポートされる唯一のアクセス・モードです。 このモード制限では、システム生成の XML パス索引は除外されます。 この場合、表は ALLOW NO ACCESS モードになります。 ALLOW READ ACCESS を指定すると、 SQL1548N が戻されます (SQLSTATE 5U047)。
表 1. 非パーティションおよびパーティション表における CLASSIC 表の再編成に対してサポートされるアクセス・モード
コマンド 表タイプ Table partitioning clause サポートされるアクセス・モード
REORG TABLE 非パーティション表 適用外
ALLOW NO ACCESS
ALLOW READ ACCESS1
REORG TABLE パーティション表 未指定
ALLOW NO ACCESS1
REORG TABLE (索引が存在しないか、表に定義されているパーティション索引のみが存在します。) パーティション表 ON DATA PARTITION
ALLOW NO ACCESS
ALLOW READ ACCESS1
REORG TABLE (非パーティション索引は、システム生成の XML パス索引を除き、表に定義されます。) パーティション表 ON DATA PARTITION
ALLOW NO ACCESS1
注:
  1. アクセス節が指定されていない場合のデフォルト・モード。

データ・パーティション表の場合、 表を再編成すると、表が再編成された後にその表の非パーティション索引およびパーティション索引が再作成されます。 ON DATA PARTITION 節を使用してデータ・パーティション表の特定のデータ・パーティションを再編成する場合、表の再編成によって、指定されたパーティションの非パーティション索引とパーティション索引のみが再作成されます。

Table clause

CLASSIC
表をその表の新しいコピーを作成することによって再編成してから、元の表を再編成されたコピーで置換します。 表の索引は、置換後に再作成されます。 元の表は、次で説明するアクセス節によって置換操作が開始するまで、 照会で使用できる場合があります。
INPLACE
ユーザー・アクセスを許可しながら、表を再編成します。

INPLACE 表再編成は、拡張索引、式ベース索引、または表内の XML 列に対して定義された索引を持たない非パーティション表、非 MDC 表、および非 ITC 表に制限されます。 パーティション表の場合、表のインプレース再編成は、表に非パーティション索引が定義されていない場合、および ON DATA PARTITION が指定されている場合にのみ許可されます。 システム生成の XML パス索引は除外されます。 一度に再編成できるデータ・パーティションは 1 つだけです。 INPLACE 表再編成は、サイズが少なくとも 3 ページである表に対してのみ実行できます。

表の INPLACE 再編成に対して START を発行する前に、その表で一時停止または実行中の INPLACE 再編成を完了または停止する必要があります。 INPLACE 再編成が一時停止しているか、パーティション表で実行されている場合、別のパーティションで INPLACE 再編成を行うために START を発行する前に、その操作を停止する必要があります。

INPLACE 表の再編成は非同期で行われ、即時には有効にならない可能性があります。

STOP
インプレース REORG 処理を現時点で停止します。
PAUSE
インプレース REORG を現時点で中断または一時停止します。
RECLAIM EXTENTS
再編成する表を指定し、使用されていないエクステントを再利用します。 table-name 変数では、マルチディメンション・クラスタリング (MDC) 表、挿入時クラスタリング (ITC) 表、またはカラム・オーガナイズ表を指定する必要があります。 名前または別名は、 スキーマテーブル名の形式を使用します。 スキーマ は、表の作成に使用されたユーザー名です。 スキーマ名を省略した場合、 デフォルトのスキーマが想定されます。
注: RECLAIM EXTENTS パラメーターは、現在、縦欄の表のラージ・オブジェクト (LOB) データに対しては機能しません。

REORG TABLE RECLAIM EXTENTSON DATA PARTITION 節が指定されている場合、アクセス節は指定されたパーティションにのみ適用されます。 指定されたパーティションのエクステントが再利用される間に、ユーザーは表の残りの部分から読み取ったりそこに書き込んだりできます。 この状態も、デフォルトのアクセス・レベルに適用されます。

ALLOW NO ACCESS
REORG TABLE RECLAIM EXTENTS の場合、エクステントが再利用される間に、他のユーザーがその表にアクセスできないことを指定します。
ALLOW READ ACCESS
REORG TABLE RECLAIM EXTENTS の場合、エクステントが再利用される間に、他のユーザーがその表に読み取り専用アクセスができることを指定します。
ALLOW WRITE ACCESS
REORG TABLE RECLAIM EXTENTS の場合、エクステントが再利用される間に、他のユーザーがその表で読み取り/書き込みができることを指定します。 この値はデフォルト・オプションです。

classic-options

ALLOW NO ACCESS
表が再編成される間に、他のユーザーがその表にアクセスできないことを指定します。

ALLOW NO ACCESS モードはデフォルトであり、 ON DATA PARTITION 節を使用せずにパーティション表を再編成する場合にのみサポートされるアクセス・モードです。

データ・パーティション表に対して ON DATA PARTITION 節が指定されている場合、指定されたデータ・パーティションのみが再編成されます。
  • 表に非パーティション索引が定義されていない場合、指定されたパーティションのみが ALLOW NO ACCESS モードに制限されます。 この制限には、システム生成の XML パス索引は含まれません。 ユーザーは表の他のパーティションから読み取ったりそこに書き込んだりできます。
  • 表に非パーティション索引が定義されている場合、 このALLOW NO ACCESS モードがデフォルトであり、サポートされる唯一のアクセス・モードです。 この制限には、システム生成の XML パス索引は含まれません。 この場合、表は ALLOW NO ACCESS モードになります。
ALLOW READ ACCESS
再編成中に表への読み取り専用アクセスを許可します。

ALLOW READ ACCESS モードは、非パーティション表のデフォルト・モードです。

データ・パーティション表に対して ON DATA PARTITION 節が指定されている場合、指定されたデータ・パーティションのみが再編成されます。
  • 表に非パーティション索引が定義されていない場合、 ALLOW READ ACCESS モードがデフォルト・モードになります。 この制限には、システム生成の XML パス索引は含まれません。 指定されたパーティションのみがこのアクセス・モード・レベルに制限されます。 ユーザーは表の他のパーティションから読み取ったりそこに書き込んだりできます。
  • 表に非パーティション索引が定義されている場合、 ALLOW READ ACCESS モードはサポートされません。 この制限には、システム生成の XML パス索引は含まれません。 この場合に ALLOW READ ACCESS を指定すると、 SQL1548N が戻されます (SQLSTATE 5U047)。
USE tbspace-name
再編成される表の一時コピーを保管する SYSTEM TEMPORARY 表スペースの名前を指定します。 表スペース名を指定しない場合、 データベース・マネージャー は、再編成される表を含む表スペースに表の作業用コピーを保管します。

SYSTEM TEMPORARY 表スペースのページ・サイズが、表データが置かれている表スペースのページ・サイズと一致しない場合、 Db2® データベース製品は、正しいサイズの TEMPORARY 表スペースを見つけようとします。 正しいサイズは、LONG/LOB オブジェクトのサイズと一致します。 このアクションは、8 KB、16 KB、または 32 KB の表オブジェクトに適用されます。 再編成が正常に実行されるためには、そのような表スペースが存在していなければなりません。

パーティション表の場合、表に含まれるデータ・パーティションの再編成において、TEMPORARY 表スペースが一時ストレージとして使用されます。 パーティション表全体の再編成では、一度に 1 つのデータ・パーティションが再編成されます。 TEMPORARY 表スペースは、表全体ではなく、表に含まれる最大のデータ・パーティションを保持できる必要があります。 ON DATA PARTITION 節が指定されている場合、TEMPORARY 表スペースは指定されたパーティションを保持できなければなりません。

パーティション表の表スペース名を指定しない場合、各データ・パーティションの存在する表スペースが、そのデータ・パーティションの一時ストレージとして使用されます。 データ・パーティションのコピーを保持するのに十分なフリー・スペースが、各データ・パーティションの表スペースに存在している必要があります。

INDEX index-name
表を再編成する際に使用する索引を指定します。 完全修飾索引名を スキーマ.指標名の形式で指定しない場合は、デフォルトのスキーマが想定されます。 スキーマ は、索引の作成に使用されたユーザー名です。 データベース・マネージャー は、索引を使用して、再編成する表のレコードを物理的に再配列します。

INPLACE 表の再編成では、クラスタリング索引が表に定義されていて、索引が指定されている場合、それはクラスタリング索引でなければなりません。 INPLACE オプションが指定されていない場合は、指定された索引が使用されます。 索引名を指定しない場合には、そのレコードは順番に関係なく再編成されます。 ただし、表にクラスタリング索引が定義されていて、索引が指定されていない場合は、クラスタリング索引を使用して表がクラスター化されます。 MDC 表または ITC 表を再編成しているときには、索引を指定できません。

表の再編成で INDEX 節と ON DATA PARTITION 節の両方を使用する場合、指定されたパーティションのみが索引 指標名を使用して再編成されます。

INDEXSCAN
クラスタリング REORG では、索引スキャンが使用されて表レコードが再配列されます。 索引を介して表にアクセスすることにより、表の行を再編成します。 デフォルトの方法は、必要に応じて TEMPORARY 表スペースを使用しながら、表をスキャンして結果をソートし表を再編成することです。 索引キーはソートの順序に配列していますが、 スキャンおよびソートはまず索引から行 ID を読み取って行をフェッチするよりも通常は高速です。

拡張行サイズを使用する表の場合、表をスキャンして結果をソートし、表を再編成するデフォルトの方法はサポートされません。

式ベースの索引の場合、表をスキャンして結果をソートし、表を再編成するデフォルトの方法はサポートされません。

LONGLOBDATA
長いフィールドおよび LOB データが再編成されます。

デフォルトでは、これらのオブジェクトが再編成されないようになっています。これは時間がかかり、クラスタリングが改善されないためです。 コンパクト が LONG または LOB 列に指定されていない場合、LONGLOBDATA は LOB オブジェクトのサイズを小さくしない可能性があります。 ただし、XML 列を持つ表に対して LONGLOBDATA オプションを指定して再編成を実行すると、未使用のスペースが再利用され、XML ストレージ・オブジェクトのサイズが削減されます。

このパラメーターは、既存の LOB データをインライン LOB データに変換する場合に必要です。

拡張行サイズを使用する表の場合は、表の変更後の最初のオフライン REORG で LONGLOBDATA が適用されます。

USE LONG表スペース名
このパラメーターを使用して、LONG データの再作成に使用する TEMPORARY 表スペースの名前を指定できます。 表オブジェクトまたは LONG オブジェクトのいずれにも TEMPORARY 表スペースが指定されていない場合、オブジェクトは、それらが配置されている表スペース内に構成されます。 表に TEMPORARY 表スペースが指定されているが、このパラメーターが指定されていない場合は、基本 REORG データに使用される表スペースが使用されます。 ただし、ページ・サイズが異なる場合、 Db2 データベース・システムは、長いオブジェクトを作成するために適切なページ・サイズの一時コンテナーを選択しようとします。

USE longtbspace-名前 を指定する場合は、 USE 表スペース名 も指定する必要があります。 そうでない場合、longtbspace-name 引数は無視されます。

KEEPDICTIONARY
表の COMPRESS 属性が YES であり、表にコンプレッション・ディクショナリーがある場合、新しいディクショナリーは作成されません。 再編成中に処理されるすべての行は、既存のディクショナリーを使用した圧縮の対象になります。 COMPRESS 属性が YES であり、表のコンプレッション・ディクショナリーが存在しない場合、ディクショナリーが作成され、表が圧縮されます。 この操作は、表が特定のサイズ (約 1 MB から 2 MB) で、この表内に十分なデータが存在する場合にのみ行われます。 REORG RESETDICTIONARYを明示的に指定し、少なくとも 1 つの行が表に存在する場合は、ディクショナリーが作成されます。 表の COMPRESS 属性が NO に設定され、表にコンプレッション・ディクショナリーがある場合、REORG 処理ではディクショナリーが保持されます。 新しく再編成された表のすべての行が圧縮解除されます。 基本表の行に保管されない LOB などの一部のデータは圧縮できません。

LONGLOBDATA オプションを指定しない場合は、表の行データのみが再編成されます。 以下の表は、LONGLOBDATA オプションが指定されていないときの、REORG コマンドの KEEPDICTIONARY 構文の動作を説明しています。

表 2. REORG KEEPDICTIONARY
圧縮 ディクショナリーが存在するかどうか 結果と効果
Y Y ディクショナリーはそのまま、行圧縮
Y N ディクショナリーを作成、行圧縮
N Y ディクショナリーはそのまま、全行圧縮解除
N N 影響なし、全行圧縮解除

以下の表は、LONGLOBDATA オプションが指定されているときの、REORG コマンドの KEEPDICTIONARY 構文の動作を説明しています。

表 3. LONGLOBDATA オプションが指定されているときの REORG KEEPDICTIONARY。
圧縮 表の行データ・ディクショナリーが存在する XML ストレージ・オブジェクト・ディクショナリーが存在する1 コンプレッション・ディクショナリー データ圧縮
Y Y Y ディクショナリーを保存します。 既存のデータは、圧縮されます。 新規データは圧縮されます。
Y Y N 表の行ディクショナリーを保存し、XML ストレージ・オブジェクト・ディクショナリーを作成します。 既存のデータは、圧縮されます。 新規データが圧縮されます
Y N Y 表の行ディクショナリーを作成し、XML ディクショナリーを保存します。 既存のデータは、圧縮されます。 新規データは圧縮されます。
Y N N 表の行ディクショナリーおよび XML ディクショナリーを作成します。 既存のデータは、圧縮されます。 新規データが圧縮されます
N Y Y 表の行ディクショナリーおよび XML ディクショナリーを保存します。 表データは圧縮解除されます。 新規データは圧縮されません。
N Y N 表の行ディクショナリーを保存します。 表データは圧縮解除されます。 新規データは圧縮されません。
N N Y XML ディクショナリーを保存します。 表データは圧縮解除されます。 新規データは圧縮されません。
N N N 影響なし。 表データは圧縮解除されます。 新規データは圧縮されません。
注: コンプレッション・ディクショナリーは、表の XML ストレージ・オブジェクト用に作成できます。 この操作を行うには、XML 列を Db2 9.7 以降の表に追加するか、 ADMIN_MOVE_TABLE ストアード・プロシージャーを使用して表をマイグレーションする必要があります。

表の再初期化または切り捨ての場合、表の圧縮属性が NO に設定されていると、既存のディクショナリーはすべて破棄されます。 置換操作は、表の再初期化または切り捨ての 1 つの例です。 逆に、ディクショナリーが存在し、表の圧縮属性が YES に設定されている場合、切り捨てによってディクショナリーが保存され、破棄されることはありません。 リカバリーのことを考慮して、また将来データ・キャプチャーの変更 (つまりレプリケーション) をサポートすることを考慮して、ディクショナリーは全体としてログ記録されます。

RESETDICTIONARY
表の COMPRESS 属性が YES の場合、新しい行コンプレッション・ディクショナリーが作成されます。 再編成の際に処理されるすべての行は、この新しいディクショナリーによる圧縮の対象になります。 前のすべてのディクショナリーは、このディクショナリーに置き換わります。 表の COMPRESS 属性が NO に設定され、表に既存のコンプレッション・ディクショナリーがある場合、REORG 処理によってそのディクショナリーが削除されます。 新しく再編成された表のすべての行が圧縮解除されます。 基本表の行に保管されていない LOB データなど、一部のデータを圧縮することはできません。

LONGLOBDATA オプションを指定しない場合は、表の行データのみが再編成されます。 以下の表は、LONGLOBDATA オプションが指定されていないときの、REORG コマンドの RESETDICTIONARY 構文の動作を説明しています。

表 4. REORG RESETDICTIONARY
圧縮 ディクショナリーが存在するかどうか 結果と効果
Y Y ディクショナリー新規作成*、行圧縮。 DATA CAPTURE CHANGES オプションが CREATE TABLE または ALTER TABLE ステートメントで指定されていると、現在のディクショナリーが保持されます (これは履歴コンプレッション・ディクショナリーと呼ばれます)。
Y N ディクショナリー新規作成、行圧縮
N Y ディクショナリー除去、全行圧縮解除。 DATA CAPTURE NONE オプションが CREATE TABLE または ALTER TABLE ステートメントで指定されていると、指定された表の履歴コンプレッション・ディクショナリー も除去されます。
N N 影響なし、全行圧縮解除

* 表にデータが存在しない場合、RESETDICTIONARY 操作は既存のディクショナリーを保持します。 この操作を行うには、ディクショナリーが存在し、圧縮属性が有効になっている必要があります。 また、すべての行が内部最小レコード長を下回っている場合、またはどの行も圧縮によって長さが減らされていない場合にも、ディクショナリーは保持されます。

以下の表は、LONGLOBDATA オプションが指定されているときの、REORG コマンドの RESETDICTIONARY 構文の動作を説明しています。

表 5. LONGLOBDATA オプションが指定されているときの REORG RESETDICTIONARY。
圧縮 表の行データ・ディクショナリーが存在する XML ストレージ・オブジェクト・ディクショナリーが存在する1 データ・ディクショナリー データ圧縮
Y Y Y ディクショナリーの作成2 3 既存のデータは、圧縮されます。 新規データが圧縮されます
Y Y N 新規の表の行ディクショナリーを作成し、新規の XML ディクショナリーを作成します3 既存のデータは、圧縮されます。 新規データが圧縮されます
Y N Y 表の行データ・ディクショナリーを作成し、新規 XML ディクショナリーを作成します。 既存のデータは、圧縮されます。 新規データが圧縮されます
Y N N ディクショナリーを作成します。 既存のデータは、圧縮されます。 新規データが圧縮されます
N Y Y ディクショナリーを除去します。 既存および新規のデータは圧縮されません。 既存の表データは圧縮解除されます。 新規データは圧縮されません。
N Y N

表の行ディクショナリーを除去します。 すべてのデータは圧縮解除されます。

既存の表データは圧縮解除されます。 新規データは圧縮されません。
N N Y XML ストレージ・オブジェクト・ディクショナリーを除去します。 既存の表データは圧縮解除されます。 新規データは圧縮されません。
N N N 影響なし。 既存の表データは圧縮解除されます。 新規データは圧縮されません。
注:
  1. コンプレッション・ディクショナリーは、表の XML ストレージ・オブジェクト用に作成できます。 この操作を行うには、XML 列が Db2 9.7 以降の表に追加されているか、オンライン表移動を使用して表がマイグレーションされている必要があります。
  2. 表にデータが存在しない場合、 RESETDICTIONARY 操作は既存のディクショナリーを保持します。 この操作を行うには、ディクショナリーが存在し、圧縮属性が有効になっている必要があります。 また、すべての行が内部最小レコード長を下回っている場合、またはどの行も圧縮によって長さが減らされていない場合にも、ディクショナリーは保持されます。
  3. DATA CAPTURE CHANGES オプションが CREATE TABLE または ALTER TABLE ステートメントで指定されていると、現在のデータ・ディクショナリーが保持されます (これは履歴コンプレッション・ディクショナリーと呼ばれます)。

inplace-options

ALLOW READ ACCESS
再編成時に表への読み取り専用アクセスを許可します。
ALLOW WRITE ACCESS
再編成時に表への書き込みアクセスを許可します。 この振る舞いはデフォルトです。
FULL
表はページを埋めるように再編成されますが、表の PCTFREE のパーセンテージは維持されます。 オプションで、INDEX 節を指定すると、データを再表示するために表内で行データが移動されます。 また、オーバーフロー・レコードも、この処理の一環として標準レコードに変換されます。 この動作がデフォルトの動作です。
INDEX index-name
表を再編成する際に使用する索引を指定します。 完全修飾名を スキーマ.指標名の形式で指定しない場合は、デフォルトのスキーマが想定されます。 スキーマ は、索引の作成に使用されたユーザー名です。 データベース・マネージャー は、索引を使用して、再編成する表のレコードを物理的に再配列します。

INPLACE 表の再編成では、クラスタリング索引が表に定義されていて、索引が指定されている場合、それはクラスタリング索引でなければなりません。 INPLACE オプションが指定されていない場合は、指定された索引が使用されます。 索引名を指定しない場合には、そのレコードは順番に関係なく再編成されます。 ただし、表にクラスタリング索引が定義されていて、索引が指定されていない場合は、クラスタリング索引を使用して表がクラスター化されます。 MDC 表または ITC 表を再編成しているときには、索引を指定できません。

表の再編成で INDEX 節と ON DATA PARTITION 節の両方を使用する場合、指定されたパーティションのみが索引 指標名を使用して再編成されます。

TRUNCATE TABLE
表の終わりの空のエクステントすべてを再利用して、それらのエクステントを表スペースに返します。 スペース再利用は、 INPLACE 再編成の終了時に実行されます。 切り捨て中は、表が S ロックされて、表に対する更新が防止されます。 ALLOW WRITE ACCESS が指定されている場合も、更新は不可能です。 この動作がデフォルトの動作です。
NOTRUNCATE TABLE
ALLOW WRITE ACCESS を指定すると、この操作では再編成全体を通じて書き込みアクセスが許可されます。 表によって使用されているスペースを再利用するためのアクションは実行されません。 インプレース の再編成後に表を切り捨てません。 切り捨ての際に、表は S ロックされます。
START
インプレース REORG 処理を開始します。 このオプションがデフォルトなので、このキーワードはオプションです。
RESUME
以前に一時停止した INPLACE 表再編成を継続または再開します。
注: INPLACE 再編成が再開されると、元の reorg 呼び出しで指定されたオプションは、 reorg RESUME 操作中は保持されません。 再開された reorg 操作でこれらのオプションが必要な場合は、reorg RESUME 呼び出し内で再度オプションを指定する必要があります。 例えば、NOTRUNCATE オプションまたは ALLOW READ ACCESS オプションが元の reorg 呼び出しでは指定されたが、reorg RESUME 呼び出しでは指定されなかった場合、再開された reorg 操作はこれらのオプションを使用しません。
CLEANUP OVERFLOWS
INPLACE CLEANUP OVERFLOWS 再編成では、表を全探索して、ポインター・レコードまたはオーバーフロー・レコードを検索します。 見つかったレコードはすべて、操作によって通常のレコードに変換されます。 この操作によって、ポインター・レコードまたはオーバーフロー・レコードがかなりの数保持された表のパフォーマンスが向上します。 この操作では、表のサイズは縮小しません。

Table partitioning clause

ON DATA PARTITION partition-name
データ・パーティション表では、再編成するデータ・パーティションを指定します。

Db2 9.7 フィックスパック 1 以降のリリースでは、この節を REORG TABLE コマンドで使用して、特定のパーティションのデータを再編成できます。

パーティション表に対する REORG TABLE コマンドでこの節を使用するときに、パーティション partition-name が指定した表にない場合、再編成は失敗し、理由コード 1 と共に SQL2222N を戻します。 パーティション partition-name がアタッチまたはデタッチ状態の場合、再編成は失敗し、理由コード 3 と共に SQL2222N を戻します。

パーティション表が reorg pending 状態で、表に非パーティション索引が定義されている場合、 REORG TABLE コマンドは失敗し、 SQL1549N (SQLSTATE 5U047) を戻します。

データベース・ パーティション

ON DBPARTITIONNUM | ON DBPARTITIONNUMS
データベース・パーティションのセットに対して操作を実行します。
ALL DBPARTITIONNUMS
db2nodes.cfg ファイルに指定されているすべてのデータベース・パーティションに対して操作を実行することを指定します。 データベース・パーティション節が指定されていない場合、このオプションがデフォルトです。
EXCEPT
データベース・パーティション・リストに指定されているパーティションを除き、 db2nodes.cfg ファイルに指定されているすべてのデータベース・パーティションに対して操作を実行することを指定します。

Partition selection clause

db-partition-number1
データベース・パーティション・リスト内のデータベース・パーティション番号を指定します。
db-partition-number2
2 番目のデータベース・パーティション番号を指定し、 db-partition-number1 から db-partition-number2 までのすべてのデータベース・パーティションがデータベース・パーティション・リストに含まれるようにします。

以下の例は、TEMPORARY 表スペース mytemp1を使用して表を再編成する方法を示しています。
db2 reorg table homer.employee use mytemp1
以下の例は両方とも、4 パーティション・システムのデータベース・パーティション 1、2、3、および 4 で構成されるパーティション・グループ内の表を再編成するのに役立ちます。
db2 reorg table employee index empid on dbpartitionnum (1,3,4)
db2 reorg table homer.employee index homer.empid on all 
    dbpartitionnums except dbpartitionnum (2)
次の例は、EMPLOYEE 表を再編成するための作業域として、SYSTEM TEMPORARY 表スペース TEMPSPACE1 を使用する方法を示しています。
db2 reorg table homer.employee use tempspace1
以下の例は、デフォルト・スキーマ HOMER を使用して EMPLOYEE 表のインプレース再編成を開始、一時停止、および再開する方法を示しています。 このスキーマは、前の例で明示的に指定されています。
  db2 reorg table employee index empid inplace start
  db2 reorg table employee inplace pause
  db2 reorg table homer.employee inplace allow read access 
   notruncate table resume
REORG を再開するコマンドには、読み取り専用アクセスを指定し、切り捨てステップをスキップするための追加のキーワードが含まれています。切り捨てステップは、表を共有ロックします。

使用上の注意

REORG TABLE コマンドの使用には、以下の制約事項が適用されます。
  • REORG ユーティリティーでは、ニックネームの使用はサポートされません。
  • REORG TABLE コマンドは、宣言済み一時表または作成済み一時表に対してサポートされていません。
  • REORG TABLE コマンドは、ビューに対しては使用できません。
  • 表の再編成は、範囲がクラスター化された表との互換性がありません。 表の範囲領域は常に、クラスター化されているからです。
  • REORG TABLE コマンドは、表が存在する表スペースのオンライン・バックアップが実行されている間は、DMS 表スペース内のパーティション表に対して使用することはできません。 この制限には、LOB および索引のバックアップが含まれます。
  • REORG TABLE コマンドは、索引拡張子に基づく索引を使用できません。
  • 表が REORG 保留中 状態の場合、表のインプレース再編成は許可されません。
  • 同じ TEMPORARY DMS 表スペースを使用して表の再編成を並列実行することはサポートされません。
  • 表に式ベースのキーが定義されている索引がある場合、インプレース表再編成はサポートされません。
  • イベント・モニターの書き込み先である表に対して 再編成を実行する場合は、その前にその表に関係するイベント・モニターを非活動化しておく必要があります。
データ・パーティション表の場合、REORG TABLE コマンドの使用には以下の制約事項が適用されます。
  • SYSCAT.TABLES の中でその表の ACCESS_MODE はフル・アクセス権限でなければなりません。
  • 再編成では、アタッチまたはデタッチ操作のため、制限状態にあるデータ・パーティションがスキップされます。 ON DATA PARTITION 節が指定されている場合、そのパーティションは完全にアクセス可能でなければなりません。
  • 表の再編成中にエラーが発生した場合、一部の索引または索引パーティションは無効のままとなる可能性があります。 表の非パーティション索引は、再編成が最初のデータ・パーティションの置換フェーズに達するかそれをパスすると、無効としてマークされます。 置換フェーズに到達した、またはそのフェーズを通過したデータ・パーティションの索引パーティションには、無効のマークが付けられます。 索引は、表またはデータ・パーティションへの次回のアクセス時に再作成されます。
  • ON DATA PARTITION 節を指定して REORG TABLE コマンドを発行すると、指定されたデータ・パーティションのみが reorg pending 状態から解除されます。 この制約事項は、表に定義されているパーティション索引のみを持つデータ・パーティション表が REORG 保留中 状態である場合に適用されます。 表の残りのパーティションを reorg pending 状態から解除するには、表全体に対して ( ON DATA PARTITION 節を指定せずに) REORG TABLE コマンドを発行します。 残りのパーティションごとに、 ON DATA PARTITION 節を指定して REORG TABLE コマンドを発行することもできます。

索引再編成の現在の進行状況に関する情報は、データベース・アクティビティーのヒストリー・ファイルに書き込まれます。 履歴ファイルには、 それぞれの再編成イベントに関するレコードが含まれます。 このファイルを表示するには、再編成する表を含むデータベースに対して LIST HISTORY コマンドを実行します。

このほか、表スナップショットを使用して、表および索引の再編成の進行状況をモニターすることもできます。 表の再編成のモニター・データは、 「データベース・モニター表スイッチ (Database Monitor Table Switch)」の設定値に関係なく記録されます。

エラーが発生すると、SQLCA メモリー・ダンプがヒストリー・ファイルに書き込まれます。 表のインプレース再編成の場合、状況が PAUSED として記録されます。

表が索引に関してクラスター化されている場合、索引の変更回数が多すぎると、索引がクラスター化されなくなる可能性があります。 この状態は、索引スキャンを使用して行をフェッチする選択操作のパフォーマンスに悪影響を与える可能性があります。 CLASSIC 表または INPLACE 表の再編成を使用して、データを再クラスター化することができます。 ただし、 Db2 でよりスマートなデータ・プリフェッチを実装すると、そのようなシナリオの影響と、索引に関するクラスター表の必要性が軽減されます。

表のインプレース再編成の場合、表のページ数が 2 ページ以下であれば、REORG 操作は実行されません。 REORG 操作の履歴ファイルには項目が作成されず、スナップショットまたはモニター・メトリックには REORG 情報は表示されません。

従来の表の再編成 (オフライン再編成) では、再編成の最後のフェーズで索引が再作成されます。 表の再編成を準備する場合は、 REORG TABLE コマンドで TEMPORARY 表スペースを指定します。 別の TEMPORARY 表スペースがある場合は、表の再編成に伴うソートに使用できます。 ただし、表のインプレース再編成 (オンライン再編成) では索引は再作成されません。 インプレース表再編成の完了後に REORG INDEXES コマンドを発行することをお勧めします。 インプレース表再編成は非同期であるため、 REORG INDEXES コマンドを発行する前に、インプレース表再編成が完了していることを確認してください。 インプレース表再編成が完了する前に REORG INDEXES コマンドを発行すると、再編成が失敗する可能性があります (SQLCODE -2219)。

REORG が MDC 表の索引を再作成する場合、 Full_Block ヒント・ビットは設定されません。 Full_Block ヒントが設定されていないため、REORG の完了後に既存のディメンション値から行を挿入し、 DB2_TRUST_MDC_BLOCK_FULL_HINT レジストリー変数をオンにすると、挿入のパフォーマンスが低下する可能性があります。 挿入のパフォーマンスは、ディメンション値の挿入が完了した後、そのディメンション値ごとに自動的に向上します。 詳しくは、 DB2_TRUST_MDC_BLOCK_FULL_HINT パフォーマンス変数を参照してください。

何回も修正されてデータがフラグメント化して、 アクセス・パフォーマンスが大幅に低下した表も REORG TABLE コマンドの対象になります。 また、構造化タイプ列のインライン長を変更した後に REORG TABLE ユーティリティーを開始して、変更したインライン長の利点を活用する必要があります。 REORGCHK コマンドを使用して、表の再編成が必要であるかどうか判別してください。 REORG TABLE ユーティリティーを開始する前に、すべてのデータベース操作を完了し、すべてのロックを解放してください。 このステップを行うには、 WITH HOLD を指定してオープンしたすべてのカーソルをクローズし、COMMIT または ROLLBACK を発行します。 表の再編成の後で、RUNSTATS を使用して表統計を更新し、 REBIND を使用してこの表を使用するパッケージを再バインドします。 再編成ユーティリティーは、暗黙的にすべてのカーソルをクローズします。

Db2 9.7 フィックスパック 1 以降では、CLASSIC オプションを使用する REORG TABLE コマンドをデータ・パーティション表に対して発行して、パーティション上のさまざまなデータ・パーティションまたはパーティション索引を並行して再編成することができます。 幾つかのデータ・パーティションを同時に再編成したり、1 つのパーティションで複数のパーティション索引を再編成したりする場合、ユーザーは無関係のパーティションにはアクセスできますが、影響を受けるパーティションにはアクセスできません。 同一表に対して同時に操作する複数の REORG コマンドを発行するには、以下の基準をすべて満たす必要があります。
  • REORG コマンドは、 ON DATA PARTITION 節を使用して異なるパーティションを指定する必要があります。
  • REORG コマンドは、ALLOW NO ACCESS モードを使用して、データ・パーティションに対するアクセスを制限しなければならない。
  • REORG TABLE コマンドを発行する場合、パーティション表はパーティション索引のみを持つ必要があります。 この表には、非パーティション索引 (システム生成の XML パス索引を除く) を定義することはできません。
非パーティション索引がなく (システムが生成した XML パス索引を除く)、パーティション P1、P2、P3、P4 を使用するパーティション表 T1 の場合、以下の複数の REORG コマンドを並行して実行することができます。
REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P1
REORG TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P2
REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P3
並行 REORG コマンドを使用する場合、以下のような操作はサポートされません。
  • 表に ON DATA PARTITION 節を指定せずに REORG コマンドを使用する。
  • データ・パーティションを追加、アタッチ、またはデタッチするのに、表で ALTER TABLE ステートメントを使用する。
  • データを表にロードする。
  • 表を含むオンライン・バックアップを実行します。

表の値圧縮をアクティブ化または非アクティブ化したために表に混合した行形式が含まれている場合、 オフラインで表を再編成することによって、既存の行すべてをターゲットの行形式に変換することができます。

複数のデータベース・パーティションに分散している表の表または索引の再編成が失敗すると、失敗したデータベース・パーティションのみが表または索引の再編成をロールバックします。

再編成が失敗した場合に一時ファイルを削除しないでください。 データベース・マネージャー は、これらのファイルを使用してデータベースをリカバリーします。

索引の名前が指定されている場合、 データベース・マネージャー は索引内の順序に従ってデータを再編成します。 パフォーマンスを最大にするため、SQL 照会で頻繁に使用される索引を指定してください。 索引の名前が指定されておらず、クラスタリング索引が存在する場合、データはクラスタリング索引に従って配列されます。

表の PCTFREE 値は、ページごとに指定されたフリー・スペースの量を決定します。 この値を設定しない場合、ユーティリティーは、各ページに可能な限り大きなスペースを割り当てます。

表の再編成の後に表スペースのロールフォワード・リカバリーを完了させるには、REGULAR 表スペースと LARGE 表スペースの両方でロールフォワード・リカバリーが有効になっていなければなりません。

COMPACT オプションを使用しない LOB 列が表に含まれている場合、LOB DATA ストレージ・オブジェクトは、表の再編成後に大幅に大きくなる可能性があります。 このステップは、行が再編成された順序、および使用される表スペースのタイプ (SMS または DMS) に応じて異なります。

XML データの索引は、 REORG TABLE コマンドによって再作成される場合があります。 詳しくは、 XML データの索引の再作成を参照してください。

インプレース REORG 操作は、内部レコードを移動できないため、表内のスペースを完全にはレクラメーション処理できない可能性があります。