Merhaba arkadaşlar,
Bu yazımda Oracle’ın flashback özelliğini kullanarak değiştirdiğimiz veya sildiğimiz verilere nasıl erişeceğimizi anlatacağım.
Önce örneğimiz için aşağıdaki gibi bir tablo oluşturalım :
create table as_of_timestamp(
as_of1 varchar2(20),
as_of2 varchar2(20)
)
Table created.
Sonra tablomuza aşağıdaki gibi 3 adet kayıt ekleyelim :
insert into as_of_timestamp values (’1.kayit’,'var’);
insert into as_of_timestamp values (’2.kayit’,'var’);
insert into as_of_timestamp values (’3.kayit’,'var’);
commit;
1 row created.
1 row created.
1 row created.
Commit complete.
Şu an itibarıyle tablomuz aşağıdaki gibi :
select * from as_of_timestamp;
AS_OF1 | AS_OF2 |
1.kayit | var |
2.kayit | var |
3.kayit | var |
Şimdi tablomuzdan 2. Kaydı uçuruyoruz.
delete from as_of_timestamp where as_of1 like ’2%’;
commit;
1 row deleted.
Commit complete.
Tablomuzun yeni hali şöyle :
select * from as_of_timestamp
AS_OF1 | AS_OF2 |
1.kayit | var |
3.kayit | var |
Mesela şöyle bir senaryo üretelim ki sildiğimiz bu data bize sonradan lazım oldu. Veyahut silmememiz gereken bir datayı sildik. Hal böyleki commitlemiş de bulunduk J Bu tür durumlarda no panic : )
Aşağıdaki gibi bir sorguyla “TO_TIMESTAMP” fonksiyonu içerisinde belirttiğimiz tarihteki dataya ulaşabiliyoruz. Ben slime işlemini 17:34 te yapmıştım. Aşağıdaki gibi, tablonun 17:32 anındaki datasına erişebiliyorum :
select * from as_of_timestamp
as of timestamp TO_TIMESTAMP(’2011-02-14 17:32:00′, ’YYYY-MM-DD hh24:mi:SS’)
AS_OF1 | AS_OF2 |
1.kayit | var |
2.kayit | var |
3.kayit | var |
Umarım faydası dokunur.
İyi Çalışmalar.