Merhaba arkadaşlar bu yazımda data subsetting ile ilgili bir örnek yapacagım ama subsetting yapmadan önce subsetting nedir kısaca bundan bahsedelim.
Bildigimiz gibi bir yazılım projesi yapılırken,yapılan proje hemen canlı sisteme uygulanmaz önce test ortamında denenmesi lazım test ortamından başarılı çıktıktan sonra ancak çalışan sisteme uygulanabilir.Peki test ortamında uygulanması için de bize veritabanı lazım çalışan veritabanımızı veremiyecegimize göre ne yaparız veritabanımızın aynısını bir başka tarafa kurmamız lazım fakat veritabanımızın boyutu çok yüksek ise bu bizim işimizi çok uzatır ve istenmeyen bir durum söz konusu olur işte subsetting tam olarak burada ortaya çıkıyor.Subsetting ile test veritabanımıza canlı veritabanımızdaki her şey gitmesin de bizim belirledigimiz şartlara göre bir miktar veri gitsin(Örnegin benim x tablomun %10 verisi karşı veritabanına gitsin gibi vs.).Yani kısaca özetleyecek olursak veri bütünlügünü ve yapısını bozmadan test veritabanı oluşturacagımız zaman subsetting çok işimize yarar.
Şimdi Oracle 12c Enterprise Manager Dan yararlanaraktan Subsetting ile ilgili bir örnek yapalım,yapacagımız adımları kısaca yazarsak ;
1.Subset yapacagmız veritabanını Oracle 12c Enterprise Manager’e tanıtmalıyız,
2.Subset işlemini yapacak job oluşturmalıyız,
3.Baglı oldugumuz veritabanında data model oluşturmalıyız(Subsetting işleminde data model’leri kullanarak işlemler yapacagız),
4.Son adım olarak subsetting adımını başlatırız.
1.Subset yapacagmız veritabanını Oracle 12c Enterprise Manager’e tanıtmalıyız
Veritabanı tanımlaması yapmak için Targets –> Databases seçenegi seçilir.
Şu anda 12c üzerinde hiçbir veritabanı tanımlanmadıgı için bize herhangi bir bilgi getirmiyor.
Yeni tanımlama yapmak için ise Search Listseçilir.
Yeni veritabanı tanıtmak için Add seçenegini seçmeliyiz.
Buradan veritabanımızın kurulu oldugu Host’u seçmek için Search yapmalıyız.
Veritabanımızın kurulu oldugu host’umuzu seçer Select seçenegini seçeriz.
Göstermiş oldugumuz host üzerinde ki veritabanını ve listener’ların listesini verdi.Veritabanızı kullanacagımız için veritabanımızın kullanıcı adı ve şifresini girmeliyiz.Bunun için de veritabanımızın listelendigi yerde ki Configure seçenegini seçmeliyiz.
dbsnmp kullanıcısının şifresini girmeliyiz.
Bize bilgilerimizi veriyor OK ile devam etmeliyiz.
Save seçenegini seçerek kaydetmeliyiz.
Bize bilgilerimizi veriyor OK ile devam etmeliyiz.
Şu anda veritabanımızı 12c’ye gösterdik ama statusda’da görüldügü gibi hala çalışıyor.
Status aşagıda da gördügümüz gibi Up oldugu zaman veritabanımızı sıkıntısız tanıtmış oluyoruz.
2.Subset işlemini yapacak job oluşturmalıyız
Subset işlemini yapacak job oluşturmak için Enterprise –> Job –> Activity seçenegini seçmeliyiz.
Buradan Deploy Test Data Management Packages seçerek Go seçenegini seçmeliyiz.
Job’umuza isim veririz ve target eklemek için Add seçenegini seçeriz.
Target’imizi seçip Select ile devam ederiz.
Parameters seçenegi ile devam etmeliyiz.
Custom Application‘u seçdikten sonra,Credentials seçenegi ile devam ederiz.
sys kullanıcı adı ve şifremizi yazarız.Daha sonra Submit ile işlemimizi bitiririz.
Görüldügü gibi Job oluştu ama bize başarılı oluşturulup oluşturulmadıgı ile ilgili bilgi vermiyor.
Biraz bekledikten sonra aşagıda da gördügümüz gibi Succeeded olmuşsa Job’umuz başarılı demektir.
3.Baglı oldugumuz veritabanında data model oluşturmalıyız(Subsetting işleminde data model’leri kullanarak işlemler yapacagız)
Subsetting yapacagımız verilere göre Data Model oluşturmalıyız.Bunun için Enterprise –> Quality Management –> Data Discovery and Modeling seçenegini seçmeliyiz.
Data Model oluşturmak için Crete seçenegini seçeriz.
Data Model’imize isim veririz ve data model oluşturacagmız veritabanını seçmek için ise search işaretine tıklarız.
Veritabanımızı seçer ve Select ile devam ederiz.
Named’i seçerekten daha önce giriş yaptıgımız kullanıcı adını ve şifresini kullanmasını isteriz.
Kullanıcıları listelenmsi için Login seçenegini seçerek devam etmeliyiz.
İstedigimiz kullanıcıları seçeriz.
Submit’i seçerek işlemlerimizi bitiririz.
Gördügümüz gibi data model’imiz oluşmuştur başarılı olup olmadıgı bilmek için bir süre beklemeliyiz.
Status Succeeded oldugu zaman başarılı oldugunu bize bildirir.
Şimdi oluşturdugumuz data model’i seçer edit seçenegini seçerek düzenleriz.
Daha önceden girmiş oldugumuz kullanıcı adı ve şifre ile giriş yaparız.
View — > Expand All ile devam ederiz.
Referential Relationships’e baktıgımız zaman tablolarımız arasında ki ilşkiyi görürüz.
Save and Return ile işlemlerimizi bitiririz.
Görüldügü gibi de data model’imizde bir sorun yoktur.
4.Son adım olarak subsetting adımını başlatırız.
Artık Subsetting işlemine başlayabiliriz bunun için Enterprise –> Quallity Management –> Data Subset Definitions seçenegini seçer devam ederiz.
Create Diyerek yeni bir subset oluşturmaya başlayabiliriz.
Subset’imize isim veririz ve data model’imizi ve data source’ümüzü seçmek için search işaretcine tıklarız.
Eskiden kullandıgımız kullanıcı adı ve şifre bilgilerini gireriz,istersek schedule zamanlayabiliriz.Daha sonra submit ile devam ederiz.
Başarılı olup olmadıgını bilmek için bir süre bekleriz.
görüldügü gibi Succeeded yazdıgı zaman başarılı demek.
Schedule’umuzu seçer edit ile düzenleme yaparız.
Subsetting işlemini yapılandıracagımız için create seçenegini seçeriz.
Burada 1.adımda Data Modelimizde ki hangi kullanıcıyla işlem yapacagımızı seçeriz.
2.adımda seçtigimiz kullanıcada ki hangi objeler üzerinde subset yapacagımızı seçeriz.Bütün tabloları seçebilecegimiz gibi belirli tabloları da seçebiliriz ya da sadece belirli tipteki sütunları da seçebiliriz.
3.adımda subset’i neye göre yapacagını seçeriz.All rows dersek bütün sütunları seçer,Some Rows dersek bütün verinin girdigimiz deger kadar yüzdesini alır.Rows Where dersek girdimiz şarta uygun olan verileri getirir.
4.adımda Ancestor and Descendant Tables seçersek subset yapacagımız tabloya foreign key ile baglı olan bütün tablolar üzerinde subset yapar.Ancestor Tables Only seçersek sadece seçtigimiz tablo üzerinde subset yapar.
Space Estimates’i seçersek subset ile ilgili ayrıntıları görebiliriz.
Burada önceden table’ın boyutu ve rows sayısını verir yanın da ise subset’den sonra oluşacak tablonun ortalama boyutunu ve rows sayısını veriyor.Return ile devam ederiz.
Subset’imizi seçip Actions –> Genererate Subset… seçenegini seçmemiz gerekir.
Burada 1.adımda bize subseti nerde yapacagını sorur Writing Subset Data to Export Files seçenegini seçersek tablonun subset’lenmiş halini bir dump file’e çıkartacak.Deleting Data From a Target Database ‘i seçtigimiz zaman ise Data model oluşturmak için kullandıgımız veritabında ki ilgili tabloyu subsetlenmiş hale getirir(yani bir nevi eski tabloyu siler yerine o tablonun bizim belirledigimiz kurallara göre subsetlenmiş halini getirir).
2.adımda veritabanı bilgilerini gireriz.
3.adımda veritabanının bulundugu işletim sistemi kullanıcı adı ve şifresini gireriz.(dump dosyasını işletim sistemi üzerine yazacagımız için ihtiyaç duyarız)
dump dosyasının çıkacagı dizini işaret eden directory’ü seçeriz.Continue ile devam ederiz.
İsim verir,Submit ile devam ederiz.
Biraz beklememiz gerekir bu adımda.
Status kısmında Running yazarsa Subsetting işlemimizin başladıgını anlarız.
Status kısmında Succeeded yazarsa işlemin başarı ile bittigini anlarız.
Burada bu işlemleri nasıl yaptıgını tek tek anlatıyor.Log Report dersek de daha ayrıntılı görebiliriz arka planda ne yaptıgını.
Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe
Oracle World
Ocak 28th, 2014 on 07:51
Teşekkürler paylaşım için Mustafa bey. Bir sorum olacaktı. Subset oluşturma adımında yeni bir Table Rules create ederken, birden fazla application seçmek istiyorum, diyelim 3 tane birden seçmek istiyorum, bunu bir türlü yapamadım. Mouse ile tutup aşağıya çekerek seçiyor gözüküyor fakat Ok dediğimde sadece bir tanesini getiriyor, o da hangisi seçiliyse. Bu konuda bir fikriniz var mı acaba ?
Ocak 28th, 2014 on 14:43
Merhaba Kenan Bey birden fazla tabloyu aynı anda subset yapamazsınız.
Fakat isterseniz bir tabloyu subset yaparken o tablo ile foreign key baglantılı olan tabloları subset yapabilirsiniz.
Birden fazla tabloyu aynı anda subset yapamamanızın sebebi olarak ise foreign key olmadıgı durumda verinin veri tutarlılıgını yitirecek olmasıdır.