web-dev-qa-db-ja.com

列をNOTLOGGEDからLOGGEDに変更します

DB2バージョン10.5で実行されているデータベースDAT1があります。テーブルTAB1のすべてのCLOB列とBLOB列のロギングを有効にしたい。テーブルは当初、これらの列をNOT LOGGEDとして作成されていましたが、今度はLOGGEDに変更する必要があります。

プロシージャがあることを知っています [〜#〜] altobj [〜#〜]

この属性を変更できるはずです。しかし、私はこの手順が次のことを行うことをドキュメントから学びました:

このプロシージャは、変更されるテーブルのデータをバックアップしてから、元のテーブルを削除し、DDLステートメントを使用して新しいバージョンを作成します。最後のステップでは、保存されたデータを新しいテーブルにロードし直します。

多くのテーブルを変更する必要があり、各テーブルのサイズは通常約10GB以上に達します。つまり、この操作には、非常に大量の空きディスク領域に加えて、新しいテーブルを作成してデータをコピーバックするために必要な時間が必要になる場合があります。

この操作は、単純なALTER TABLEや、新しいデータの作成やコピーを伴わない別のコマンドでも実行できるのではないかと思います。

1
Bemipefe

LOB列のLOGGED属性を変更することはできません。ただし、新しいLOGGED LOB列を追加し、既存の列から新しい列を更新してから、元の列を削除することで、テーブルを変更できます。無駄なディスク容量は少なくて済みますが、ALTOBJを使用するよりも高速になる可能性はほとんどありません。

1
mustaccio