Exchange partition ile toplu veri yükle/arşivle
OraclePartitionKomut
-- 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ı.