領域管理(ALTER TABLE … MOVE ONLINE)難易度 標準無料
24時間稼働の OLTP で、ヒープ表 hr.orders(B-Tree 索引が複数ある)を別の表領域 data_new へ無停止で移したい。次の2案を検討している。
-- 案1 SQL> ALTER TABLE hr.orders MOVE TABLESPACE data_new; -- 案2 SQL> ALTER TABLE hr.orders MOVE ONLINE TABLESPACE data_new;
2案の違いとして最も適切なものを選べ。(単一選択)
- A案1・案2 とも DML を許可したまま移動でき、索引も自動で保守されるので動作は同じ
- B案1(
MOVE)は移動中、表に排他ロックがかかり DML がブロックされ、移動後は索引がUNUSABLEになるため索引の再構築が必要。案2(MOVE ONLINE)は移動中もDML を許可し、索引も自動的に保守される(再構築不要) - C案2(
MOVE ONLINE)は索引をUNUSABLEにする点は案1 と同じで、違いは移動中にSELECTを許可するかどうかだけである - D
MOVE ONLINEは索引専用の構文で、表(ヒープ表)には使えずORA-00922になる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:B✓Gold監修
解説
ヒープ表の移動には2つのモードがある。
- オフライン移動
ALTER TABLE ... MOVE(案1): 移動中は表に排他ロックがかかり、DML がブロックされる。さらに移動で rowid が変わるため、移動後は表の索引がUNUSABLEになり、索引を再構築(ALTER INDEX ... REBUILD)するかUPDATE INDEXES句を併用する必要がある。 - オンライン移動
ALTER TABLE ... MOVE ONLINE(案2): 移動中もDML(INSERT/UPDATE/DELETE)を許可し、索引も自動的に保守される(移動後にUNUSABLEにならず、別途再構築は不要)。24時間稼働の無停止移動にはこちらが適する。
本問は「無停止で移したい」ので案2(MOVE ONLINE)が適切。
- A案1 は DML をブロックし索引も
UNUSABLEになる。両案が同じ動作というのは誤り。 - C
MOVE ONLINEの眼目は「DML 許可+索引の自動保守」。索引がUNUSABLEになる点が案1 と同じ、という説明は誤り(ONLINEは索引を使用可能なまま保守する)。 - D
MOVE ONLINEはヒープ表に対して使える(12.2 以降)。索引専用構文という説明は誤り。
ひっかけ: 「
ONLINE = 読めるだけ(SELECT 可)」という浅い理解(C)。MOVE ONLINE の本質はDML 継続+索引の自動保守(再構築不要)。
オフライン MOVE の後に索引が UNUSABLE になることを忘れて再構築を怠ると、その索引が使われずに性能劣化する点も実務の罠。✓Gold 保有者による書き下ろし解説・実機で検証済