Önceki Yazımızda Redo Log mimarisi ve işleyişi hakkında
konuşmuştuk. Şimdi Redo log eklenmesi silinmesi kısaca yönetimi hakkında
konuşalım.
Redo loglar aynı diskte durduğu gibi farklı disklerde de
durabilir. Bir Instance en az 2 log file istediğini daha önce söylemiştik. Aynı
member(elemanların) oluşturduğu kümeye redo log grup denir. Ayrıntılı
anlatırsak Bir problem çıkma ihtimâline karşı redo log dosyalarını çoklamak
(multiplexing) mümkündür. Birinci redo log dosyası demek yerine, birinci redo
log grubu denerek, bu gruba birden fazla redo log dosyası eleman/üye (member)
olarak atanır. Grup içindeki redo log dosyalarının hepsi de aynıdır.
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS
from v$log;
GROUP# THREAD#
SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------
----------------
1 1 1351
52428800 1 INACTIVE
2 1 1352
52428800 1 CURRENT
3 1 1350
52428800 1 INACTIVE
SQL>
Redo Log dosyalarını oluşabilecek olağan dışı durumlara
karşı çoklu (multiplexing) hale getirirsek o kadar güvenli olmuş oluruz. Öncekiyazımızda Redo Log mimarisinde işleyişi anlatmıştık. LGWR, bir sonraki grup
elemanları arşivlenmediği için erişemiyorsa, Grup elemanları arşive çıkılana ve
kullanım için uygun hâle gelene kadar, işlem durdurulur.
Yine başka bir senaryo da Sıradaki grubun bütün elemanlarına
donanım kaynaklı bir problemden erişilemiyorsa, Oracle hata döndürür ve
veritabanı kapatılır. Bu durumda, bir online redo log’un olmayışı nedeniyle
recover işlemi yapmanız gerekebilir.
Bu sebeple Multiplexing yapılan elemanların farklı disklere
yazılması veri önemlidir.
Şimdi Redo Log dosyaları ile neler yapabileceğimize bakalım
Redo Log’lara
Grup/Eleman Ekleme/Çıkartma Boyut değiştirme / Yeniden adlandırma vs...
Öncelikle durumuna bakalım
SELECT F.MEMBER, L.* FROM V$LOGFILE F,
V$LOG L WHERE F.GROUP# = L.GROUP#
Yeni Redo Log eklenmes: (ADD
NEW ONLINE REDO LOG);
Şimdi basit
ilerleyelim ve hazırda bulunan 3. Online Redo Log file group için 4. File
ekleyelim.
SQL> ALTER DATABASE ADD LOGFILE GROUP 4
('/u01/app/oracle/oradata/denizgyotst/redo04.log ') SIZE 50M;
Database altered.
Ayni anda iki elemanli yeni bir
grup eklemek:
SQL> ALTER DATABASE ADD LOGFILE GROUP 5 ('/u01/app/oracle/oradata/denizgyotst/redo51.log',
'/u01/app/oracle/oradata/denizgyotst/redo52.log' ) SIZE 50M;
Kontrol edelim
Drop edip, Boyut değiştirme :
Redo log gruplarını mümkün olduğunca birbiriyle aynı şekilde
tutmak önemlidir. Bazı durumlarda mevcut
redolog fillerın size ni eşitlemek isteriz. Şimdi bu duruma yönelik bir çalışma
yapalım
Tabi önce durumuna
bir bakalım.
Şayet işlem yapacağımız Redo Log aktif ise switch etmemiz
gerekecek. (2. Redo group için)
SQL> alter system switch logfile;
System altered.
SQL>
Şimdi
tekrar durumlarına bakalım
SELECT F.MEMBER, L.* FROM V$LOGFILE F,
V$LOG L WHERE F.GROUP# =
L.GROUP#
Gördüğünüz gibi 2.Log file Active, 3.Log file current duruma
geçti. Yani LGWR daha önce 2.Log’a yazarken şimdi 3.Log’a yazmaya başladı. LGWR
bunun yanında DBWR ‘a 2.Log için mesaj verdi. 2.Log sistem check point atana
kadar active statusünde kalacak. (Bu
konuyu önceki konumuzda detaylı behsetmiştik )
Eğer sistemin check pointi ni beklemek istemiyorsak manuel
checkpoint atarız.
SQL> alter system checkpoint;
System altered.
Şimdi yeniden bakalım.
Evet artık Inactive grup silinebilir yeniden
boytlandırılabilir işlem yapılabilir.
SQL> alter database drop logfile group 2;
Database altered.
SQL>
Şimdi yeniden ekleyelim!
SQL> alter database add logfile group 2 size 50M;
Database altered.
SQL>
Kontrol ettiğimizde görüyoruz ki UNUSED durumda hemen switch
ediyorum..
SQL> alter system switch logfile;
System altered.
SQL>
Ve Current duruma geçtiğini görüyorum..
Bu işlemi boyutunu değiştirmek istediğimiz redo log grupları
için yapabiliriz. Yeniden eklediğim 2.Grup içinde aynı boyutu verdim.
Drop log member:
Redo log
gruplarını mümkün olduğunca birbiriyle aynı şekilde tutmak önemlidir demiştik.
Yani bir
grubu 2
elemanlı yaratırken, diğer grubun 4 elemanlı olması tasarım açısından güzel
gözükmeyecektir.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/denizgyotst/redo52.log';
Database altered.
Bu arada DROP edilen redo log nesneleri aslında silinmezler.
Ancak bir daha kullanılamazlar.
İyi çalışmalar diliyorum
Usta..
Hiç yorum yok:
Yorum Gönder