db2のテーブルスペースが満杯になった場合、どうやって掃除すればよいですか?
DB2のテーブルスペースがいっぱいになった場合、スペースを解放するためにクリーンアップ操作を行う必要があります。以下に一般的なクリーンアップ方法をいくつか示します。
- 使用されていないテーブルやインデックスを削除する:テーブルやインデックスの使用状況を確認することで、使用されていないオブジェクトを削除してスペースを解放できます。使用されていないインデックスを見つけるには、以下のコマンドを使用してください。
- SELECT TABNAME, INDEXNAME FROM SYSCAT.INDEXES WHERE STATS_TIME IS NULL;
SYSCAT.INDEXES テーブルから STATS_TIME が NULL の行の TABNAME と INDEXNAME を選択する。 - その後、使用されなくなったインデックスを削除するために、 DROP INDEX コマンドを使用します。
- 表領域を再編成する:REORG TABLESPACEコマンドを使用すると、表領域を再編成し、スペースを解放することができます。例えば、以下のコマンドを使用して表領域を再編成できます。
- テーブルスペース の再編成。
- アーカイブログコマンドを使用して、アクティブなログディレクトリからアーカイブされたログファイルを削除し、空きスペースを解放することができます。例えば、以下のコマンドを使用してログファイルを整理することができます:
- データベース のアーカイブログをに保存します。
- はログアーカイブの対象ディレクトリです。
- テーブルスペースの圧縮:COMPRESS TABLESPACEコマンドを使用して、テーブルスペース内の空きスペースを圧縮し、データを失うことなくスペースを解放することができます。たとえば、以下のコマンドを使用してテーブルスペースを圧縮することができます:
- テーブルスペースを圧縮する。
- 表領域のサイズ調整:表領域のサイズが小さすぎる場合は、ALTER TABLESPACEコマンドを使用してサイズを調整できます。たとえば、以下のコマンドを使用して表領域のサイズを増やすことができます:
- ALTER TABLESPACE のサイズを 増やす。
- のサイズが増加しています。
清理操作を行う前に、データベースと関連するログファイルをバックアップしてデータが消失しないようにしてください。また、清掃操作はデータベースのパフォーマンスに影響を与える可能性がありますので、注意深く評価して計画する必要があります。清掃操作はピーク時以外に行うことが最適です。