interbase/firebird de silinen kayıtların tekrar alınması

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 01:33
Konum: Ankara

interbase/firebird de silinen kayıtların tekrar alınması

Mesaj gönderen sen »

merhaba
interbase/firebird de sildiğimiz kayıtların dosyadan tamamen silinmediğini biliyoruz.
Yanlışlıkla sildiğimiz bir kaydı tekrar nasıl geri getirilir.
teşekkürler....
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Himmm, :(

malesef interbasse,firebird ve bildigim kadari ile butun sql temelli veritabanlarında silinen kayıtlar aslinda gerçekten siliniyorlar. Sanirim ddbase'de vardi * karakteri ile silindi olarak işaretleme tekniği. Bu tarz bir teknik sql veritabanlarında yok. Eger isterseniz benzr bir şey siz yapabilirsiniz. Yani her yaploya silindi seklinde bir alan ile silinme işlemini o alanı 1 ile update edip butun tablolari da birer view üzerinden silindi alani sifir olanlar ialabilirsiniz. Tabi oldukça uğraştıracak bir yöntem eğer tablo sayınız fazla ise.

Bir de Sybase, Oracle, MsSQL gibi veritabanları istege bagli olarak transaction log file tutarlar. Yani veritabanının ilek oluşturdugunuz andan itibaren tablolarin create edilmesinden tutun da kayit ekleme, degistirme ve silemelerin kadar veritabanı üzerinde çalışan bütün sql cümleleri bu log file içine yazilir. Dolayisiyla bir gun veritabanını kaybetseniz bile log file duruyorsa boş bir veritabanı oluşturup log file'i bu boş veritabanı üzerinde çalıştırdığınızda veritabanı tarihindeki bütün sql cümleleri seri bir şekilde çalışarak son haline gelecektir. Hatta eğer isterseniz bu kodlarin istediğinzi kadarını çalıştırarak mesela veritabanının 1 hafta, 1 ay veya 1 yıl önceki haline de dönebilirsiniz. Yani veritabanının tarihi üzerinde zamanda yolculuk gibi birşey. Bir takım veritabanı araçları ile de point in time isimli destek ile bunu zaman vererek kolayca yapabiliyorsunuz.

Fakat kullandığım interbase 6'nin böyle bir log file destegi bildigim kadari ile yok. Firebird veya yeni versiyon interbase için durumu bilemiyorum.

Kolay gelsin...
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

benim bildigim kadariyle kayıtlar fiziksel olarak tablodan silinmez.
dbase de silinmiş kayıtları görmenin bir yolu vardı ama paradoxta görebilmenin bir yolunu bulamamıştım. (x.db yi notpadle açmak hariç)

interbase de ise silinen kayıtlar yine fiziksel olarak tablodan silinmiyor.
en azından kayıdın gdb de işgal ettigi bytler silindikten sonrada gdb yer alıyor.bu silinmiş kayıtları görebilmenin bir yolu varmıdır ben bilmiyorum ama gdb yi silinmiş bu kayıtların artıklarından kurtarmak için ib consoldan veya her hangi backup / restore yapabilen bir araçla önce backup alıp daha sonra restore edebilirsiniz.

benim bilgim bu yönde...
Cevapla