HOME >> Tips >> Oracle Tips >> SQL

テーブルを移動する(ALTER TABLE MOVE)

 
文書番号:20276




テーブルを別の表領域へ移動するSQLです。
元の属性などは維持したまま指定した表領域上に新しいセグメントを確保して配置します。
現在使用中のセグメントは開放されます。


ALTER TABLE <テーブル名> MOVE TABLESPACE <移動先の表領域名>

【例】

・TAB_AをTABLESPACE_1へ移動します。


ALTER TABLE TAB_A MOVE TABLESPACE TABLESPACE_1;
テーブルを移動するとROWID が変更されます。
これにより関連するインデックスが無効になるのでインデックスの再構築と統計情報の再取得が必要です。

またこの状態でインデックスを使うようなSQLを実行すると以下のようなエラーになります。
=========================================================
ORA-01502: 索引'SCOTT.PK_EMP'またはそのパーティションが使用不可の状態です。
=========================================================

この場合はインデックスを再構築する必要があります。

ALTER INDEX <インデックス名> REBUILD;

インデックスを再構築中は表全体にロックがかかります。
そのためインデックス再構築中に実行したDMLは再構築が終了するまで待機します。

Enterprise Edition であれば「ONLINE」オプションを指定して実行することでインデックス再構築中でもインデックスに対する更新が使用できます。

ALTER INDEX <インデックス名> REBUILD ONLINE;