7
Anar Godjaev http://anargodjaev.wordpress.com/ REDOLOGLAR VE YÖNETİMİ Veritabanındaki tüm “commit” olmuş değişikliklerin , kurtarma yapılırken kullanılmak üzere kaydedildiği dosyalardır. En az iki redo log grubu tanımlanır. Bu dosyaların boyu ve grup sayısı veri tabanı yaratılırken sisteme tanımlanır. Sonradan bu tanımlar değiştirilebilmektedir. Redo log dosyalarının boyu , ideal olarak yarım saatte bir değişecek (swich) şeklinde ayarlanmalıdır. Redo log dosyalarının çok küçük olması , sistemde beklemelere neden olur. Çok büyük olmasa da veri tabanı açılırken yapılan otomatik kurtarma işleminin çok uzun sürmesine yol açar ve aktif redo log dosyalarının silinmesi yada bozulması durumunda da daha fazla veri kaybı olmasına neden olur. Redo log dosyalarının boyunun iyi ayarlanamaması Oracle’ın dezavantajlarına bir örnek oluşturmaktadır. Sistemin güvenliği açısından her gruptaki redo log’u iki kopya olarak veri tabanı farklı disketlerde yaratmak gerekir. Redo log’lar kesinlikle raid disk üzerine konulmamalıdır. Çünkü redo log dosyaları üzerine sürekli yazma yapılmaktadır ve raid diskler yazma işleminin yavaşlatır. Redo log dosyaları bir döngü içersindedir. Bir gruptaki redo log dolduğunda otomatik olarak diğer gruba geçer ve işlem bu şekilde devam eder. Eğer veri tabanı arşiv modda ise bu dolan redo log dosyasının bir kopyası arşiv.log olarak kopyalanır ve kurtarma amaçlı saklanır. Veriye yapılan tüm değişiklik işlemlerini tutmakla yükümlüdür.Datafile’lara (bir şekilde) değişen bilgi yazılamadığı durumlarda redo loglardan bu işlemler görülebilir ve yapılan işlemin kaybı önlenir. Bu dosyalarında çoğullanma imkanı vardır.Farklı diskler üzerinde 2 ya da daha fazla kopyası tutulabilir. Bu dosyanın amacı özetle sistem ya da donanım kaynaklı(harddisk göçmesi vs.) olası hatalarda datafile’lara kalıcı şekilde yazılamayan bilgileri kurtarmaktır.Örneğin bir elektrik kesintisinde henuz datafile’lara yazılmayan ve memory de bulunan bilgiler kaybedilir.Sistem tekrar ayağa kalktığında Oracle ilk önce redo log lara bakar.Kalıcı olarak datafile’a yazılamayan bilgi olduğunu görür ve yarım kalan işlemi sonlandırır.Bu sayede veritabanı elektrik kesintisi olmadan evvelki konuma gelinmiş olur. Redo log file dolduğu zaman LGWR işlemcisi yeni bir gruba yazdırır. Redologlar Gruplar ve grupların memberları şeklinde çalışma gösterir.Örneğin 3 adet redo grubumuz olsun,her birinin 2 şer tane member’ı olsun.Çalışma mantığı olarak oracle bu 3 gruba birden yazmaz.Birinin işi bittiğinde diğerine geçer,ama bir gruptaki meberların her birine yazılır.

Redologlar ve Yöneti̇mi̇

Embed Size (px)

Citation preview

Page 1: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

REDOLOGLAR VE YÖNETİMİ

Veritabanındaki tüm “commit” olmuş değişikliklerin , kurtarma yapılırken kullanılmak üzere kaydedildiği dosyalardır. En az iki redo log grubu tanımlanır. Bu dosyaların boyu ve grup sayısı veri tabanı yaratılırken sisteme tanımlanır. Sonradan bu tanımlar değiştirilebilmektedir. Redo log dosyalarının boyu , ideal olarak yarım saatte bir değişecek (swich) şeklinde ayarlanmalıdır. Redo log dosyalarının çok küçük olması , sistemde beklemelere neden olur. Çok büyük olmasa da veri tabanı açılırken yapılan otomatik kurtarma işleminin çok uzun sürmesine yol açar ve aktif redo log dosyalarının silinmesi yada bozulması durumunda da daha fazla veri kaybı olmasına neden olur. Redo log dosyalarının boyunun iyi ayarlanamaması Oracle’ın dezavantajlarına bir örnek oluşturmaktadır. Sistemin güvenliği açısından her gruptaki redo log’u iki kopya olarak veri tabanı farklı disketlerde yaratmak gerekir. Redo log’lar kesinlikle raid disk üzerine konulmamalıdır. Çünkü redo log dosyaları üzerine sürekli yazma yapılmaktadır ve raid diskler yazma işleminin yavaşlatır. Redo log dosyaları bir döngü içersindedir. Bir gruptaki redo log dolduğunda otomatik olarak diğer gruba geçer ve işlem bu şekilde devam eder. Eğer veri tabanı arşiv modda ise bu dolan redo log dosyasının bir kopyası arşiv.log olarak kopyalanır ve kurtarma amaçlı saklanır.

Veriye yapılan tüm değişiklik işlemlerini tutmakla yükümlüdür.Datafile’lara (bir şekilde) değişen bilgi yazılamadığı durumlarda redo loglardan bu işlemler görülebilir ve yapılan işlemin kaybı önlenir. Bu dosyalarında çoğullanma imkanı vardır.Farklı diskler üzerinde 2 ya da daha fazla kopyası tutulabilir. Bu dosyanın amacı özetle sistem ya da donanım kaynaklı(harddisk göçmesi vs.) olası hatalarda datafile’lara kalıcı şekilde yazılamayan bilgileri kurtarmaktır.Örneğin bir elektrik kesintisinde henuz datafile’lara yazılmayan ve memory de bulunan bilgiler kaybedilir.Sistem tekrar ayağa kalktığında Oracle ilk önce redo log lara bakar.Kalıcı olarak datafile’a yazılamayan bilgi olduğunu görür ve yarım kalan işlemi sonlandırır.Bu sayede veritabanı elektrik kesintisi olmadan evvelki konuma gelinmiş olur.

Redo log file dolduğu zaman LGWR işlemcisi yeni bir gruba yazdırır.

Redologlar Gruplar ve grupların memberları şeklinde çalışma gösterir.Örneğin 3 adet redo grubumuz olsun,her birinin 2 şer tane member’ı olsun.Çalışma mantığı olarak oracle bu 3 gruba birden yazmaz.Birinin işi bittiğinde diğerine geçer,ama bir gruptaki meberların her birine yazılır.

Page 2: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

Database yaratılırken verilen maxlogfiles parametresi maximum kaç tane redolog olacağının bilgisini verir.

Bir redolog ne zaman diğerine(Diğer redolog) geçer,

1-)Log Switch geldiğinde,2-)Checkpoint anında,3-)Transactionlar için redolog dolduğunda

FAST_START_MTTR_TARGET parametresi ayarlanarak switch süresi saniye süresinden belirlenir.

REDOLOGLARIN ÇOĞALTILMASI

Aşağıdaki sorgu ile database’e yeni bir redolog grubu ekleme imkanı bulmaktayız.

SQL> ALTER DATABASE ADD LOGFILE GROUP 4(‘D:\oracle\oradata\newdb\REDO04_a.LOG', 'D:\oracle\oradata\newdb\REDO04_b.LOG')SIZE 100M;

Page 3: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

Aşağıdaki Sql de mevcut bir gruba yenibir member ekleme fırsatı bulabilmekteyiz.

SQL> ALTER DATABASE ADD LOGFILE MEMBER'$HOME/ORADATA/u04/log1c.rdo' TO GROUP 1,

Mevcut bir grubu devre dışı bırakmak istiyorsakta aşağıdaki sorguyu kullanmalıyız.

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;

Page 4: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

Bir gruptaki member’ı devre dışı bırakmak istersekte,

SQL> ALTER DATABASE DROP LOGFILE MEMBER'$HOME/ORADATA/u04/log3c.rdo';

Bir redolog’un içeriğini temizlemek istiyorsak,

SQL> ALTER DATABASE CLEAR LOGFILE'$HOME/ORADATA/u01/log2a.rdo';

Page 5: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

Redologlarda gerçekten sistemimiz için çok öenmlidir.Bu yüzden bunlarıda farklı disklerde tutup güvenliği sağlamak çok öenmlidir.

En son olarakta redologlar hakkında bilgi toplamak için data dictionary viewlarından yararlanıyoruz.

SQL> select * from v$logfile; Logfiller hakkında bilgi alırız.SQL> select * from v$log_history; Control filelar üzerinde log fileların bilgilerini alırız.SQL> select * from v$log; Logfiller hakkında bilgi alırız.

SQL> SELECT group#, sequence#, bytes, members, statusFROM v$log;

GROUP# SEQUENCE# BYTES MEMBERS STATUS--------- ---------- -------- --------- ---------1 688 1048576 1 CURRENT2 689 1048576 1 INACTIVE

2 rows selected.

SQL> SELECT member FROM V$LOGFILE;MEMBER-------------------------------------/u01/home/db03/ORADATA/u03/log02a.rdo

Page 6: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

/u01/home/db03/ORADATA/u03/log01a.rdo

ARŞİV REDOLOG FİLES

Database eğer arşiv modundaysa redolog dosyaları düzenli olarak arşivlenir ve arşiv dosyası olarak saklanır.

Daha sonra geçmişe dönük bir krutama yada data almak istediğimizde bu arşiv dosyaları kullanılmaktadır.

Database’İn arşiv yada noarchive olup olmadığını anlamak için,

SQL > select log_mode from v$database;

LOGMODE--------------------------------------

ARCHİVELOG

Bir database’i arşiv moduna almak için çeşitli yöntemler vardır.Ama bilinmesi gerekn parametre LOG_ARCHIVE_START parametresinin TRUE olmasıdır.

Arcn : ARCH görevi aslinda seçimlik bir arka plan görevi olmasina ragmen bir çok sistem için özellikle tavsiye edilir. Eger bu görev çalistiriliyorsa veritabani ARCHIVELOG kipinde çalisiyor demektir. Bu seçenek; tablespace ‘lerin çevrim-içi (on-line) yedeklenmesine medya failure ‘dan çevrim-içi kurtarmaya ,günlük kütüklerinin otomatik olarak arsivlenmesine izin verir. ARCH görevi, günlük kütüklerinin kopyalarini, yerleri daha önce belirlenmis disk ya da teyp birimleri üzerine çikarir.

SQL> SELECT archiverFROM v$instance;

Page 7: Redologlar ve Yöneti̇mi̇

Anar Godjaevhttp://anargodjaev.wordpress.com/

ARCHIVE---------STOPPED

1 row selected.