Bu makalemde sizlerle flashback özelliklerinden olan ve 11g sistemler için kullanılmaya başlanan Flashback Data Archive dan bahsedeceğim.Database içerisinde sürekli değişiklikler olmakta ve bu değişiklikler belli süreler sonunda kayboluyor ya da değiştirelemez hale geliyor.
Biz Flashback Teknolojilerinden version query-query-table özellikleriyle undo datasını ihtiyaç duyuyor ve kullanıyoruz.Undo bilgisi olduğundan dolayı undo tablespace inin bilgisinin limitleriyle sınırlı kalmak durumundayız.Amaç zamanı mümkün olduğunca esnek tutmaya çalışıp Data Archive özelliği sayesinde belli-belirlediğimiz tabloların yıllar önceki haline dahi sorgu atabilmemiz mümkün olucak.
Bu işi yapabilmek için yeni tablespace yaratmak tavsiye edilir ki varolan tablespaceler üzerinden de Data Archive özelliğini kullanabilirsiniz.
Şimdi Flashback Data Archive dan sorumlu tablespace yaratıyorum.
SQL>create tablespace fda_tbs datafile ‘D:\app\frat\oradata\orcl\fda_tbs1.dbf’ size 10G;
Ve 10G alanı olan içinde data olmayan tablespace imin flashback data archive için çalışacağını belirtiyorum.
SQL>create flashback archive fda tablespace fda_tbs quota 8G retention 2 year;
FDA archive ı fda_tbs tablespace i üzerinde 8G lık bir alanı kullanabilecek ve saklayacağı datanın süresi 2 yıl olarak belirttim.(Istediğiniz şekilde zaman ve size boyutunu değiştirebilirsiniz)
Fakat şuandaki durumda bu fda flashback arşivi hangi tabloları bu süre için saklayacak henüz belirtmedim.
SQL>alter table firat.calisanlar flashback archive fda;
Bu durumda artık firat şemasında bulunan calisanlar tablosundaki bütün hareketler fda flashback archive ına da kaydedilecek undo nun dışında.Artık zaman kavramım undoyla sınırlı kalmamış oldu.
Undo tablespace inde bütün tablolar tutulucak ve süre kısıtı söz konusu ama bu özellik sayesinde bizim için önemli-kritik tablolarımı Data Archive sayesinde oluşturduğum tablespacedeki archive alanına da alarak bu darboğazdan kurtulabiliyorum.
Peki ben tablomun istediğim bir tarihteki halini nasıl sorgulayacağım?
SQL>select employee_id,last_name,salary from firat.calisanlar as of timestamp
>to_timestamp(‘2010-08-01 00:00:00’,’YYYY-MM-DD HH24:MI:SS’);
şeklinde calısanlar tablomun 2010 yılının agustos ayının ilk günü nasıl olduğunu görmüş oldum.
Devam ediyoruz FDA alanında yer sıkıntısı oluşmaya başladığında ise
SQL>alter flashback archive fda add tablespace test quota 3G;
3GB daha alan ayırabildim.
Retention zamanını nasıl değiştiricez ki bizim için süre 2 yıldı.
SQL>alter flashback archive fda modify retention 3 year;
artık 3 yıla çıkarttım.
Artık kullanmayacaksınız ve drop etme ihtiyacınız da ise
SQL>drop flashback archive fda;