Flashback Query

Flashback Query nedir, ne zaman kullanılır?

 

Flashback makale serisine flashback query ile devam ediyoruz.Flashback query ile tabloyu geçmiş bir andaymışız gibi sorgulayabiliriz.Undo retentiton parametresi kadar geriye dönük sorgulama yapmak mümkün.Kullanıcı hatalarından kaynaklanan yanlış silme, güncelleme vb dml işlemlerini yakalamak için kullanabiliriz..

Örneğin bir tabloyu yanlış güncellemiş olalım, ve commit ettiğimizi varsayalım.
güncellemenin yanlış olduğunu farkettik ve eyvah 🙂
Bu durumda panik yapmadan flashback query ile tablonun güncelleme öncesi durumunu
görebiliriz.

Zamana göre flashback;

SQL> SELECT * FROM flashback_table_test  AS OF TIMESTAMP TO_TIMESTAMP('02-05-2014 11:59:30','DD-MM-YYYY HH24:MI:SS');

Tablonun bir saat önceki hali;

SQL> SELECT * FROM flashback_table_test  AS OF TIMESTAMP SYSDATE-(1/24);

İstersek where şartı ile istediğimiz satır(ları) da sorgulayabiliriz.

SQL> SELECT * FROM flashback_table_test  AS OF TIMESTAMP TO_TIMESTAMP('02-05-2014 11:59:30','DD-MM-YYYY HH24:MI:SS') WHERE ID=3;

SCN’e göre flashback:

SQL> SELECT current_scn FROM v$database; --şu andaki scn numarası 4070211849
 
SQL> SELECT * FROM flashback_table_test  AS OF SCN 4070211799; 
 
SQL> SELECT * FROM flashback_table_test  AS OF SCN 4070211799  WHERE ID=2;

Önceki durumunu incelemek için Create Table As Of diyerek yeni bir tablo oluşturabiliriz..

SQL> CREATE TABLE flashback_table_SCN_4070211799 as (SELECT * FROM flashback_table_test  AS OF SCN 4070211799);

Umarım faydalı olur..

Tagged: , , , , , ,

Bir cevap yazın

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