Archive for Aralık, 2016

Oracle Redefinition

Redefiniton Oracle 9i ile Oracle dünyasına tanıtılan DBMS_REDEFINITION paketidir. DBMS_REDEFINITON paketi production ortamlarda veritabanında kesinti sürelerini nerdeyse sıfır denilecek sürelerde tablo’nun storage parametrelerini degiştirmek,farklı bir tablespace e taşımak veya yeni kolonlar eklemek,silmek ve degiştirmek için kullanılabilir. Örnekler verecek olursak ;

  • Lob alanlı yapılarda basic file’dan secure file a geçmek
  • Kolon eklemek, çıkarmak veya değiştirmek
  • Tabloyu partitionlı yapıya geçirmek
  • Tabloyu reorganize etmek
  • Ve tablodaki bütün storage parameterelerini değiştirirken kullanabiliriz.

DBMS_REDEFINITION paketi aslında arka planda aşağıda resimde gösterilen işlemi yapıyor.

Oracle Redefinition Example

 

 

 

 

 

 

  1. Öncelikle bu paketle tablonun Online redefinition işlemine uygun olup olmadığına bakıyor. Bu kontrolü yaparken bizden primary key veya rowid değerine göre kontrol yaptırmamızı isteyecek.
  2. Bu adımda tablonun hedeflediğmiz halini oluştururuz. Aslında bu biraz Create table as select’e benziyor.
  3. Üçüncü adımda ise ana tablomuzdaki verileri yeni oluşturduğumuz tabloya aktarır.
  4. Bu adımda ise ana tablo ile yeni tablo arasında veri anlamında çok fark var ise istediğimiz zaman bu verilerin senkronozisyonunu sağlar.
  5. Son adımda ise tabloya kısa bir süreliğine erişimi kapatarak verilerin senkronozisyonunu sağlar ve daha sonrasında tabloların isimleri yer değiştirir. Böylece amacımızada ulaşmış oluyoruz.

Aslında bütün resmin kısaca bir defa daha üstünden geçersek hedeflediğimiz tabloyu oluştururuz. Daha sonra DBMS_REDEFINITION paketini kullanarak ana tablodaki veriler yeni tabloya atılır aslında burda yapılan işlem insert table(a,b,c) select a,b,c from table işlemidir, tabi bununla birlikte yeni tablo materialized view e çevrilir ve aynı anda ana tablo için materialized view log olusturup tablomuza gelen insert,delete ve update işlemlerini kayit altina alınır. Daha sonrasında tablolarımızı her senkron etme işlemimizde ise materialized view log kullanılarak refresh (fast refresh) edilir. En sonda tabloların ismi rename yapılarak isim değişikliği yapılır.

Aşağıda yapacağım örnekte Lob alan bulunan tablomda compress özelliğini kullanacağım ve bunu yaparken redefinition kullanacağım için çok az kesintim olacak.
(continue reading…)

1,213 total views, no views today


Materialized View

Materialized View diğer viewlerden farklı olarak sadece data dictionary de tutulmuyor bundan farklı olarak fiziksel olarak veride tutan view/objedir. Materialized View ile referans aldığımız sql’in o anki verilerini fiziksel olarak tutarız ve ihtiyacımıza göre view ın verisini değişik opsiyonlarla güncelleyebiliriz.

Tekrar edecek olursak viewler bir sql sorgusunun saklanma şeklidir, Materialized Viewler ise hem sql sorgusu hemde veriden oluşmaktadır. Bu nedenle Materialized View verileri replicate(kopyasini almak) etmektedir. Peki replicate neden gerekebilir ?

Aslında daha çok DW uygulamalrında sıkça rastlarız ama bunun dışında veritabanı transferlerindede kullanılabilir. Örneğin salı günkü verilerden yola çıkarak, çarşamba günü rapor hazırlama işlemleri bu şekilde daha hızlı gerçekleştirilebilir. Salı akşamı sorgular çalıştırılır, Materialized Viewler güncellenir, çarşamba günü sorgular çalıştırıldığında Ana tablo yerine bu Materialized View lerden ilgili bilgiler çekilmiş olur. Bu da bizim kaynakları kullanma performansımızı arttıracak. Fakat bu durumda güncel verilerden yararlanmamış oluyoruz, sadece önceki güne ait verilerden yararlanmış oluyoruz. Tabi istersek bunu önleme yöntemleri de mevcut, Materialized View de.

Yani Materialized Viewler daha çok aşağıdaki konulara çözüm olur.

  • Kayıt sayınız artıp, rapor sorgularınız çok geciktiğinde.
  • Birden fazla tablodan sorgu almak sizi zorladığında.
  • Özet tablolarınızı periyodik olarak doldurmak istediğinizde.
  • Anlık olmayan raporlarınızda, yani 1 gün gecikmeli ya da ayda bir verdiğiniz raporlarda veya periyodik güncellenmesi gereken verilerde.

Materialized View oluşturmak için Sintaksis  aşağıdaki gibidir;

- Normal
CREATE MATERIALIZED VIEW view-name
BUILD [IMMEDIATE | DEFERRED]
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;
-- Pre-Built
CREATE MATERIALIZED VIEW view-name
ON PREBUILT TABLE
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

(continue reading…)

1,824 total views, 2 views today


Oracle lob veri Securefile

LOB(Large Object) Veri Tipleri’nin amacı boyutu büyük olan verileri saklamaktır. Örn. doküman(txt, word, excel, xml ), resim, video, ses vb. Bu tarz veriler önceden long, raw , long raw gibi veri tiplerinde tutulurdu günümüzde ise daha çok BLOB, CLOB, NCLOP gibi veri tiplerinde büyük objeler tutulur. long, raw , long raw gibi veri tipleri daha çok eskiye yönelik destek için kullanılmaktadır.
BLOB : Verileri binary olarak saklar. Max 128 TB a kadar veri saklar . Resim , video gibi dosyalar bu veri tipinde saklanabilir .

CLOB : Verileri karakter olarak saklar . Max 128 TB a kadar veri saklar . TXT dosyalarının içerisindeki verileri CLOB veri tipinde saklayabiliriz.
Oracle 11g ile ile birlikte yukarıda saydığımız veri tiplerini saklamak için Oracle Securefile yapısı duyurulmuştur. Securefile ile birlikte lob alanlarda sıkıştırma, yenilenen veriyi engelleme(deduplicate) şifreleme, önbellğe alma(cachinhg), loglama mekanizmasını belirleme gibi özellikler gelmiştir.

  • Deduplicate : LOB alanlarda bu özelliği belirledikten sonra her kayıt için hash değerler çıkartılacak örtüşen hash değerler veritabanına 1 defa yazılacaktır. Burada aslında tabloda ne kadar yenileyen verimiz varsa o kadar avantajlıdır. Örnek verecek olursak benim çalıştığım tablolardan birinde 50 GB’lık tabloyu 7 GB’a düşürdü.

 

ALTER TABLE TEST MOVE LOB (VERI) STORE AS SECUREFILE ( DEDUPLICATE );

veya

CREATE TABLE TEST
(
ID NUMBER,
VERI CLOB
)
TABLESPACE "TEST_SECUREFILE"
LOB ("VERI") STORE AS SECUREFILE
(TABLESPACE "TEST_SECUREFILE" DEDUPLICATE);
  • Compress : Secure file burada standart sıkıştırma teknolojilerini kullanıyor ve verileriniz özellikle text tabanlıysa çok büyük avantajlar sağlayabiliyor bu daha çok verininizin tipine bağlı ama özellikle xml ve türevleri için şiddetle tavsiye ederim. Örnek verecek olursam benim ele aldığım bir tabloda 400 GB’dan 50 GB’a düştü tablo. Ve compress teknolojisiyle sadece disk alanından değil daha az i/o yapacağı için performansdan’da ciddi kazanç sağlanılıyor. Çok güzel sonuçlar aldım kesinlikle testler yapıp sonuçlarına göre uygulamaınızı öneririrm.
  • Encryption : Verilerinizi wallet ile şifreleyebilirsiniz.
  • Caching : Sık kullandığımız veri ise file systemden farklı olarak verilerimizi cache tutabiliriz.
  • Logging : lob alanlarda ki verilerimiz büyük olduğu için redo loga gitmeden işlemlerimizin yapılmasını isteyebiliriz.

Securefile ile ilgili hikaye kısmından sonra gerçek hayattan tecrübelerimize gelecek olursak lob alanlarda saklanan veriye bağlı olarak deduplication ve compress özelliği disk alanı ve performans(disk io’dan dolayı) olarak çok etkileyici sonuçlar verebiliyor. Buda aslında pozitif olarak bütün yapıyı etkiliyor rman(yedek alacağı veritabanının boyutu azalıyor), datapump, data guard gibi ;
NOT : Securefile’ı kullanacağınız tabloyu mutlaka ve mutlaka tek tek test ettikten sonra karar verin çünkü tablonun içerdiği veriye bağlı olarak herhangi bir kazancı olmadığı gibi performans olarak kayba neden olabiliyor.
NOT : Aşağıdaki testler insert içindir delete ve select içinde bu paralelde sonuçlar vermektedir.

Oracle_SecureFile_Compress_Deduplicate

 

 

 

 

 

 

NOT : db_securefile parametresi veritabanında securefile kullanımını belirler.

  • Permitted : Varsayılan değerdir. Varsayılan olarak lob lar basicfile olarak oluşturulur ama isteğe bağlı olarak securefile oluşturulabilir.
  • Always : Varsayılan olarak lob alanlar securefile ile oluşturulur.
  • Never : Lob alanlarda securefile kullanımını engeller.
  • Ignore : Securefile kelimesi yok sayılır.

Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe

908 total views, 2 views today


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Live Traffic Feed

    Feedjit Widget
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress
    Takip Et

    Her yeni yazı için posta kutunuza gönderim alın.

    Diğer takipçilere katılın: