Veritabanı Bakım Aracı
(gfix)
Bir veritabanı yöneticisi olarak, veritabanına bağlanıp değişik toparlamalar ve iyileştirme işlemleri için komut satırı yönetim aracı gfix ‘i kullanabilirsiniz.
gfix ile yapılabilecek işlemler:
• Sweep, veritabanı süpürme.
• Sweep peryodu ayarlama.
• Özel bağlantı için veritabanını durdurma ve tekrar başlatma.
• Eşzamanlı yazma ve önbellekte tutma arası geçiş.( synchronous , asynchronous)
• Yazılabilir bir veritabanın sadece okunabilir yapma veya tersi.
• SQL dialect (dil) değiştirme
• Veritabanı önbellek (cache) büyüklüğünü ayarlama.
• Tamamlanmamış, unutulmuş aktarımları bulma ve tamamlama.
• Bozuk verileri onarma ve kararlı hale getirme
• Shadow (Gölge) veritabanlarını aktif etme ve iptal etme.
gfix kullanımı :
gfix aracı sadece komut satırında çalıştırılabilir ve kullanabilmek için veritabanı sahibi (owner) veya SYSDBA olarak login olmalısınız. gfix’i çalıştırabilmek için komut satırını açınız ve Firebird kök dizinindeki bin klasörüne geçiniz.
gfix aracı için örnek sözdizimi aşağıdaki gibidir:
gfix [options] db_adı
db_adı işlem yapmak istediğiniz veritabanının birincil dosyasının (primary-file) tam adını içermelidir.
Single-file bir veritabanı için birincil dosya veritabanının kendisidir. Multiple-file bir veritabanı için birincil dosya setteki ilk dosyadır.
Options, komutların geçerli bir şekilde birleştirilmesi ve parametrelerden oluşur. Tablo-1’ de komutları ve parametrelerini bulabilirsiniz. Seçmeli parametreler köşeli parantez içinde [] verilecektir.
gfix ile veritabanına erişim
Veritabanına uzaktan erişiyorsanız, oluşturdunuz komut SYSDBA veya veritabanı sahibi için kullanıcı adı ve şifreyi mutlaka içermelidir.
Örnek olarak:
-pas[sword] <password> -u[ser] <name>
Aşağıdaki örnek gfix komutunu kullanarak Forced Write’ı etkinleştirir.
POSIX:
bin]$ ./gfix –w sync customer.fdb –pas masterkey –user SYSDBA
Windows:
bin> gfix –w sync customer.fdb –pas masterkey –user SYSDBA
Yerel bağlantı için kullanıcı adı ve şifre
Bozulmuş bir veritabanını düzeltme veya aktarım kurtarma işlemlerini yapabilmek için, başlangıç olarak sunucu üzerinden çalışmak yerine veritabanın yerel bir kopyası üzerinde işlem yapalım. ISC_USER ve ISC_PASSWORD parametrelerini kullanarak her komutta kullanıcı adı ve şifre yazmaktan kurtulabiliriz.
shell promt > SET ISC_USER = SYSDBA
shell promt > SET ISC_PASSWORD = masterkey
Güvenlik nedeni ile işleminiz bittiğinde bu parametreleri mutlaka iptal etmelisiniz. Bu değişkenleri sistemde kalıcı olarak atamanız tavsiye edilmez.
1. Sweeping (Veritabanı Süpürme)
Firebird’in multi-generational mimarisi, bir satırın birden fazla versiyonunu veri sayfasında saklamaya olanak sağlar. Firebird bir satır güncellendiği yada silindiği zaman, eski versiyonunu saklar. Normal çalışma esnasında, kullanılmayan veriler, gereksiz veri temizleme (background garbage collection) işlemi ile temizlenir. Bununla beraber bazı durumlarda veriler arada kalabilir (stuck) ve birikir. Veritabanının normal olmayan bir şekilde büyümesine yol açar. Bazı durumlarda sıkışmış aktarımlar performansı etkileyecek duruma gelebilir.
Veritabanı süpürme işlemi, veritabanından kullanılmayan satırları temizlemenin sistematik yoludur ve veritabanını gereksiz büyümeden korur. Varsayılan olarak Firebird veritabanı kesin işlemler sonrası otomatik olarak süpürmeye ayarlanmıştır. Bununla birlikte süpürme işlemi veritabanı performansını etkileyeceğinden dolayı kullanıcın optimum düzenlemeleri yaparak en iyi performansı sağlayabilmesi mümkündür.
Otomatik süpürmeyi devre dışı bırakarak kullanıcı kontrollü bir hale getirmek doğru bir yaklaşım olabilir. Veritabanı istatistiklerini denetleyerek manuel süpürme veya gerekli durum oluştuğunda zamanla gibi ayarlamalar yapılabilir. Örnek olarak süpürme komutunu batch dosyası haline getirip, cron ile zamanlayabilirsiniz.
Veritabanı istatistiklerini nasıl raporlayabileceğiniz ile ilgili daha fazla bilgi için ‘Getting Index Statics’ e bakabilirsiniz.
Gereksiz satırları toplama (garbage collection)
Firebird geçerli olmayan verilerin, veritabanını büyütmesini engelleyebilmek için, arka planda garbage collection (GC) işlemini yapar. GC satırların, herhangi bir aktarım sonrası geçerli olmayan versiyonları için ayrılan boşluğu temizler. Aktarımlar, başka bir aktarım tarafından ıskartaya ayrılmış bir kayda rastladıkları zaman GC yi çalıştırırlar. Silinen satırlar ve rollback sonrası boşta bırakılmış satırlar GC’ den kaçabilir. Çok az erişilen satırlarda geçersiz satırların artmasına sebep olabilir.
GC aynı zamanda, gbak ile veritabanı yedeklenirken tüm tablolardaki tüm satırlara erişildiğinde çalıştırılmış olur. Buna rağmen gbak tam bir süpürme işlemi yapmaz. Normal GC çalışmasında olduğu gibi, satırların, silinen ve rollback yapılan versiyonları bırakılır. Süpürme tüm gereksiz kayıtlardan kurtulabilmenin tek yoludur.
Sweep Interval
Veritabanında otomatik olarak süpürme işleminin tetikleneceği aktarım sayısının belirtildiği integer bir değerdir.Firebird sunucu yapılan aktarımların kaydı tutar. Herhangi bir durumda kaydedilmeyen her aktarım “interesting transaction” olarak tanımlanır. Bu interesting aktarımların en eskisi (oldest interesting transactions – OIT) “the gap” noktasını olarak adlandırılan başlangıç noktasını işaret eder.
gap‘ın en sonundaki aktarım hala canlı olan aktarımdır. (the oldest active transaction – OAT). gap OIT ve OAT arasındaki farktır. gap büyüklüğü sweep interval’da belirtilen büyüklüğe ulaştığı zaman, yeni aktarım başlangıcında otomatik süpürme işlemi gerçekleşecektir.
Veritabanları 20,000 sweep interval ile oluşturulurlar.
Burada ince bir ayrıntıya dikkat etmek gerekir, otomatik süpürme her 20,000 aktarımda gerçekleşmez. OIT ve OAT arasındaki fark eşik miktarına ulaştığında gerçekleşir. Eğer veritabanı aktarımları kontrollü bir şekilde gerçekleşiyorsa ve problem oluşmuyorsa, gap eşik seviyesine ulaşıncaya kadar otomatik süpürme işlemi yapılmaz.
Sweep Interval zamanını ayarlama
Veritabanında roll-back işlemi fazla yapılmadığı sürece sweep interval zamanını değiştirmek veritabanı büyüklüğünü fazla etkilemez. Bununla beraber son süpürme işleminden sonra aktarım zamanında artma gözlemliyorsanız sweep interval zamanını değiştirmeniz aktarım sonrası bozulmaları engellemede faydalı olabilir.
Eğer sweep interval zamanı çok düşükse veritabanını çok fazla meşgul edeceğinden dolayı performansı düşürebilir. Performansı en iyi hale getirebilmek için ayarı optimum şekilde yapmanız gerekir.
Aşağıdaki komut satırı ile sweep interval zamanını 10000’e ayarlayabilirsiniz :
gfix -h 10000 /data/account.fdb -user SYSDBA -pas masterkey
-Otomatik süpürmeyi devre dışı bırakma
Otomatik süpürmeyi devre dışı bırakmak tavsiye edilmez. Otomatik süpürme yerine alternatif bir yöntemle süpürme işlemini yapmak isterseniz, zamanı 0’a set ederek otomatik süpürmeyi devre dışı bırakabilirsiniz.
gfix -h 0 /data/account.fdb -user SYSDBA -pas masterkey
Windows ortamında:
gfix -h 0 d:\data\account.fdb -user SYSDBA -pas masterkey
Elle süpürme işlemi (Manual Sweep)
Manuel süpürme işlemi her zaman yapılabilir. Kullanıcı aktarımlarına zarar vermemek amacı ile genellikle veritabanını erişiminin düşük olduğu zamanlarda yapılır.
Şu durumlarda manuel süpürme yapmak isteyebilirsiniz
• gap durumunu analiz ediyorsunuz ve veritabanı temizleme sonrasında veritabanı performansını ölçmek istiyorsunuz.
• Çok nadir erişilen verilerin veritabanında şişme yaptığını düşünüyorsanız.
• Büyük ölçekte silme işlemi gerçekleştirdiyseniz.
Windows
gfix -sweep d:\data\account.fdb -user SYSDBA -pas masterkey
Posix
gfix -sweep /data/account.fdb -user SYSDBA -pas masterkey
Manuel süpürme işlemi için veritabanına özel bağlanma
Veritabanı süpürme işlemi her zaman yapılabilir, özel bir bağlantıya gerek yoktur, fakat süpürme esnasındaki sistemde performans düşüklüğünü olabilir.
Veritabanına özel bağlantının bir faydası da istemcilerdeki tüm aktarımların sonlandırılmış olmasıdır. Bu duruma göre sadece hafıza açmayı değil, süpürme işleminin tüm kayıtlara yapılmış olmasını sağlar. Bir sonraki aşamada gfix kullanarak veritabanını durdurma ve özel bağlanmayı göreceğiz.
2. Veritabanını kapatma
Veritabanını kapatma sunucuyu kapatma ile aynı değildir. Veritabanı kapatıldığında sunucu hala çalışır durumdadır.
Veritabanına hiçbir bağlantı aktif olmadığı durum veritabanının kapalı “shutdown state” olduğu durumdur. gbak komutunu –sh[ut] parametresi ile kullanarak veritabanı kapatılabilir. –o[nline] parametresi ile de tekrar açılabilir. Bu iki operasyon “shutting down a database” ve “putting database online” olarak adlandırılır.
-gfix kullanarak veritabanını kapatma sözdizimi aşağıdaki gibidir.
Posix
./gfix -sh[ut] {-at n | -t n | -f n} db_adı
Windows
gfix -sh[ut] {-at n | -t n | -f n} db_adı
Parametreler
- -at[tach] n yeni veritabanı bağlantısını engeller. Bağlı kullanıcıların erişimlerine dokunulmaz. Parametre ile verilen süre sonunda veritabanı kapatılır. Eğer süre sonrasında hala aktif istemci varsa kapatma iptal edilir.
- -tr[an] n yeni aktarım açılmasını engeller. Aktif aktarımlar işlemine devam eder. Parametre ile verilen süre sonunda veritabanı kapatılır. Eğer süre sonunda hala aktif aktarım varsa kapatma iptal edilir.
- -f[orce] n parametre ile verilen süre sonunda veritabanı kapatılır. Süre bitiminde aktfi aktarımlar iptal edilir ve kaydedilmeyen veriler kaybolur.
Örnek:
gfix -sh -at 300
5 dakika sonra tüm istemciler bağlantısını keserse veritabanı kapanır.
gfix -sh -f 600
10 dakika sonra veritabanı kapatılır. Aktif olan istemciler kaydetmedikleri verilerini kaybeder.
Özel erişim
Veritabanı kapalı durumdayken sadece SYSDBA veya veritabanı sahibi login olabilir.
- SYSDBA veya veritabanı sahibi bağlı durumdayken veritabanı kapatılırsa diğer kullanıcıların veritabanına erişimi engellenmez.
- Veritabanı kapalıyken SYSDBA veya veritabanı sahibinden başkası login olamaz.
SYSDBA veya veritabanı sahibi özel erişim ile bağlıyken veritabanı yönetimi, düzenlemesi ile ilgili işlemleri yapabilir.
Veritabanını açma
gfix -o[nline] komutu ile kapalı durumdaki veritabanını tekrar açarak istemcilerin bağlanmasını sağlayabilirsiniz.
Sunucu kapatma ve açma
Sunucuyu kapatıp açma işleminin veritabanı performansı ve durumu ile herhangi bir etkisinin olmadığı bilinmelidir. Eğer sunucu kapatılırken veritabanı kapalı durumda ise, sunucu açılında da veritabanı kapalı durumda olacaktır.
3. Veritabanı ayarlarını değiştirme
Veritabanı ayarlarını değiştirebilmek için birçok gfix komutu vardır. Bu işlemleri yapabilmek için SYSDBA yada veritabanı sahibi haklarına sahip olmanız gerekmektedir.
Varsayılan cache (önbellek) büyüklüğünü değiştirme
Veritabanı önbelleğini değiştirmek için gfix komutu tercih edilen bir yoldur. Cache büyüklüğünü değiştirmeden önce aşağıdaki hususlara dikkat etmek gerekmektedir.
- Eğer page size ‘ değiştirirseniz buna bağlı olarak cache büyüklüğünü de değiştirilmelisiniz. Cache büyüklüğünü değiştirdiğinizde sisteminizdeki fizikse RAM durumunu da göz önüne almalısınız. Cache büyüklüğü sistemdeki RAM miktarından fazla olursa sistem cache belleği olarak kullanmak üzere diskteki swap alanı kullanacaktır. Bunun sonucu olarak büyük cache faydadan ziyade zararlı olacaktır.
- Klasik sunucuda her istemci kendi cache belleğini kullanır. Page size’ın büyük olması durumunda varsayılan cache büyüklüğü olan 75 page bile çok fazla olacaktır.
Cache (page sized buffer ) büyüklüğü n olarak ayarlamak için kullanılacak sözdizimi aşağıdaki gibidir.
gfix -b[uffers] n db_adı
Örnek:
gfix -b 500 d:\data\accounts.fdb
Eğer page size 8192, cache bellek 5,000 sayfa ise sistemde kullanılacak RAM miktarı 40 MB civarında olacaktır.
Erişim modunu değiştirme
Veritabanına salt okunur veya yazılabilir şeklide bağlanmayı gfix –mo[de] parametresini kullanarak sağlayabilirsiniz.Salt okunur bir veritabanına SYSDBA dahil hiçbir kullanıcı yazma işlemi yapamaz.
Sözdizimi
gfix -mo[de] {read_write | read_only} db_adı
Veritabanını yazılabilir durumdan salt okunur duruma geçirmek için
./gfix -mo read_only /data/accounts.fdb
Veritabanını salt okunur durumdan yazılabilir duruma geçirmek için
./gfix -mo read_write /data/accounts.fdb
Veritabanı dialect’i değiştirme
Bu komut yardımıyla Dialect 1 veritabanını Firebird’in doğal dialect’i olan dialect 3’e çevirebilirsiniz. Veritabanı durur, daha sonra Firebird SQL’in tüm söz dizim kurallarına ve Firebird data tiplerine uyacak şekilde yeniden başlar.
Bu şekilde geçişi sağlayabilmenize rağmen mevcut kayıtları tamamen dialect 3’e geçirmeniz mümkün olmayabilir. Bu konuda uzmanları tercihi, dialect 1’e göre SQL schemasını çıkarıp dialect 3’e göre gerekli düzenlemeleri yaptıktan sonra bir datapump aracı ile kayıtları aktarmanın, daha uygun olacağı yönündedir
Sözdizimi aşağıdaki şekildedir:
gfix -s[ql_dialect] n db_adı
Dialect 1’den 3’e geçe bilmek için aşağıdaki komutu kullanabilirsiniz.
./gfix -s 3 /data/account.fdb
Windows
gfix -sql_dialect 3 d:\data\account.fdb
“Use All Space” özelliğini aktif ve pasif etme
Firebird sunucunun veritabanı sayfalarını doldurma oranı, sayfaların %80’ini geçmez. Bu oranı %100’e çıkararak tam bir sıkıştırma sağlanmış olur. Bu işlem, büyük hacimli kayıtlar girilirken , performansa iyi etki yapabilir. Özellikle satır büyüklüğünün, sayfa(page) büyüklüğünden küçük olduğu durumlarda, birden fazla satırın bir sayfada tutulmasını sağlayarak ekonomik bir çözüm oluşturulabilir.
Aynı zamanda bu işlem, salt okunur olarak dağıtmayı düşündüğünüz, katalog veya demo veritabanı için, dolu sayfalarda oluşan tam kapasiteli bir veritabanı oluşturabilmenizi sağlayabilir. Kullanımında iki parametresi vardır.
gfix -u[se] {reserve | full}
%80 kullanımdaki bir veritabanını %100 kullanıma geçirmek için
./gfix -use full /demo/catalog.fdb
tersi işlem için
./gfix -use reserve /demo/catalog.fdb
Zorunlu yazma “Forced Write” özelliğini aktif ve pasif etme
Zorunlu yazma eşzamanlı şekilde eşanlamlı yazmadır. Bu özellik aktif olduğunda (force write enabled) yeni kayıt ve silme işlemi post edildiği anda fiziksel alana yazılır. Bu özellik pasif olduğunda (force write disabled) ise kayıtlar fiziksel alana yazılmadan önce sistem önbelleğinde tutulur ve işletim sisteminin çalışma sistemine göre fiziksel alan yazılır.
Sözdizimi aşağıdaki gibidir.
gfix -w[rite] {sync | async}
Forced yazmayı aktif etmek için
gfix –w sync d:\data\accounts.fdb
Forced yazmayı pasif etmek için
gfix –w async d:\data\accounts.fdb
Windows NT/2000/XP ve Linux sunucu üzerinde çalışan Firebird sunucu forced yazmayı destekler. Güçlü bir kesintisiz güç kaynağı(UPS) ile korunan sistemlerde bu özelliği pasif tutmak performansı arttırabilir. Bu özellik kapalı olduğu durumlarda, çevre birimlerine de bağlı olarak, düzensiz veritabanı kapatmaları durumunda birtakım data kaybı kabul edilebilir demektir.
Windows 95/98/ME sunucularda forced yazma özelliğini pasif yapamazsınız.
Windows sunucular üzerinde forced yazmayı pasif etme
Diğer işletim sistemlerine göre Windows’ta önbellek yönetimine müdahale kısıtlıdır. Uygulama, özel olarak Windows sisteminden bellekteki verileri diske yazmayı talep etmediği sürece veritabanı kapatılana kadar bellekteki verileri diske yazmayabilir.
- Firebird 1.0.x : Eğer 7/24 çalışan bir Windows sunucuda forced yazma pasif edildiyse diske yazma asla gerçekleşmez.
- Firebird 1.5 : Windows üzerinde buffer’ ı yazma ile ilgili birtakım ayar parametreleri sisteme eklenmiştir. Bu parametreler “firebird.conf” dosyasındaki MaxUnflushedWrites ve MaxUnflushedWriteTime parametreleridir.
Firebird sunucu versiyonunu sorgulama
gfix komutu ile - z parametresini kullanarak yüklü olan Firebird veritabanının sürümünü öğrenebilirsiniz.
gfix - z
4. Veri Doğrulama (Validation) ve Tamir
Günlük yapılan işlemler sonrasında ortaya çıkan birtakım olaylar, veritabanı yapısında bozulmalar oluşturabilir. Problem çıkarabilecek olaylar şunlardır:
- sunucunun normal olmayan bir şekilde kapatılması. Bu tür kapanmalar veritabanı bütünlüğünde problem oluşturmaz. Bununla beraber istemciler tarafından kaydedilmemiş aktarımlar sahipsiz “orphan” kalabilir. Bu sahipsiz aktarımlar 8
temizlenirse, gereksiz olarak işgal edilmiş olan alan boşaltılabilir. Veritabanı doğrulama bu tür kayıtları bulabilir.
- İşletim sistemi veya donanım tarafından yapılan yazma hataları. Yazım hataları genellikle veritabanı bütünlüğünü bozar. Veri sayfalarını ve indeksleri yok edebilir veya bozabilir. En kötüsü bu kopukluklar kayıtlı verileri geri döndürülemez hale getirebilir. Bazen veritabanı doğrulama, bozuk parçaları bulup temizlemede yardımcı olabilir.
Veritabanı ne zaman doğrulanmalıdır.
Bir veritabanını
- Yedekleme işlemi başarılı olamadığı zaman
- Uygulamadan kopuk veritabanı “currupt database” hatası geldiği zaman
- Veri kopması gerçekleştiği herhangi bir zaman
Doğrulamalısınız.
Veritabanı doğrulama ve tamir uygulamaları için gbak ve gfix komutlarını beraber kullanabilirsiniz.
Veritabanı doğrulama işlemi
Veritabanı doğrulama için özel bağlantı ile bağlanmak zorundasınız aksi takdirde hata aşağıdaki hata mesajını alırsınız.
OBJECT database_name IS IN USE
Basit bir şekilde uygulayabilirsiniz
gfix -v
Doğrulama işlemi sessiz bir şekilde gerçekleşecek, bulunan sahipsiz kayıtlar ve yapılar düzeltilecektir. Yapılan işlemler sırasında hiçbir bilgi verilmeyecektir. Eğer yapılan düzeltmelerin raporlanmasını istiyorsanız, aşağıdaki parametre ile kullanınız.
gfix - v –n
Karşılaşılan checksum (sağlama toplamı) hatalarını göz ardı edilmesi için - i parametresi ile kullanınız.
gfix - v - i
Kopuk veritabanını tamir işlemi
Eğer veritabanı kopması ile karşı karşıya geldiyseniz, tamir işlemlerini işlemini doğru sıra ile yapmalısınız aksi takdirde, yeni kopmalara sebep olabilirsiniz.
Tamir esnasında kullanılan gfix parametrelerini Tablo-1’de bulabilirsiniz.
5. Aktarım Kurtarma
gfix çoklu veritabanı (multi-database) aktarımlarının kopması sonucu oluşan belirsiz aktarımları kurtarmak için araçlara sahiptir.
İki fazlı (two-phase) aktarım kaydı
Birden fazla Firebird veritabanına bağlı olan bir aktarımın iki kere veya iki fazda kaydedilmesi. Bu iki fazlı aktarım, eğer aktarım tamamlanamazsa bağlı bulunduğu tüm veritabanlarında ki kayıtları sahipsiz bir şekilde bırakır. Veritabanlarının hiçbirini güncellemez.
İki fazlı aktarım bağlı bulunduğu veritabanlarında alt aktarımlar oluşturur ve her birini ayrı ayrı kaydeder.
Belirsiz (Limbo) aktarımlar
Belirsiz aktarımlar, bir veya birden fazla veritabanlarına aktarımlar esnasında oluşan travmatik bir durum karşısında, örneğin ağ hatası veya sistem kapanması, oluşan hatalı aktarımlardır. Sunucu hatanın oluştuğu durumda açık olan aktarımların, kaydedileceği yada geri alınacağı bilgisini gönderemez.
Çok sık olmamasına rağmen, bazen bu aktarımlar temizlenmeden veritabanına bağlanmak mümkün olamayabilir.
Aktarım kurtarma
gfix komutunun birçok özelliği ile belirsiz veya iki fazlı aktarımları bulabilirsiniz. Bulunan bu aktarımları kaydetme veya iptal etme işlemine aktarım kurtarma (transaction recovery) denir.
Tüm belirsiz aktarımları tek seferde kurtarabileceğiniz gibi id numarasını vererek tek tekte kurtarabilirsiniz.
Belirsiz aktarımları bulma
Belirsiz veya iki fazlı aktarımları listesini çıkarabilmek için gfix komutunu – l[ist] parametresini kullanabilirsiniz.
gfix - l db_adı
Bulunan aktarımları kurtarma
Listeleme işlemi ile beraber –p[rompt] parametresini kullanırsanız bulunan aktarımları kayıt yada iptal edileceğini teker teker belirterek kurtarma işlemini de yapabilirsiniz.
gfix - l - p db_adı
Otomatik iki faz kurtarma
İki fazlı aktarımların kaydedilmesinde yada iptal edilmesinde problem oluşması sırasında, sunucu bu aktarımlara ne yapılacağını bilir. gfix i otomatik şekilde düzeltmeye ayarlama 10
bozulmalardan korunmak için pratik bir yoldur. – t[wo] [ID | all] parametrelerini kullanarak otomatik kurtarma yapabilirsiniz.
gfix - t all db_adı
gfix - t nnnnn db_adı
Kayıt yada iptal edileceğini belirterek kurtarma
Aktarımlar düzeltilirken tek tek kayıt yada iptal edileceğini belirtmektense hepsini kayıt yada iptal edebilirsiniz. – c[ommit] - r[ollback]
gfix - c all db_adı
gfix - c nnn db_adı
gfix - r all db_adı
gfix - r nnnnn db_adı
6. Gölge (Shadow)
Gölge veritabanlarının oluşturulması, içeriği ve bakımı ile ilgili olarak önceki bölümlerden faydalanabilirsiniz. Gölge veritabanları işlemler yapabilmek için birtakım özelliklere sahiptir.
Gölge veritabanını aktif etme
Pasif hale gelmiş bir gölge veritabanını aktif etmek için gfix komutunu – ac[tivate] parametresi ile kullanınız.
gfix - ac <ilk shadow veritabanının adresi>
Örnek olarak, /opt/dbshadows adresinde employee.sh1 veritabanı olduğunu düşünelim
./gfix - ac /opt/dbshadows/employee.sh1
Ulaşılamayan bir gölge veritabanını yok etme
Ulaşılamayan bir veritabanını yok etmek için – k[iil] parametresini kullanabilirsiniz.
./gfix - k /opt/dbshadows/employee.sh1
7. gfix Komutlarının Parametreleri ve Özeti
Aşağıdaki tabloda gfix komutunun tüm parametrelerini bulabilirsiniz. Yanlış kullanmamak için açıklamaları mutlaka okuyunuz.
Tablo -1 gfix parametrelerinin özeti
Parametre
Görevi
Açıklama
-ac[tivate] shadow file
Gölgeleme
İlk shadow dosyası ile birlikte kullanılır
-at[tach]
Shutdown
n parametresi ile birlikte kullanılır. n süresi boyunca yeni bağlantıya izin verilmez, n süresi sonunda aktif bağlantı varsa kapatma iptal edilir
-b[uffers] n
Cache buffer
Veritabanının varsayılan cache buffer değerini n değerine set eder
-ca[che] n
Kullanılmıyor
-c[ommit] {ID | all}
Aktarım kurtarma
Verilen ID numaralı yada tüm belirsiz aktarımları kaydeder.
-f[orce] n
Shutdown
n süresi sonunda veritabanı kapatılır
-full
Veri tamiri
-v[alidate] parametresi ile kullanılır. Bozuk sayfa yapılarını düzeltir.
-h[ousekeeping]
Süpürme
Otomatik süpürme eşik değerini n değerine set eder. Varsayılan 20,000 dir. İptal etmek için 0 a set edilir.
-i[gnore]
Veri tamiri
Süpürme veya tamir işlemi esnasında checksum hatalarını göz ardı eder.
-k[ill] db_name
Gölgeleme
Kullanılmayan gölge veritabanını siler
-l
- Aktarım kurtarma
Belirsiz aktarımları listeler
-m[end]
Veri tamiri
Kopuk verileri kullanılamaz olarak işaretler. Böylece tamir veya yedek işleminde bu veriler pas geçilir
-n[o_update]
Veri tamiri
-v[alidate] parametresi ile kullanılır. Kopmuş yada doğru yerleştirilmemiş yapıları raporlar fakat düzeltmez.
-o[nline]
Shutdown
Ayarlanmış bir kapatma işlemini iptal eder.
Pass[word]
Uzaktan erişim
Şifre değerini gönderir.
-p[rompt]
Aktarım kurtarma
Aktarımların kayıt yada iptal edileceğinin sorulmasını sağlar.
-r[oll_back] {ID | all}
Aktarım Kurtarma
Verilen ID numaralı yada tüm aktarımların iptal edilmesinisağlar.
-s[weep]
Süpürme
Veritabanında acil süpürme işlemini gerçekleştirir.
-sh[ut]
Shutdown
Veritabanını kapatır. –at[tach], -f[orce] veya –tr[an] parametrelerinin biri ile birlikte kullanılmalıdır.
-sql[_dialect]
Taşıma
n=3 sql dialecti 1 den 3 e çevirir.
-t[wo_phase] {ID | all}
Aktarım kurtarma
Otomatik iki faz kurtarmayı gerçekleştirir.
-tr[an] n
Shutdown
n parametresi ile birlikte kullanılır. n süresi boyunca yeni aktarıma izin verilmez, n süresi sonunda aktif bağlantı varsa kapatma iptal edilir
-use {reserve | full}
Tüm boşlukları kullan
Veritabanındaki tüm boşlukların tamamını kullanmayı aktif yada pasif eder.
-user username
Uzaktan erişim
Username gönderir.
-v[alidate]
Veri doğrulama
Sayfalar arasında yer alan fakat hiçbir yapı ile bağlantısı olamayan verileri yerleştirir. Aynı zamanda kopuk yapıları da bulur.
-w[rite] {sync |async}
Zorunlu yazma
Zorunlu yazmayı aktif, pasif eder.
-z
Bilgi
Firebird sunucu ve gfix komutu versiyonlarını verir.
Tablo-2 gfix hata mesajları
Hata Mesajı
Açıklama
Database file name <string> already given
Veritabanı dosya hatası yüzünden işlem sonlandırıldı. Sözdizimini kontrol ediniz.
Invalid Switch
Parametre hatalı
Incompatible Switch Combinations
Kullanılan parametreler uyumsuz.
More Limbo Transactions Than Fit Try Again
gfix’in bir oturumda yazamayacağı kadar fazla belirsiz aktarım var. Belirsiz aktarımların bir kısmını kaydedin veya iptal edin.
Please Retry <string>
Bir dosya adı ve parametre belirtilmelidir.
Transaction Number or All Required
-commit, -rollback veya –two_phase komutlarından birini eksik parametre ile kullandınız.
-mode read_only or read_write
-mode komutu read_only ve read_write parametrelerinin her ikisi ile birlikte kullanılmamalıdır.
“read_only” or “read_write” required
-mode komutu read_only yada read_write parametrelerinin biriyle kullanılmalıdır.