17 Şubat 2008 Pazar

Bir 10g özelliği, FLASHBACK

Merhaba,

Bu yazımda 10gR1 ve 10gR2'de geliştirilen ve sunulan FLASHBACK özelliğinden bahsedeceğim. Bazı özellikleri aslında 9i'de düşünülmüştür ve 11g'de uygulanmıştır. Dikkatlice uygulanması gerekir ve çok kritik durumlarda sizi ve DBA olarak çalıştığınız veri tabanını çok büyük baskı altından kurtarabilir.

FLASHBACK: Kısaca bir 10g özelliği olan "FLASHBACK" belkide bu zamana kadar Oracle'ın geliştirdiği en önemli teknolojilerden birisi. Ne olduğundan bahsedelim sonra da özelliklerine geçelim.

Bir çok çalışmaya göre Oracle'da oluşan hataların büyük bir kısmı kullanıcı hatalarıdır. Tablo düşürmek, içeriğini boşaltmak gibi. Bu tarz beşer hatalarını engellemenin yolları elbette vardır ama sonuçları önemli bir maliyettir. Aynı zamanda da çok zor takip edilebilir.

RESTORE POINT: Bu konuda ilk özelliğimiz yine 10g(release 2) ile gelen "RESTORE POINT" özelliği. PITR(Point In Time Recovery) gereksinimlerinde SCN(System Change Number) numarası veya Timestamp özelliklerinden yararlanılıyordu. DBA olarak SCN notlarını almak istesek içinde kaybolma ihtimalimiz olabilir. Onun yerine kritik zamanlarda kaydedilmiş Restore Pointler olursa, PITR gerçekleştirmemiz çok kolaylaşır. Syntax'i ise şöyledir:

SQL> Create restore point bu_bir_denemedir;
Bu restore point sayesinde az sonra anlatacağım "FLASHBACK DATABASE" konusunda ne kadar rahat dönüldüğünü görebileceğiz. Sonuç olarak Restore pointi çok önemli bir veritabanı uygulamasından önce yaratmak son derece mantıklıdır. Örnek olarak, kritik şema değişimlerinden önce veya flashback yapabilmek için olabilir.

FLASHBACK DATABASE: Oracle'ın bu zamana kadar yarattığı en stabil veritabanı kabul edilen 10g'nin(bir kısım release 1, bir kısım release 2) özelliğidir. Kendi loglarında aktif konuma getirildikten sonra kayıtları tutulan veritabanı değişimleri bu özellik sayesinde tamamen geri alınabilir.
Bütün veritabanını, bütün değişiklikleri ve kullanıcı hatalarını RMAN yedeği almaksızın geriye döndürebiliyoruz. Bu konuda tabii ki çok kritik noktalar vardır. Bütün veritabanını geriye almak, diğer kritik veri güncellemelerininde kaybolmasına sebep olabilir. Aynı zamanda yeni kayıtlarında yok olmasına.En büyük özelliği 10gR2 ile gelmiştir.
Flashback database resetlogs ile gerçektirildiği zaman kendi flashback logların reset olmaması. Restore point ve flashback kayıtları, flashback database gerçekleştirilip redo loglar resetlensede gerçekleştiriliyor ve tekrar dönülebiliyor. Bu bize veritabanı flashback ile geldikten sonrada yine hatalar olduysa geri dönme fırsatı sağlar ki çok avantajları olacaktır.
Gerekli komutlar ise şu şekilde olabilir. Flashback database yapabilmek için veritabanının "ARCHIVELOG" modunda olması gerekir. Ve aynı zaman veri tabanının "MOUNT" modda olması gerekir. Bir kaç tanede parametrenin set edilmesi lazım. Set edilmesi gereken parametrelerin default olarak kullandığını düşünelim.
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
SQL> SHUTDOWN IMMEDIATE; -->Bu noktaya kadar veri tabanı flashback logları üretti. Bir hata oluştu ve geriye dönmek istiyoruz.
SQL> STARTUP MOUNT;
SQL> FLASHBACK DATABASE TO SCN ;
TO TIMESTAMP

1 yorum:

Tonguç dedi ki...

Ogan Türkçe yazıyo olman ve blogspot'ta olmasi blogunun bence onemli bir avantaj yeni baslayanlar icin. Umarim yazmaya zaman ayirmaya devam edersin.

Seminerde flashback ile ilgili truncate veya drop purge edilmis bir tabloyu flashback database ile donup donemeyecegimiz sorusu geldi, tatilde oldugumdan deneyemedim ama ilginc bir soru cidden :) restore point ile basit bir deneme yapacagim ilk firsatta ama belki sen denemissindir?

Gorusuruz.

Takip et: @oganozdogan