DBAtlas · Atlas für Datenbankbetrieb

Tabelle oder Partition online verschieben (ALTER TABLE MOVE ONLINE)

OracleOnline-Operationen

Befehl

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

Was es tut

Schreibt das Tabellensegment neu: reduziert Fragmentierung und High Water Mark, wechselt den Tablespace, wendet Kompression an. Mit ONLINE wird DML während des Vorgangs nicht blockiert, und Indizes werden automatisch gepflegt und bleiben VALID.

Wann einsetzen

Um nach Massenlöschungen Platz zurückzugewinnen, eine Tabelle in einen neuen Tablespace/Storage zu verschieben und alte Partitionen komprimiert in einen Archiv-Tablespace zu legen.

Vorsicht

Erfordert die Enterprise Edition; ROW STORE COMPRESS ADVANCED erfordert die Advanced-Compression-Option (kostenpflichtig). Der Vorgang braucht zusätzlichen Platz in Höhe der Tabellengröße und erzeugt viel Redo. Am Anfang und Ende werden kurze Sperren genommen; lange offene Transaktionen lassen es warten. Ein MOVE ohne ONLINE oder UPDATE INDEXES macht alle Indizes UNUSABLE.

In DBAtlas öffnen →

Verwandte Einträge