테이블 또는 파티션 온라인 이동(ALTER TABLE MOVE ONLINE)
Oracle온라인 작업명령어
-- Move the table to another tablespace / reorganize it (DML continues):
ALTER TABLE customer_app.orders MOVE ONLINE TABLESPACE customer_data;
-- Compress while moving (BASIC; for OLTP compression use ROW STORE COMPRESS ADVANCED):
ALTER TABLE customer_app.orders MOVE ONLINE COMPRESS;
-- A single partition:
ALTER TABLE customer_app.sale_part
MOVE PARTITION p2026_h1 ONLINE TABLESPACE customer_archive UPDATE INDEXES;
-- Verify: indexes must stay VALID
SELECT index_name, status FROM dba_indexes
WHERE owner = 'CUSTOMER_APP' AND table_name = 'ORDERS';
SELECT table_name, tablespace_name, compression, compress_for
FROM dba_tables
WHERE owner = 'CUSTOMER_APP' AND table_name = 'ORDERS';하는 일
테이블 세그먼트를 다시 쓴다: 단편화와 high water mark를 줄이고, 테이블스페이스를 변경하며, 압축을 적용한다. ONLINE을 사용하면 작업 중 DML이 블로킹되지 않고 인덱스가 자동으로 유지되어 VALID 상태를 유지한다.
사용 시점
대량 삭제 후 공간을 회수하거나, 테이블을 새 테이블스페이스/스토리지로 옮기거나, 오래된 파티션을 아카이브 테이블스페이스로 압축할 때.
주의
Enterprise Edition이 필요하며, ROW STORE COMPRESS ADVANCED는 Advanced Compression 옵션(유료)이 필요하다. 작업에는 테이블 크기만큼의 추가 공간이 필요하고 redo가 많이 생성된다. 시작과 끝에 짧은 락을 잡으며 장시간 열린 트랜잭션이 있으면 대기한다. ONLINE이나 UPDATE INDEXES 없는 MOVE는 모든 인덱스를 UNUSABLE로 만든다.