top of page

Oracle Flashback Data Archive (FBDA)



Merhaba, bu yazıda Oracle'ın Flashback teknolojilerinden biri olan Flashback Data Archive'ı uygulamalı olarak inceleyeceğiz. Keyifli okumalar dilerim...


Flashback teknolojileri temelde kaybedilen verinin kurtarılması ve tarihsel veriye erişmek amacıyla kullanılmaktadır. Daha önceki yazımda Flashback Database operasyonundan bahsetmiştik. Flashback Database operasyonunda tüm veritabanı işlemleri flashback archive dosyaları üretir ve geri dönmek istenildiğinde tüm veritabanı belirli SCN'e döndürülür. Fakat veritabanı kullanımlarında çoğu zaman tüm veritabanı yerine belirli tablolarda geri dönülmesi beklenilir. Bu noktada Oracle Flashback Data Archive çözümünü sunuyor. FBDA ile verinin tarihsel değişimi belirlenen süre boyunca korunuyor ve istenildiği zaman geçmişteki veriye erişilmesi sağlanıyor.



FBDA Faydaları Nelerdir?


- Kolay konfigürasyon.

- Minimal performans kaybı.

- Optimum korunan ayak izi.

- Veriler belirlenen saklama politikası boyunca veritabanında tutulur.

- Tarihsel veri sıkıştırılmış formda tutularak depolama avantajı sunar.

- "As of" kalıbı ile kolayca sorgulanır.

- Tarihsel veri her zaman güvenlidir.

- Yetkisi olmayan kullanıcılar tarihsel veriyi göremez.

- Tarihsel veri kimse tarafından güncellenemez.


FBDA Yetenekleri Nelerdir?


- İzlenen tablolara kolon eklenebilir.

- Tablo geçmişini bozacak her türlü DDL işlemini otomatik olarak önler.

- Retention parametresi ile tabloların izlenme süresi sınırlandırılabilir.

- Süresi geçen tarihsel veriyi retention'ı koruyacak şekilde otomatik siler.

- Flashback için belirlenen alan %90'ı geçince alarm üretir.

- Performansı yüksek tutabilmek için Undo'dan tek seferde alabildiği kadar fazla veriyi flashback archive'larına çıkar. Bu süre default 5 dakika olmakla beraber sistem aktiviteleri sonucunda kendi kendine tune edilir.



Örnek uygulamayı yapmak için basit bir tablo oluşturalım. Flashback komutunu çalıştırabilmek için tabloda "row movement" enable edilmelidir. Flashback verilerinin tutulacağı bir tablespace ve bu tablespace'de retention parametresi 1 yıl olacak şekilde flashback archive oluşturduk. Oluşturulan flashback archive politikasını tabloya tanımlayarak fbda enable işlemini tamamlıyoruz.



SQL> create table fb_table (id number, text varchar2(20));
SQL> alter table fb_table enable row movement;
SQL> create tablespace fb_tbs datafile 'fb_tbs.dbf' size 10m;
SQL> create flashback archive f1_arch tablespace fb_tbs retention 1 year;
SQL> alter table fb_table flashback archive f1_arch;

Tabloda güncel SCN ve tarihi alarak, test etmek üzere veri ekleyelim.



SQL> alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS';
SQL> insert into fb_table values (1,'A');
SQL> commit;
SQL> select current_scn, controlfile_time from v$database;
SQL> insert into fb_table values (2,'B');
SQL> commit;

Tabloda ikinci insert'i yapmadan önce aldığımız SCN'e flashback table komutunu çalıştırarak flashback table uygulamasını yapmış oluyoruz.



SQL> select * from fb_table;
SQL> flashback table fb_table to scn <BEFORE_INSERT_SCN>;
SQL> select * from fb_table;

Tabloda tekrar güncel SCN ve tarihi alarak, test etmek üzere veri ekleyelim. Ve bu sefer timestamp kullanarak insert yapmadan önceki tarihe dönelim.



SQL> select * from fb_table;
SQL> select current_scn, controlfile_time from v$database;
SQL> insert into fb_table values (3,'C');
SQL> commit;
SQL> select * from fb_table;
SQL> flashback table fb_table to timestamp <TIME_BEFORE_INSERT>;
SQL> select * from fb_table;

İnsert işleminde gördüğümüz gibi delete ve update işlemlerinde de aynı şekilde geri dönülmesi mümkündür. Böylece flashback table uygulamasını görmüş olduk. FBDA'nın aktif olduğu tabloları ve politikaları aşağıdaki gibi sorgulayabiliriz.



SQL> select flashback_archive_name from dba_flashback_archive_tables where table_name='FB_TABLE';
SQL> drop table fb_table;

Bir flashback tablosu drop edilmek istenildiğinde görüldüğü gibi ORA-55610 hatası fırlatılıyor. Bu durumda önce tablonun flashback özelliği kapatılmalı ve kontrollü şekilde drop edilmelidir.

SQL> alter table fb_table no flashback archive;
SQL> drop table fb_table;

Eğer flashback aktif olan bir tabloyu drop ettiyseniz aşağıdaki komut ile geri getirebilirsiniz.

SQL> flashback table fb_table to before drop;

Eğer var olan bir flashback politikasını düzenlemek isterseniz;

SQL> alter flashback archive f1_arch retention 2 year;

Eğer var olan bir tablonun flashback politikasını değiştirmek isterseniz;

SQL> alter table fb_table flashback archive f2_arch;

Eğer 10 günden eski flashback archive dosyalarını silmek isterseniz;

SQL> alter flashback archive f1_arch purge before timestamp (systimestamp - interval '10' day);

Eğer bir tablonun 1 gün önceki halini sorgulamak isterseniz;

SQL> select * from fb_table as of timestamp sysdate-1;

 

Gelecek yazılarımızda görüşmek üzere, sağlıcakla kalın.

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating

©2021, Data4Tech 

bottom of page