再作成プロセスでは、指定されたAMPで、フォールバック データを使用して基本データを回復し、基本データを使用してフォールバック データを回復します。再作成するテーブルの破損していると見なされる現在の内容が削除され、その内容に応じてフォールバック データまたは基本データに置き換えられます。フォールバック保護のないテーブルに対するTable Rebuildでは、表ヘッダー情報のみが保存された空のテーブルが復元されます。FALLBACK TABLESオプションを使用すると、フォールバック保護のある表だけが再作成されます。REBUILD AMP FALLBACK TABLESを参照してください。
グローバル一時テーブル、揮発テーブル、結合インデックス、およびハッシュ インデックスは再作成できません。壊れている可能性があるインデックスについては、削除して必要に応じて作成し直してください。
非フォールバック システム テーブルには、各AMP固有の情報が格納されるテーブル(DBC.DataBaseSpaceやDBC.Acctgなど)があります。それらのテーブルでは、データベース領域の使用状況、CPU使用状況、I/O統計など、AMPの現在の情報が保持されます。これらのテーブルは再作成はされませんが、再作成されたAMPがオンライン状態に設定されたあとでシステムによって自動的に更新されます。
データベースの再始動によってALL TABLES再作成プロセスが中断された場合、中断された箇所から再作成プロセスを再開することができます。詳細は、RESTART REBUILDを参照してください。
再作成時のロック
- データベース レベルのREADロックは、破損したテーブルを再作成するためのデータのソースとして使用されるAMPのデータベースに対して設定されます。これは、Table Rebuildで適用されるデフォルトのロックのタイプです。
- テーブル レベルの読み取りロックは、破損したテーブルを再作成するためのデータのソースとなる個々のテーブルに対して設定されます。
- 行範囲レベルのREADロックは、選択した行のグループのみを対象とするロックです。このタイプのロックによって、破損したテーブルを再作成するためのデータのソースとして使用されるテーブルを同時に更新することができます。
基本データを再作成する場合、対応するフォールバック データが格納されたAMPに対してこれらのロックが設定されます。フォールバック データを再作成する場合は、対応する基本データが格納されたAMPに対して設定されます。
データベース、テーブル、または行範囲のいずれのオプションを指定していても、Table Rebuildユーティリティは、再作成するデータベースまたはテーブルと同じクラスタに属するすべてのオンラインAMPに対するREADロックを要求します。それらのAMPに、再作成するAMPにコピーして戻す有効なデータが格納されます。再作成されたAMPに有効なデータをコピーして戻せるように、再作成するローカルのAMPに行範囲-レベルのロックが適用されます。
データベースおよびテーブルの再作成では、ロックが取得されたあとで処理が開始します。行範囲の再作成では、テーブル レベルのロックが行範囲のロックに変更されてから、処理が開始します。
すべてのデータまたは基本データの再作成時にAMPがオンライン状態の場合には、EXCLUSIVEロックがデータベースまたはテーブルに対して設定されます。フォールバック データの再作成時にAMPがオンライン状態の場合には、WRITEロックかデータベースまたはテーブルに対して設定されます。AMPがオフライン状態の場合には、READロックがすべての場合に使用されます。
AMP上のすべてのテーブルが再作成されている場合には、Table Rebuildユーティリティは、データベース レベルのREADロックの設定を試行します。データベースのロックが別のロックとの競合のために失敗した場合、そのデータベースはバイパスされます。アクセス可能なすべてのデータベースとテーブルが処理されたあとで、Table Rebuildユーティリティは、バイパスされたデータベースの再作成を再び試行します。Table Rebuildでは、バイパスされたデータベースのリストを繰り返し処理してロックの取得を試行します。バイパス リストに含まれているのが1つのデータベースだけの場合や、Table Rebuildでバイパスされたデータベースのリストが10回試行された場合、再作成プロセスは停止され、ロックを取得できるようになるまで待機状態になります。
Table Rebuildユーティリティがバックグラウンドで実行されている場合には、データベースの識別と、ロックを待機していることを示すメッセージが、システム コンソールに表示されます。