DBAtlas · Veritabanı operasyon atlası

Exchange partition ile toplu veri yükle/arşivle

OraclePartition

Komut

-- 1) Hedef tabloyla birebir uyumlu staging tablo (12.2+):
CREATE TABLE musteri_app.satis_stage
  FOR EXCHANGE WITH TABLE musteri_app.satis_part;

-- 2) Staging'i doldur, local index'lerle ayni yapida index olustur:
INSERT /*+ APPEND */ INTO musteri_app.satis_stage
SELECT * FROM musteri_app.satis_yukleme WHERE tarih >= DATE '2027-01-01';
COMMIT;
CREATE INDEX musteri_app.satis_stage_musteri_ix ON musteri_app.satis_stage (musteri_id);

-- 3) Yer degistir (sadece sozluk islemi, veri tasinmaz):
ALTER TABLE musteri_app.satis_part
  EXCHANGE PARTITION p2027 WITH TABLE musteri_app.satis_stage
  INCLUDING INDEXES WITHOUT VALIDATION
  UPDATE GLOBAL INDEXES;

-- 4) Dogrula:
SELECT COUNT(*) FROM musteri_app.satis_part PARTITION (p2027);
SELECT index_name, partition_name, status
FROM   dba_ind_partitions
WHERE  index_owner = 'MUSTERI_APP' AND status <> 'USABLE';

Ne yapar?

Bir partition'ın segmenti ile normal bir tablonun segmentini sözlükte yer değiştirir; milyonlarca satır saniyeler içinde tabloya "girer" veya arşiv için tablodan "çıkar". FOR EXCHANGE WITH TABLE, kolon/gizli kolon uyumunu garanti eden staging tablo üretir.

Ne zaman kullanılır?

DWH/ETL toplu yüklemelerinde, eski partition'ı arşiv tablosuna almakta, yükleme sırasında canlı tabloyu etkilemeden index ve istatistik hazırlamak için.

Dikkat

Partitioning opsiyonu (EE ek lisans) gerekir. WITHOUT VALIDATION, staging'deki satırların partition sınırına uyduğunu kontrol etmez; yanlış veri yanlış partition'da kalır ve sorgular hatalı sonuç verebilir; emin değilsen WITH VALIDATION kullan (tam tarama yapar). UPDATE GLOBAL INDEXES olmadan global index'ler UNUSABLE olur. Unique/PK constraint'lerin durumu iki tarafta da aynı olmalı.

DBAtlas'ta aç →

İlgili