DBAtlas · 数据库运维图谱

在线移动表或分区(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';

作用

重写表段:减少碎片并降低高水位线、更换表空间、应用压缩。使用 ONLINE 时,操作期间 DML 不被阻塞,索引自动维护并保持 VALID。

适用场景

用于大批量删除后回收空间、将表迁移到新的表空间/存储,以及将旧分区压缩到归档表空间。

注意

需要 Enterprise Edition;ROW STORE COMPRESS ADVANCED 需要 Advanced Compression 选件(额外付费)。该操作需要与表大小相等的额外空间,并产生大量 redo。开始和结束时会获取短暂的锁;长时间未结束的事务会使其等待。不带 ONLINE 或 UPDATE INDEXES 的 MOVE 会使所有索引变为 UNUSABLE。

在 DBAtlas 中打开 →

相关内容