Merhaba,
PLSQL ile işlem sırasında bir delete komutu çalıştırırken where koşulu belirtmeyi unuttunuz ve farkında olmadan "commit" işlemi yaptınız. Veya update işleminde yanlış verileri güncellediniz.
Gibi gibi benzer durumlarda commit işlemi yaptığınız tablolardan verileri geri eski haline getirmek istediğiniz olabilir.
Bu gibi işlemler için aşağıdaki komutu kullanabilirsiniz.
Öncelikle komutu veriyorum ardından açıklama yapalım.
insert into [eklenecekTablo] (SELECT * FROM [veriCekilecekTablo] AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE) WHERE [kosulSütunu] = '[kosul]');
[eklenecekTablo]: Burada geri getirdiğimiz verileri ekleyeceğimiz tablo ismi veriyoruz.
Bu tablo silme işlemini gerçekleştirdiğimiz tablonun kendisi de olabilir.
Yani [eklenecekTablo] ile [veriCekilecekTablo] aynı tablo olabilir.
[veriCekilecekTablo]: Yanlış silme işlemi gerçekleştirilmiş veya yanlış güncelleme işlemi yapılmış olan tablo.
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE : Tablo içerisinde
60 dakika içerisinde yer alan veriler içerisinden select işlemi yapacağımızı belirtiyoruz.
[kosulSütunu] = '[kosul]' : Burada son 60 dakika içerisinde silinmiş başka veriler de olabilir o yüzden koşul belirterek doğru verilerin geri getirilmesini sağlıyoruz.
!!! Eğer son 60 dakika içerisinde tablo üzerinde önce veri ekleme sonra veri silme işlemi yapılmışsa yukarı belirttiğimiz çalışacak bir sorgu, tablonun veri eklenmeden önceki hali üzerinden işlem yapacaktır. O yüzden zaman aralığı ne kadar kısıtlayıcı olursa doğru verinin geri getirilmesi daha kolay ve efektif olacaktır. Bu konuda dikkatli olmak faydalı olur.
</HappyCoding>
Hiç yorum yok:
Yorum Gönder