web-dev-qa-db-ja.com

DB2 Reorg推奨のコマンド

テーブルがreorg-pendingになる可能性のあるコマンドの完全なリストはありますか?

しばらくグーグルで試しましたが、完全なリストが見つかりません。私の今の正確な問題-ADD FOREIGN KEYステートメントはテーブルをreorg-pendingにすることができますか?

2
saroff

列を追加または削除したり、列のデータ型やnullを許容するかどうかを変更するなど、物理構造を変更すると、テーブルはreorg pendingモードになります。

一部の操作ではテーブルがreorg pendingに配置されませんが、変更を有効にするには再編成が必要です(たとえば、テーブルCOMPRESS属性やLOB列のインライン長の変更)。

外部キーを追加または削除しても、テーブルはreorg pendingに配置されず、再編成も必要ありません。ただし、既存の外部キーをnot enforcedからenforcedに変更すると、テーブルがcheck pendingモードになり、reorg pendingと同様に、アプリケーションがそのテーブルにアクセスできなくなります。

DB2のマニュアル、特にALTER TABLEステートメントとこの記事を除いて、reorgについての詳細を読むための優れた情報源は1つも知りません。

DB2 10.5 for Linux、UNIX、and Windows:Altering tables

3
mustaccio

はい、テーブルをREORGペンディング状態にする可能性のある列変更の完全なリスト(読み取り専用で、これらのコミットの1つだけなので、テーブルスキャンのみ可能であるため、かなり抜本的です)がALTER TABLEコマンド、以下から抜粋。

以下は、バージョンを変更し、テーブルをREORGペンディング状態にするREORG推奨のALTERステートメントの完全なリストです。

  • ドロップカラム
  • ALTER COLUMN SET NOT NULL
  • ALTER COLUMN DROP NOT NULL
  • 次の状況を除き、ALTER COLUMN SET DATA TYPE:
    • VARCHARまたはVARGRAPHIC列の長さの増加
    • 列に索引が存在しない場合に、既存のデータから末尾ブランクを切り捨てることなく、VARCHARまたはVARGRAPHIC列の長さを短くする

これらのそれぞれが新しいバージョンを作成する可能性がありますが、3つのバージョンの後で再編成する必要がありますが、単一のUOWで必要なだけ列を変更できます。また、1つのALTER TABLEコマンドを好きなように。これらの場合、すべての変更の合計が1つの新しいバージョンとしてカウントされます。

0
Jeff Goss