Oracle Flashback Query
Oracle Flashback Query , select sorgusunun AS OF ile kullanımına olanak sağlar. Geçmişteki commit’lenmiş verinin , mümkün olduğu kadarını sorgulamamıza yarar. Geçmişteki veriyi time stamp yada system change number (SCN) üzerinden sorgulayabiliriz.
Flashback Query kullanımı için veritabanının flashback özelliğinin açık olmasına gerek yoktur.
Oracle Flashback Query kullanım alanları :
- Silinmiş yada hatalı şekilde değiştirilmiş bilginin geri getirilmesinde kullanılır.
- Mevcut verinin , daha önceki haliyle karşılaştırılmasında kullanılır.
- İşlemsel verinin belirli bir zamandaki durumunun kontrolünün yapılmasında kullanılır.
- Oracle Flashback Query , geçmiş veriyi , herhangi bir restore recover işlemi olmadan direkt veritabanında getirir.
- Bir uygulamanın kendi kendine, son kullanıcı hatalarını , düzeltmesine olanak sağlar.
Flashback Query ile sorgulayacağınız veri undo verisi olacağından , undo tablo alanınınızın büyüklüğü ve unto retention parametrenizin ne kadar yüksek olduğuyla direkt ilişkilidir.
Flashback Query için AS OF SCN ve AS OF TIMESTAMP kullanımı mevcuttur.
AS OF SCN :
System Change Number (SCN) belirterek , verinin geçmişteki halini sorgulayabiliriz.
Bir veri değişmeden önce ve sonraki SCN bilgisini aşağıdaki sorgu ile öğrenebilirsiniz. SCN ile sorgulama yapmak için değişim öncesi SCN bilgisine ihtiyaç duyulacaktır.
SQL> SELECT current_scn, SYSTIMESTAMP FROM v$database;
Aşağıdaki örnek sorgu ile SCN belirterek geçmiş veriyi sorgulayabiliriz.
SQL> select * from kullanici.tablo as of scn 342340432;
AS OF TIMESTAMP :
Belirli bir tarih vererek , verinin geçmişteki halini sorgulayabiliriz. Aşağıdaki örnek sorgu ile tarih belirterek geçmiş veriyi sorgulayabiliriz.
SQL> select * from kullanici.tablo as of timestamp to_date('20.12.2016 12:00:00','dd.mm.yyyy hh24:mi:ss');
Sorgulamalarda koşul da belirtebiliriz.
SQL> select * from kullanici.tablo as of timestamp to_date('20.12.2016 12:00:00','dd.mm.yyyy hh24:mi:ss') where kolon=deger;