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