Hurriyet

14 Mayıs 2013 Salı

Redo Log Yönetimi:


Oracle veritabanının recovery(kurtarma) işlemlerindeki en önemli dosyalardır.  Bu dosyalar da veritabanına yapılmış değişiklikler olduğu anda kaydedilmektedir. Bu dosyalar veritabanında bir instance failure yani ani veritabanı kapanmalarında  verilerini kaybını önleme amacıyla oluşturulurlar.

Veritabanında herhangi bir geri yükleme işleminde bu dosyalar içindeki redo kayıtları alınır ve veritabanındaki gerekli değişiklikler uygulanır.  Redo kayıtları LGWR(log writer) process’i tarafından yazılır. Ne zamanki bir transaction commit(kaydedilirse) edilirse, LGWR process’i tetiklenir ve redo log lara yazılır ve buna bir SCN(system change numer) numarası atanır.

Oracle Veritabanı her zaman en az 2 redo log dosyasının olması gerektirir.  Bu 2 dosyadan bir tanesi diğeri yazılıp arşivlenirken, diğeri aktif olarak kullanılır. Eğer veritabanı NOARCHIVELOG modda ise yapılan değişiklikler redo log dosyasından datafilelara kaydedildikten sonra tekrar kullanılabilinir hale gelir.  Eğer veritabanı ARCHIVELOG modda ise,  redo log dosyasının tekrar kullanılabilir hale gelmesi için ilk önce içerideki kayıtları datafile’a kaydedilmesi ve arşivlenmesi gerekmektedir.

Redo log grup detayları: Select * from v$log;

Redo Log dosyalarının groupları ve memberları: select * from v$logfile;

En fazla redo log verisi üreten kullanıcılar:

Özel sorgu.

SELECT s.sid, s.username, s.program, t.value "redo blocks written"
  FROM v$session s, v$sesstat t
 WHERE s.sid = t.sid
   AND t.value != 0
   AND t.statistic# = (select statistic# from v$statname
                        where name = 'redo size')
ORDER BY 4
/





Active, Current, Inactive Redo Log Dosyaları

Veritabanına aktif olarak yazılan redo log dosyasına “Current” redo log dosyası denir. Bu dosyaların özel adlarının olmasının nedeni veritabanı sorgulanırken hangisinin hangi modda olduğunu ve hangilerinin aktif olduğunu görmek içindir.

Instance recovery, yani bir kurtarma anında gerekecek olanlar ise “Active” olarak belirtilirler.  Bu kurtarma anında gerekmeyecek olanlarsa “Inactive” olarak belirtilirler.

Redo Logların Çoğaltılması ve Korunması

Redo logların instance recoverylerindeki önemleri çok fazladır. Bu yüzden bu dosyaların korunmaları gerekmektedir. Bu dosyaların korunmaları için ayrı ayrı dosyalarda saklanmalıdır. Bunun için de “group” oluşturulmalıdır. Bu gruplardaki her “member” diğerinin tıpatıp aynısıdır.

Eğer LGWR process’i bir redo log dosyasına yazamazsa hem alert dosyasına hem de LGWR  trace dosyasına not düşer. Ayrıca erişilemeyen log dosyası invalid konuma düşer.

LGWR process’i redo log grouplarından birine yazma amacıyla erişemiyorsa, bütün “member”ları  erişilemez durumda ise veritabanı çalışmayı durdurur ve kapanır. Tekrar yazabilir hale gelene kadar yapılan işlemleri kabul etmez. Eğer checkpoint ilerlememişse erişilemeyen grup drop edilmeden önce “Alter database clear unarchived log” diyip archiviing iptal edilip sonra drop edilir. Eğer checkpoint ilerlemişse sorun yoktur çünkü log dosyası arşivlenmiştir. O yüzden erişilemeyen redo log dosyası drop edilir.

Hiç yorum yok:

Yorum Gönder