Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
34 gösterim
Oracle'da yanlışlıkla truncate ettiğim, delete from ile sildiğim ya da drop dediğim tabloları kurtarma ihtimalimiz var mı ?
Veri Tabanı kategorisinde (3.1k puan) sordu

1 cevap

0 oy

Eğer Oracle'da flashback özelliği açıksa ve üzerinden fazlaca zaman geçmemiş ise aşağıdaki  sorguda kullanılan as of timestamp  kalıbını kullanarak eski verilerinize ulaşabilirsiniz.

select * from tablo_adı AS OF TIMESTAMP to_timestamp('22/12/2016 09:49:10','DD/MM/YYYY HH24:MI:SS');

SQL> select * from deneme;

        ID TARIH
---------- ----------
         1 22/12/2016
         2 22/12/2016

SQL> !date
Thu Dec 22 09:49:31 +03 2016

SQL> delete deneme;

2 rows deleted.

SQL> commit;

Commit complete.

SQL> select * from deneme;

no rows selected

SQL> select * from deneme  AS OF TIMESTAMP to_timestamp('22/12/2016 09:49:30','DD/MM/YYYY HH24:MI:SS');

        ID TARIH
---------- ----------
         1 22/12/2016
         2 22/12/2016

--biraz daha öncesinde ise aşağıdaki gibi tek kayıt varmış.

SQL> select * from deneme  AS OF TIMESTAMP to_timestamp('22/12/2016 09:49:10','DD/MM/YYYY HH24:MI:SS');

        ID TARIH
---------- ----------
         1 22/12/2016

Tablo yapısında değişiklik yapılmadığı sürece (alter veya truncate) , bu şekilde verinizin geçmiş halini görebilirsiniz.  Sadece silinme diye düşünmeyin, yanlışlıkla update ettiğiniz verinizin eski halini de görebilirsiniz. İsterseniz create table as  kullanarak verinizin önceki halini başka bir tabloya da atabilirsiniz.

eğer bu işlemi yaparken yetki hatası alırsanız, veritabanı yöneticisine yetki vermesi için başvurabilirsiniz :)

(567 puan) cevapladı
düzenledi

İlgili sorular

0 oy
1 cevap 17 gösterim
+1 oy
1 cevap 26 gösterim
0 oy
2 cevap 62 gösterim
0 oy
1 cevap 30 gösterim
...