Flashback Table

FLASHBACK TABLE İLE TABLOYU GEÇMİŞE DÖNDÜRMEK

Flashback teknolojisinin bir diğer güzel özelliği de flashback table’dır. Bu özelliği kullanarak tabloyu geçmiş bir zamana geri döndürebiliyoruz.(geriye sarmak da diyor bazı arkadaşlar) Flashback table kullanabilmemiz için tablonun row movement özelliği enable olmalıdır, çünkü bu işlemde satırların rowid değerleri değişmektedir.Row movement enable etmeden flashback table denenirse ora-08189 cannot flashback the table because row movement hatası alınır..

Bu özellikle hem zamana göre hem de scn (system change number)  numarasına göre tabloyu geri döndürebiliriz.Her ikisiyle de örnekler yapalım.
Öncelikle tablomuz için row movement enable edelim.

SQL> ALTER TABLE FLASHBACK_TABLE_TEST ENABLE ROW MOVEMENT;

SCN numarasına göre tabloyu geri döndürmek:

SQL> FLASHBACK TABLE FLASHBACK_TABLE_TEST TO SCN 1309666;

T anına tabloyu geri döndürmek:

SQL> FLASHBACK TABLE FLASHBACK_TABLE_TEST TO TIMESTAMP  TO_TIMESTAMP('01-05-2014 22:06:30','DD-MM-YYYY HH24:MI:SS');

Tablomuz t anına geri dönmüş oldu..

SCN‘i zamana çevirmek ya da zamanın SCN’ini bulmak isterseniz;

SCN’i zamana çevirmek:

SQL> SELECT SCN_TO_TIMESTAMP(818898888) AS TIMESTAMP FROM DUAL;

Zamanı SCN’e çevirmek:

SQL> SELECT TIMESTAMP_TO_SCN(TO_TIMESTAMP('01/05/2014 21:00:54','DD/MM/YYYY HH24
:MI:SS')) AS SCN FROM DUAL;

Şu andaki SCN Numarasını bulmak:

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

Tabi ki tablomuzu ne kadar geriye dönebileceğimiz flashback ayarlarıyla ilgili.
Flashback ayarları için bu makaleme  bakabilirsiniz..

Umarım faydalı olur..

Tagged: , , , , , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir