Home / MAKALELER / Veri Tabanı / Oracle Flashback Teknolojisi

Oracle Flashback Teknolojisi

Flashback Database,Flashback Table,Flashback Query,Flashback version Query,Flashback Transcation Query

 

Oracle Flashback teknolojisi 10g ile birlikte geldi.Flashback geniş bir konu drop edilen tabloların geri getirilmesinden,RMAN içinde kullanımına kadar bir çok başlık bulunmaktadır.Veri kayıplarını önlemek için kullanılır. Flashback diğer recovery işlemlerinden ayıran en büyük özellik daha hızlı olmasıdır.

Oracle flashback da olan teknolojiler şunlardır.

 

  • Flashback Database
  • Flashback Table
  • Flashback Query
  • Flashback version Query
  • Flashback Transcation Query

 

Veritabanını Hazırlamak;

Flashback özelliğini kullanmak için üzerinden geçmemiz gereken belli başlı adımlar bulunuyor.Önce veritabanı  archivelog modda olmalıdır.Bunu kontrol etmek için şu sorguyu yazalım;

*SQL> select log_mode from v$database;

Eğer veritabanı NOARCHİVELOG modda olduğunu söylüyorsa burda yapılması gereken veritabanımızı archivelog moda almak, bunun içinde şunları yapalım;

*SQL> shutdown immediate;

*SQL> startup mount;

*SQL> alter database archivelog;

*SQL> alter database open;

Veritabanımızı archivelog  moduna aldıkdan sonra flashback’i çalışıyor duruma getirmeliyiz.Bunun için yapılması gereken;

*SQL> select flashback_on from v$database;

*SQL> alter database flashback ON;

Artık veritabanımız hazır. Flashback kullanmaya geçmeden önce birkaç parametreleri kontrol edelim.

*DB_FLASHBACK_RETENTİON_TARGET= veritabanımızın kaç gün önceye gideceğini ğösterir.

*DB_RECOVERY_FILE_DEST= flashback loglarımızın nerede saklanacağını gösterir.

*DB_RECOVERY_FILE_DEST_SIZE= flashback için ayıracağımız yerin miktarını belirleriz.

Bu parametreleri ihtiyaca göre değiştirmek için kullanılan komutlar;

*SQL> alter system set DB_FLASHBACK_RETENTION_TARGET=600;

*SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20 G;

*SQL> alter system set DB_RECOVERY_FILE_DEST=’/data2/test_db/flashbackarea’;

  • Flashback Database 

İki şekilde kurtarma işlemi gerçekleştirmemiz mümkündür.Bunlardan birisi SCN(system cache number) üzerinden giderek yapılır.SCN veritabanında yapılan her işlem için sürekli olaral artan numerik bir değerdir.Mevcut SCN değeri ağagıdaki sorguyla öğrenebiliriz.

*SQL> select current_scn from v$database;

SCN değerini saate çevirmek için;

*SQL> select scn_to_timestamp(123456) from dual;

Düşünelim ki ilk aldığımız scn değeri 123456 olsun ve ben bu aşamdan sonra veritabanımdan bir tablo sildim.Daha sonra tekrar bir scn degeri aldım bu değer de 123459 olsun.Ve bu tabloya tekrar ihtiyaç duyduğumu farz edelim.Yapmamız gereken işlem ilk aldığımız scn değerine dönmektir.

  • Flashback Table

Bunuda kısa bir örnek üzerinde anlatalım.Yalnız burada tablonun geçmiş bir durumuna dönecegimiz  ve tabloda rowid ler değişecegi için row movement özelliğini  ayarlamamız gerekir.Şimdi örnek üzerinde anlatalım;

*SQL> create table ensar(id number);

*SQL> alter table ensar enable row movement;

*SQL> insert into ensar(10);

*SQL> insert into ensar(15);

*SQL> commit;

*SQL> select * from ensar;

*SQL> select current_scn from v$database;    954696

*SQL> delete from ensar;

*SQL> commit;

*SQL> select * from ensar;

*SQL> flashback table ensar to scn 954696;

Şimdi burada ne yaptığımızı anlatalım.Öncelikli olarak bir tablo oluşturduk ve onun içine kayıt ekledik.Commit ederek verilerimizi yazılmasını sağladık.Daha sonra kontrol amaçlı ensar tablosunun içine bakarak verilerimizin yazıldığından emin olduk.Veritabanımızın o andaki scn değerini ögrendik sonra ensar tablosun daki verileri sildik ve gecerli olması için commit çalıştırdık.Test amaçlı tekrar ensar tablomuza baktığımızda boş olduğunu anladık.Son olarak yukarıda aldığımız scn değerine geri dönerek flashback table uyğulamış olduk.

  • Flashback Query

Verilerimizi sanki o zamandaymış gibi getirmeyi sağlar. Örnek üzerinde anlatalım;

*SQL> create table erdogan(id number);

*SQL> insert into erdogan(id) values(5);

*SQL> commit;

*SQL > select current_scn from v$database;  955313

*SQL> insert into erdogan(id) values(7);

*SQL> commit;

*SQL> select current_scn from v$database; 955345

*SQL> select * from erdogan as of scn 955313;

Ne yaptığımızı anlatmaya çalısalım.Bir table oluşturduk ve içine veri ekledik geçerliliği için commit ettik.Veritabanımızn scn değerini aldık ve bir kez daha veri ekledik.Tekrar commit ettikden sonra scn değerimizi aldık ve ilk eklediğimiz query değerini geri döndük.

  • Flashback version query

Bu teknoloji ile de tablonun satırlarında değişikliği görebiliriz.Örnek üzerinde anlatalım;

*SQL> create table ensar(id number,desc varchar2(30));

*SQL> insert into ensar (1,’birinci’);

*SQL> commit;

*SQL> select current_scn from v$database;

*SQL> update ensar set desc=’ikinci’ where id=1;   15246

*SQL> commit;

*SQL> select current_scn from v$database;

*SQL> update ensar set des=’ucuncu’ where id=1;  16250

Bu örnekde update kullanarak veri üzerinde değişiklik yaparak scn degerleri aldık ve son olarak istedigimiz current değerine dönebiliriz.

  • Flashback transcation query

İşlem seviyesinde yapılan değişikliklerdir.Örnek üzerinde anlatalım;

*SQL> select start_scn,start_timestamp

logon_user,operation

table_name,undo_sql

flashback tracnscation_query where

table_name=’ensar’  order by 1;

 

İyi okurlar.

About Ensar Erdogan

Ankara Polatlı'da doğdum.İlk ve Orta eğitimimi Ankara da tamamladık dan sonra,Üniversite eğitimime Azerbaycan da devam etme kararı verdim.Azerbaycan Teknik Üniversitesi Bilgisayar Mühendisliği bölümünden mezunum.Yazılım kurslarına giderek bilgisayar dünyasıyla tanışmış oldum.Kurslarda ilk olarak C VE C++ eğitimi aldım,daha sonra uzun bir dönem Java dünyasıyla da tanışmış oldum.Bilgisayar dünyasının bir diğer vazgeçilmezi olan Oracle veritabanıyla tanıştım,çeşitli eğitimler alarak kendimi geliştirmeye çalıştım.Oracle adına SQL ,Oracle database 11g certification associate (OCA) ve Oracle database 11g certified Professional(OCP) sertifikasına sahibim.Oratech Teknoloji Sistemlerinde Oracle DBA olarak çalişmaktayım.

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın