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';

Что делает

Перезаписывает сегмент таблицы: уменьшает фрагментацию и high water mark, меняет табличное пространство, применяет сжатие. С ONLINE DML не блокируется во время операции, а индексы обслуживаются автоматически и остаются VALID.

Когда использовать

Чтобы вернуть пространство после массовых удалений, перенести таблицу в новое табличное пространство/хранилище и сжать старые секции в архивное табличное пространство.

Внимание

Требует Enterprise Edition; ROW STORE COMPRESS ADVANCED требует опции Advanced Compression (платная). Операции нужно дополнительное место, равное размеру таблицы, и она создаёт большой объём redo. В начале и в конце берутся кратковременные блокировки; долгие открытые транзакции заставляют её ждать. MOVE без ONLINE или UPDATE INDEXES оставляет все индексы в состоянии UNUSABLE.

Открыть в DBAtlas →

Связанные материалы