Firebird Veritabanı Bozulma Nedenleri/Öneriler
Firebird Veritabanı Bozulma Nedenleri/Öneriler
Merhaba,
Bilgisayarda saklanan her bilgi gibi Firebird veritabanınızda bozulabilir, yanlışlıkla silinebilir. Windows veya diğer işletim sistemleri, aman bu veritabanı buna özel muamele yapayım demez. Bu makalemizde yapılan yanlışları tespit ederek, veritabanını bozulmaktan nasıl kurtarabilirsiniz, onu anlatmaya çalışacağım.
Veritabanı Neden Bozulur?
* En büyük nedenlerden biri veritabanı yüklü makinanın, genelde elektrik kesintisi nedeniyle kontrolsüz kapanmasıdır. Pek çok işletim sisteminde bu tarz durumlarda kullanımda olan dosyalar bozulabilmektedir. Çözüm olarak 50-100 $ arası ufak bir kesintisiz güç kaynağı almak şarttır.
* Bilgisayar parçalarında meydana gelen kusur veya bozukluklar. Harddiskin bozulması, Raid kartlarının bozulması vs. Bu tarz durumlarda bilgi kurtarma biraz sıkıntılı olabilir. Beki de bozulan harddiskteki veritabanına hiç ulaşamayabilirsiniz. Çözüm düzenli olarak yedek almak ve kurtarılması mümkün olmayan durumlarda bu yedekten geri dönüş yapmaktır.
* Firebird Server (servis) çalışırken veritabanı dosyasını kopyalamak veya başka yöntemlerle erişmek. Programlarınızın kapalı olması, veritabanı dosyası üzerinde işlem yapılmadığı manasına gelmez. Firebird server sweep gibi işlemleri yapıyor olabilir. Çözüm : Veritabanı dosyalarını (*.fdb, *.gdb) servis çalışırken kopyalamayın ve kullanıcıları bu konuda uyarın. Kopyalamanız gerekiyorsa, denetim masasından firebird servisini kapatıp kopyalayın. Yedeklerinizi dosya kopyalama yöntemiyle değil, backup ile alın.
* Kararsız sürümleri kullanmak. Interbase 5.1 ile 5.5 arasındaki sürümler ciddi sıkıntısı olan sürümlerdir. Çözüm : Bunları client veya server olarak kullanmayın. Mümkün derece server ve client sürümlerini aynı tutun.
* Veritabanın bulunduğu diskte boş yer kalmaması. Bu da sıkıntı çıkarabilmektedir.
* Forced Writes parametresinin kapalı olması. Bu parametre on (açık) veya off (kapalı) olabilmektedir. Bu parametre diske yazımları kontrol eder. Açık ise, bilgi commit edildiği anda diske yazılır, off ise hemen yazılmaz. Bilgi kaybını önlemek için, bu parametrenin mutlaka on(açık) olması gerekmektedir.
* Veritabanı dosyası boyutunun (veritabanının değil!) aşılması. İşletim sistemine de bağlı olarak Firebird için bu 32 TB'dır. Ancak Interbase 6 beta sürümleri ve öncesi için bu limit 4 GB'dır. Bu limit aşılınca yeni veritabanı dosyası eklenmelidir.
* Veritabanı dizaynında yapılan hatalar. Bu genelde "not null" ile ilgili olmaktadır. not null bir alan eklediğiniz zaman, sorunsuzca eklenir. Ancak backup alıp, restore yapmak istediğiniz zaman tabloya daha önce eklenmiş kayıtlarda bu alanın değeri null olduğu için restore işlemini gerçekleştiremezsiniz. Interbase 7.1 ve üstü sürümlerde bunun için önlem alınmış. Ancak Firebird'deki durum nedir bilemiyorum. Çözüm : Dizaynınızı standartlara uygun şekilde yapmalı ve mutlaka yedeklerden geri dönüş testini yapmanız lazım.
* Kullanımda olan veritabanı üzerinde metadata değişiklikleri yapmak, özellikle table ekleyip/silmek. Bu da veritabanına zarar verebilmektedir. Çözüm olarak tüm kullanıcıların bağlantılarını kestikten sonra, hatta servisi durdurup dosyanın ismini değiştirerek hiçbir kullanıcının bağlanmayacağı şekle getirip metadata değişikliklerini yapmalısınız.
* Kaza ile veritabanı dosyasını silme. Maalesef bu aşamada yapacak çokta birşey yok, undelete programlarını deneyebilirsiniz. Düzenli bir şekilde yedek almak lazım. Yedek işlemini de otomatik bir düzeneğe bağlamak iyi olacaktır. Çünki insan insiyatifine bırakılınca birkaç hafta sonra aksamaya başlayacak ve bir süre sonra da tamamen bırakılacaktır. FIBS gibi bir yedek yöneticisi program kullanmak uygun olacaktır.
* Eski sürüm kullanmak. Nadirde olsa bazı durumlarda bug'lardan kaynaklanan bozulmalar olabilmektedir. Bunlar tespit edildiği anda düzeltilmektedir. Yeni sürüm çıktığı zaman, testlerinizi yapıp yeni sürüme geçmeniz iyi olacaktır. Örneğin 2.0.3 kullanırken 2.0.4 çıktı ise, testlerini yapıp 2.0.4'e geçmelisiniz.
* Veritabanı uzantılarınızı .fdb yapın. Çünki interbase'in kullandığı .gdb uzantısı, windows'un system geri yükleme (system restore) dosyalarıyla çakışmaktadır. Bu da bazen sıkıntı çıkarabilmektedir. İlla ki .gdb uzantısı kullanmak istiyorsanız, sistem geri yüklemesini kapatın.
* Bazı antivirüsler dosya tarama işini abartabilmektedir. Normal şartlarda bir sıkıntı hiç duymadım ama veritabanı dosyalarını (*.fdb) tarama dışında bırakmak iyi olacaktır.
Kolay gelsin.
Bilgisayarda saklanan her bilgi gibi Firebird veritabanınızda bozulabilir, yanlışlıkla silinebilir. Windows veya diğer işletim sistemleri, aman bu veritabanı buna özel muamele yapayım demez. Bu makalemizde yapılan yanlışları tespit ederek, veritabanını bozulmaktan nasıl kurtarabilirsiniz, onu anlatmaya çalışacağım.
Veritabanı Neden Bozulur?
* En büyük nedenlerden biri veritabanı yüklü makinanın, genelde elektrik kesintisi nedeniyle kontrolsüz kapanmasıdır. Pek çok işletim sisteminde bu tarz durumlarda kullanımda olan dosyalar bozulabilmektedir. Çözüm olarak 50-100 $ arası ufak bir kesintisiz güç kaynağı almak şarttır.
* Bilgisayar parçalarında meydana gelen kusur veya bozukluklar. Harddiskin bozulması, Raid kartlarının bozulması vs. Bu tarz durumlarda bilgi kurtarma biraz sıkıntılı olabilir. Beki de bozulan harddiskteki veritabanına hiç ulaşamayabilirsiniz. Çözüm düzenli olarak yedek almak ve kurtarılması mümkün olmayan durumlarda bu yedekten geri dönüş yapmaktır.
* Firebird Server (servis) çalışırken veritabanı dosyasını kopyalamak veya başka yöntemlerle erişmek. Programlarınızın kapalı olması, veritabanı dosyası üzerinde işlem yapılmadığı manasına gelmez. Firebird server sweep gibi işlemleri yapıyor olabilir. Çözüm : Veritabanı dosyalarını (*.fdb, *.gdb) servis çalışırken kopyalamayın ve kullanıcıları bu konuda uyarın. Kopyalamanız gerekiyorsa, denetim masasından firebird servisini kapatıp kopyalayın. Yedeklerinizi dosya kopyalama yöntemiyle değil, backup ile alın.
* Kararsız sürümleri kullanmak. Interbase 5.1 ile 5.5 arasındaki sürümler ciddi sıkıntısı olan sürümlerdir. Çözüm : Bunları client veya server olarak kullanmayın. Mümkün derece server ve client sürümlerini aynı tutun.
* Veritabanın bulunduğu diskte boş yer kalmaması. Bu da sıkıntı çıkarabilmektedir.
* Forced Writes parametresinin kapalı olması. Bu parametre on (açık) veya off (kapalı) olabilmektedir. Bu parametre diske yazımları kontrol eder. Açık ise, bilgi commit edildiği anda diske yazılır, off ise hemen yazılmaz. Bilgi kaybını önlemek için, bu parametrenin mutlaka on(açık) olması gerekmektedir.
* Veritabanı dosyası boyutunun (veritabanının değil!) aşılması. İşletim sistemine de bağlı olarak Firebird için bu 32 TB'dır. Ancak Interbase 6 beta sürümleri ve öncesi için bu limit 4 GB'dır. Bu limit aşılınca yeni veritabanı dosyası eklenmelidir.
* Veritabanı dizaynında yapılan hatalar. Bu genelde "not null" ile ilgili olmaktadır. not null bir alan eklediğiniz zaman, sorunsuzca eklenir. Ancak backup alıp, restore yapmak istediğiniz zaman tabloya daha önce eklenmiş kayıtlarda bu alanın değeri null olduğu için restore işlemini gerçekleştiremezsiniz. Interbase 7.1 ve üstü sürümlerde bunun için önlem alınmış. Ancak Firebird'deki durum nedir bilemiyorum. Çözüm : Dizaynınızı standartlara uygun şekilde yapmalı ve mutlaka yedeklerden geri dönüş testini yapmanız lazım.
* Kullanımda olan veritabanı üzerinde metadata değişiklikleri yapmak, özellikle table ekleyip/silmek. Bu da veritabanına zarar verebilmektedir. Çözüm olarak tüm kullanıcıların bağlantılarını kestikten sonra, hatta servisi durdurup dosyanın ismini değiştirerek hiçbir kullanıcının bağlanmayacağı şekle getirip metadata değişikliklerini yapmalısınız.
* Kaza ile veritabanı dosyasını silme. Maalesef bu aşamada yapacak çokta birşey yok, undelete programlarını deneyebilirsiniz. Düzenli bir şekilde yedek almak lazım. Yedek işlemini de otomatik bir düzeneğe bağlamak iyi olacaktır. Çünki insan insiyatifine bırakılınca birkaç hafta sonra aksamaya başlayacak ve bir süre sonra da tamamen bırakılacaktır. FIBS gibi bir yedek yöneticisi program kullanmak uygun olacaktır.
* Eski sürüm kullanmak. Nadirde olsa bazı durumlarda bug'lardan kaynaklanan bozulmalar olabilmektedir. Bunlar tespit edildiği anda düzeltilmektedir. Yeni sürüm çıktığı zaman, testlerinizi yapıp yeni sürüme geçmeniz iyi olacaktır. Örneğin 2.0.3 kullanırken 2.0.4 çıktı ise, testlerini yapıp 2.0.4'e geçmelisiniz.
* Veritabanı uzantılarınızı .fdb yapın. Çünki interbase'in kullandığı .gdb uzantısı, windows'un system geri yükleme (system restore) dosyalarıyla çakışmaktadır. Bu da bazen sıkıntı çıkarabilmektedir. İlla ki .gdb uzantısı kullanmak istiyorsanız, sistem geri yüklemesini kapatın.
* Bazı antivirüsler dosya tarama işini abartabilmektedir. Normal şartlarda bir sıkıntı hiç duymadım ama veritabanı dosyalarını (*.fdb) tarama dışında bırakmak iyi olacaktır.
Kolay gelsin.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Nadiren de olsa donanım olarak sağlam bileşenlere sahip ama performans olarak çok kötü durumda olan bilgisayarlarda da veri bozulmaları yaşanmaktadır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Böyle birşey ilk defa duydum. Performansı çok kötü derken, ne kadar kötü mesela? Anladığım kadarıyla senin karşılaştığın bir durum, biraz daha detay verebilir misin? Normal şartlarda firebird çok sistem kaynağı isteyen bir veritabanı değil zaten. 32 MB ram, 486 bir makina yetiyor.sabanakman yazdı:Nadiren de olsa donanım olarak sağlam bileşenlere sahip ama performans olarak çok kötü durumda olan bilgisayarlarda da veri bozulmaları yaşanmaktadır.
Kolay gelsin.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Aslında benimkisi FB değil, paradox ve özellikle MSDE. Her şey normalken birden bire verilerde bozulma (suspect) oluyor ve genelde RAM arttırmayı önererek sıkıntıyı gideriyoruz. Hatta bazı bilgisayarlarda bazı dosyaları farklı klasöre taşımak bile .mdf'leri kullanılmaz hale getirdi. Gerekli attach, detach kodlarına rağmen. Tabi her bilgisayarda bu şekilde davranmaması işin daha da vahim boyutu. Hal böyle olunca bu kısıtlı donanımlarla sancılı çalışan sistemlerin veri bozduğuna kanaat getirdim(k). Belki FireBird için böyle bir durum söz konusu olmayabilir ama belki bir faydası olur diye yazdım.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Mustafa Bey ,Faydalı bir yazı olmuş.
Fakat "Forced Writes" bu seçeneğin varsayılan değeri nedir ve bunu delphi içinden mi yoksa dişardan mı değiştireceğiz?
Fakat "Forced Writes" bu seçeneğin varsayılan değeri nedir ve bunu delphi içinden mi yoksa dişardan mı değiştireceğiz?
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Windows sürümü için konuşuyorum, varsayılan değeri açık(devrede). Değerini IbExpert'te Services -> Database Properties kısmından kontrol edebilirsiniz.oyle yazdı:...Fakat "Forced Writes" bu seçeneğin varsayılan değeri nedir ve bunu delphi içinden mi yoksa dişardan mı değiştireceğiz?
Kolay gelsin.
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Teşekkür ederim.
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
yedekleme işlemi yaparken klasik kopyalama yöntemini kullanıyorum. yaklaşık da bir yıldır hiç bir müşteriden bu konuda bir şikayet yada hata bildirimi almadık. ancak bu hata olmayacak alnlamına gelmez. kopyalam yöntemini neden kullanmamız gerekli.
yada yine bu yönteme devam etsek ancak kopyalama işlemine başlamadan evvel serveri kapatsak sonra ilk açılışta serveri tekrar açsak nasıl olur. bu işlemi nasıl yapabiliriz. serveri açıp kapatmayı.delphi üzeinden.
yada yine bu yönteme devam etsek ancak kopyalama işlemine başlamadan evvel serveri kapatsak sonra ilk açılışta serveri tekrar açsak nasıl olur. bu işlemi nasıl yapabiliriz. serveri açıp kapatmayı.delphi üzeinden.
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Sizin veritabanına olan tüm bağlantıları kapatmanız, veritabanı dosyasının boşa çıktığı anlamına gelmiyor.baloglurecep yazdı:yedekleme işlemi yaparken klasik kopyalama yöntemini kullanıyorum...
* Genelde çok kullanıcılı ortamlarda kullanıldığı için, başka bir kullanıcı veritabanını kullanıyor olabilir.
* Firebird server sweep gibi işlemler yapıyor olabiliyor. Yani siz tüm bağlantıları koparsanız, başka kullanıcılarda bağlı olmasa bile dosya aktif kullanımda olabilir.
Biz de bu yöntemi kullanıyorduk ama backup yöntemine döndük. Bu tarz kullanımlarda dosya bozulsa ve bazı page'lere ulaşamasa bile sorunsuz kullanabiliyor, dolayısıyla sorunun farkına varamıyor. Hiç yedek aldığınız dosyaları veya orjinal dosyaları validation işleminden geçirdiniz mi?
Kolay gelsin.
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Yedekleme işlemlerinde Shadow Kullanın bence.. Veritabanının yedeğini canlı olarak alıyor.. Bununla ilgili bir makale yayınlamıştım.. Ordan nasıl kullanıldığını görebilirsiniz..
Selamlar..
Selamlar..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Ben servisi kapatmadan yedek aldırıyorum , sorun olmadı hiç , servis açıkken bile yedek alması firebird in ne kadar harika bir veritabanı olduğunun kanıtıdır..
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Peki hiç bir kullanıcının bağlı olmadığını ve firebird serverın sweep işlemi yapmadığını nasıl anlarız dosya kullanımda mı diye kontrol etsek yeterli oluyormu?
Mücadele güzelleştirir!
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Firebird Veritabanı Bozulma Nedenleri/Öneriler
Kod: Tümünü seç
select * from mon$attachments
Mücadele güzelleştirir!