Bu yazıda Oracle GoldenGate’e integrated mod’da Extract ve Replicat eklemekten bahsedeceğiz.
Oracle GoldenGate farklı veritabanı sistemleri arasında veri senkronizasyonu sağlamak için kullanılan bir araçtır. Oracle’dan; Oracle’a, MS SQL Server’a, PostgreSQL’e, IBM DB2’ya aktarım yapma yeteneği mevcuttur. Ancak en fazla özellik desteği tahmin edileceği gibi Oracle – Oracle arasında için mevcuttur.
GoldenGate integrated mode’da ayarlanınca, veritabanı ile aynı sunucuda çalışması zorunlu değildir, hub olarak ayrı sunucuda çalıştırılabilir. Extract ve Replicat’lar için ilgili veritabanlarında process açılır ve Hub GoldenGate sunucusu ile port üzerinden bağlantı ve veri transferi sağlarlar. Extract için kaynak veritabanında LogMining Server kullanılırken, Replicat için Apply Server kullanılır. Bu yazıdaki kurgu da Hub GoldenGate için hazırlanmıştır. Zihinde daha iyi canlanması için Hub kurgusunun aşağıdaki gibi gösterebiliriz.
Extract ve Replicat aynı sunucuda olduğundan Pump’a ihtiyaç yoktur. Replicat’lar lokal diskte bulunan trail dosyalarını kullanırlar.
Extract ve Replicat Eklenmesi
Replicat eklenmeden önce veriler expdp/impdp ile kaynak veritabanından hedef veritabanına Flashback SCN ile taşınmalıdır. SCN kaydedilmelidir, Replicat eklerken bu SCN’i kullanacağız.
Extract ekleme: extw
[oracle@gghost goldengate]$ ./ggsci GGSCI (gghost.example.com) > dblogin useridalias GGSRC Successfully logged into database. GGSCI (gghost.example.com as GG@SRCDB) > edit param extw
Açılan vi editöründe Extract için parametreleri yazıp “:wq” ile kaydedilip çıkalım.
EXTRACT extw EXTTRAIL ./dirdat/ee TRANLOGOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 256) DISCARDFILE ./dirrpt/extw.dsc, PURGE MEGABYTES 4096 DISCARDROLLOVER AT 05:30 LOGALLSUPCOLS UPDATERECORDFORMAT COMPACT REPORTCOUNT EVERY 1 HOURS, RATE REPORTROLLOVER AT 01:00 ON SUNDAY USERIDALIAS GGSRC -- Extract yapılacak tablolarımız TABLE HR.EMPLOYEES;
GGSCI komut satırında aşağıdaki komutlar ile Extract‘ı ekleyip ve başlatalım. Kaynak veritabanına login olduğumuza dikkat edin.
GGSCI (gghost.example.com as GG@SRCDB) > register extract extw database GGSCI (gghost.example.com as GG@SRCDB) > add extract extw, integrated tranlog, begin now GGSCI (gghost.example.com as GG@SRCDB) > add exttrail ./dirdat/ee, extract extw GGSCI (gghost.example.com as GG@SRCDB) > start extract extw
Herhangi bir hata yoksa veriler GoldenGate sunucusundaki trail dosyalarına yazılmaya başlanır. Trail dosyaları GoldenGate kurulum dizini altındaki dirdat dizinine yazılırlar.
Replicat Ekleme: repw
GGSCI komut satırı başlatılır ve Target veritabanına Login olunur. GoldenGate’in kurulum klasöründe olduğumuza dikkat edin.
[oracle@gghost goldengate]$ ./ggsci GGSCI (gghost.example.com) > dblogin useridalias GGTRG Successfully logged into database. GGSCI (gghost.example.com as GGTRGDB@TRGDB) > edit param repw
Açılan vi editöründe Replicat için parametreleri yazıp “:wq” ile kaydedilip çıkalım.
REPLICAT repw DBOPTIONS ENABLE_INSTANTIATION_FILTERING DISCARDFILE ./dirrpt/repw.dsc, PURGE MEGABYTES 4096 DISCARDROLLOVER AT 05:30 DDLOPTIONS REPORT USERIDALIAS GGTG REPORTCOUNT EVERY 1 HOURS, RATE REPORTROLLOVER AT 01:00 ON SUNDAY DISCARDROLLOVER AT 05:30 ALLOWNOOPUPDATES APPLYNOOPUPDATES HANDLECOLLISIONS MAP HR.EMPLOYEES, TARGET HR.EMPLOYEES, FILTER ( @GETENV ('TRANSACTION', 'CSN') >= 1426342674098);
Aynı komut satırında aşağıdaki komutlar ile Replicat eklenir. Hedef veritabanına login olduğumuzdan emin olalım.
Oracle’da bulunan SCN bilgisi, GoldenGate’de CSN (Commit Sequence Number) olarak adlandırılır. Tabloyu export alırken kullandığımız SCN bilgisini yukarıda yazıyoruz.
GGSCI (gghost.example.com as GGTRGDB@TRGDB) > add replicat repw integrated exttrail ./dirdat/ee GGSCI (gghost.example.com as GGTRGDB@TRGDB) > register replicat repw database
Replicat başladıktan sonra, her şey yolunda ise veriler hedef veri tabanına ulaşmaya başlar.
Hata Gideme:
Eğer Replicat eklenirken, Extract zaten varsa, Replicat Extract’ın bulunduğu dosyadan başlamayabilir.
Bunu çözebilmek için Replicat durdurulduktan sonra Sequence No değiştirilir, 111 sayısını örnek olarak kullandık.
GGSCI (gghost.example.com as GGTRGDB@TRGDB) > stop replicat repw GGSCI (gghost.example.com as GGTRGDB@TRGDB) > alter replicat repw, EXTSEQNO 111 GGSCI (gghost.example.com as GGTRGDB@TRGDB) > start replicat repw
Referanslar:
0 Yorum