ODI Change Data Capture kullanımı (Journalizing)

Veri ambarına aktarım yaparken her seferinde kaynak tablodaki tüm veriyi hedefle karşılaştırmak yerine ilk aktarımdan sonra sadece değişen kayıtları karşılaştırıp çok daha küçük bir veri seti üzerinde işlem yaparak aktarım işlemini tamamlayabiliriz. Değişen kayıtların tespit edilmesi konusunda da ODI’ın bize sunduğu Journalizing özelliğinden yararlanabiliriz. Bu yazımızda temel manada Değişen verileri yakalama (CDC) ve hedef tabloyla birleştirme (MERGE) işlemini ODI üzerinde nasıl yapacağımızı ele alacağız.

Öncelikle anlatımda bize yardımcı olacak tabloları oluşturalım;

Kaynak Tablo :

CREATE TABLE CDC_SOURCE ( KISI_ID NUMBER NOT NULL PRIMARY KEY, AD VARCHAR2(50 BYTE), SOYAD VARCHAR2(50 BYTE) );

* Kaynak tabloda primary key tanımlanmış olması gerekiyor.

Hedef Tablo :

CREATE TABLE CDC_TARGET ( KISI_ID NUMBER, AD VARCHAR2(50 BYTE), SOYAD VARCHAR2(50 BYTE) );

İlk aktarım vs. yoluyla ilk anda ikisinin de eşitlenmiş olduğunu varsayıyorum. Bizim örneğimizde ikisi de boş olduğu için eşit zaten ^^

Reverse Engineer araclığıyla tablolarımızı modele ekliyoruz.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 1

Bu adımdan sonra source ve target tabloları kendi modelleri altında görebiliyor olmamız gerekiyor.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 2

Modelde kaynak tablonun üzerine sağ tıklayıp Change Data Capture menüsünün altından Add to CDC‘yi seçiyoruz.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 3

Bu aşamada gelecek doğrulama sorusunu evet diyerek geçtikten sonra kaynak tablo

ODI Change Data Capture kullanımı (Journalizing) | görsel - 4.

üzerinde CDC’ye dahil olduğunu belirten sarı bir saat simgesi görüyorsanız şu ana kadar her şey yolunda demektir.

Şu ana kadar her şey yolundaysa yine Change Data Capture menüsü altından Start Journal diyebiliriz.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 5

Subscriber seçiminde SUNOPSIS seçip devam edince kaynak tablo üzerindeki saat simgesinin renginin sarıdan yeşile dönmüş olması gerekiyor.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 6

An itibariyle ODI Journalize işlemine başlamıştır. Örnek bir kaç kayıt ekleyerek kontrol edelim.

INSERT INTO CDC_SOURCE (KISI_ID, AD, SOYAD) VALUES (1, ‘METİN’, ‘TEKİN’); INSERT INTO CDC_SOURCE (KISI_ID, AD, SOYAD) VALUES (2, ‘ALİ’, ‘GÜLTİKEN’);

sqlplus’ta ilgili scriptleri çalıştırıp, ODI’da kaynak tablo üzerinde Journal Data seçeneğini seçersek işlem gören kayıtları yakaladığını görebiliyor olacağız.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 7

*** Şu an sadece değişen kayıtları yakalamış olduk. bunları hedef tabloya uygulamak için Interface hazırlamamız gerekiyor.

Interface adımında özellikle dikkat etmemiz gereken nokta 2 nokta var, bunlardan birincisi Mapping sekmesinde kaynak tablonun Property Inspector ekranında Journalized Data only seçeneğini işaretlemiş olmamız gerektiği,

ODI Change Data Capture kullanımı (Journalizing) | görsel - 8

Bir diğeri ise kullanacağımız JKM ve IKM modüllerini ihtiyacımıza uygun seçmemiz. Bu örnekte JKM olarak JKM Oracle Simple, IKM olarak ise IKM Oracle Incremental Update (MERGE) modülünü kullandım. Siz ihtiyacınıza bağlı olarak SCD modüllerinden birini veya daha başka bir modül kullanabilirsiniz.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 9

Hazırladığımız interface’i çalıştırdıktan sonra hedef tabloyu kontrol edersek yapılan değişikliklerin hedefe uygulandığını görebiliyor olacağız.

ODI Change Data Capture kullanımı (Journalizing) | görsel - 10

* Bu aşamada ODI Journal tablosunu sıfırlar.

Bir test daha yaparak konuyu tamamlayalım; Bir kayıt ekleyip, var olan bir kaydı da güncelledikten sonra ne olacağını görelim.

INSERT INTO CDC_SOURCE (KISI_ID, AD, SOYAD) VALUES (3, ‘FEYYAZ’, ‘UÇAR’); UPDATE CDC_SOURCE SET SOYAD = ‘SARIFIRTINA’ WHERE KISI_ID = 1;

Journal Data;

ODI Change Data Capture kullanımı (Journalizing) | görsel - 11

Interface’i tekrar çalıştırdıktan sonra hedef tablo (CDC_TARGET) ;

ODI Change Data Capture kullanımı (Journalizing) | görsel - 12

Interface’in senaryosunu oluşturup zamanlarsanız belirteceğiniz periyodda hedef tablonuzdaki verilerin kaynak tabloya eşitlenmesini sağlayabilirsiniz. İyi çalışmalar.

Adnan Ersöz26 Ağustos 2013
Bu içeriğin kaynağı https://aersoz.wordpress.com.
© 2026 KDS Data. Tüm hakları saklıdır.