Sayfalar

23 Temmuz 2011 Cumartesi

Programmer Blog: oracle flashback query

Alıntıdır :
Programmer Blog: oracle flashback query: "son zamanlarda sıkça hata yapmaya başladım.yaşlandım herhalde bu işler için. bi delete veya bi update yapıyorum sonra commit diyorum ardında..."


oracle flashback query

son zamanlarda sıkça hata yapmaya başladım.yaşlandım herhalde bu işler için. bi delete veya bi update yapıyorum sonra commit diyorum ardından eyvah diyorum:) sonra da hemen neydi lan bişi vardı tablonun eski tarihli bir görüntüsünü alabiliyorduk diyorum.google a oracel flashback query yazıyorum sonra scn(system change number) li sonuçlar dönüyor falan. ben bilmiyorum scn falan diyorum bana zamanla ilgili bişiler ver bu sefer timestamp çıkıyor karşıma... sonuçta aşağıdaki query i yazabiliyorum.


SELECT *
FROM stn_ihale_yaklasik_maliyet
AS OF SCN TIMESTAMP_TO_SCN(SYSTIMESTAMP - 1/24)


query den de anlaşılacağı üzere arkadaş bize tablonun bir saat önceki veri kümesini veriyor.


burda dikkat edilmesi gereken üç konu var.
1- bu özelliği kullanabilmek için database'de ayarlamak yapmak gerekebilir.(default olarak açıktır karıştırmayın yani:) 10g ile birlikte gelmiştir diye biliyorum)
2- tablo yapısı değişmemiş olmalıdır.yani siz kolon ekler veya çıkarırsanız geçmiş olsun.
3- from yanına sadece tek tablo yazabiliyorsunuz. tavsiyem select in başına
create table tmp as
yazıp sonra gerekli işlemleri yapmanızdır.


birde en fazla bir hafta geriye dönebiliyorsunuz default ayarlarla.


detaylı bilgi için
http://psoug.org/reference/flash_query.html
http://www.oracle-base.com/articles/10g/Flashback10g.php

Alıntı dışı :

SELECT *
  FROM XXYSM.MERICSTOK 
  AS OF SCN TIMESTAMP_TO_SCN (SYSTIMESTAMP - (1-(1439/1440)))
  -- tablonun 1 dk onceki halini verir
  -- 1440 - dk değeri 1439 yerine yazılmalıdır...


5 dk onceki halini istiyorsak

SELECT *
  FROM XXYSM.MERICSTOK 
  AS OF SCN TIMESTAMP_TO_SCN (SYSTIMESTAMP - (1-(1435/1440)))
 

yazılmalıdır...