NAPRAWA USZKODZONEJ BAZY INTERBASE/FIREBIRD W przypadku, gdy podczas pracy programu KS-APTEKA Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds consistency check) oznacza to, że została uszkodzona fizyczna struktura samego pliku z bazą danych (wapteka.fdb lub wapteka.gdb). Rys. 1. Okno z błędem Tego typu uszkodzenia bazy danych powstają z powodu: Awarii dysku lub zasilania Niestabilności zasilania (w pobliżu znajduje się zakład przemysłowy, brak UPS lub filtra) Złej jakości pamięci RAM Wadliwie działającej sieci komputerowej Resetowania komputera (za pomocą przycisku na obudowie) Innych powodów. Jeżeli w aptece zrobiono archiwum i nie ma zbyt dużo operacji po archiwizacji (w aptece zrobiono archiwum wieczorem, a błędy pojawiły się wcześnie rano), to dobrym rozwiązaniem będzie odtworzenie bazy z archiwum i ręczne wprowadzenie wszystkich brakujących operacji. Uwaga! Baza zarchiwizowana może być uszkodzona podczas robienia archiwum serwer bazy danych może nie zauważyć drobnych błędów w bazie, które jednak skutecznie przeszkodzą w poprawnym odtworzeniu bazy danych. W przypadku, gdy nie ma archiwum (lub archiwum jest uszkodzone) można spróbować naprawić bazę jedną z poniższych metod. 1. Backup/restore Uszkodzoną bazę należy zarchiwizować, wykorzystując do tego moduł APW43-Archiwer lub program dołączany do serwera bazy danych gbak (dla bazy Firebird domyślnie znajduje się w katalogu C:\Program Files\Firebird\Firebird_2_5\bin). Po wykonaniu tej czynności należy zmienić nazwę bazy roboczej (baza znajduje się na serwerze, domyślnie w katalogu C:\KSBAZA\KS-APW\SERWIS) lub systemowego programu gbak. Jeżeli baza odtworzy się bez żadnych błędów, to można założyć, że jest naprawiona. W innym przypadku należy skorzystać z kolejnych metod. 2. GFIX Kolejną metodą naprawy uszkodzonej bazy jest zastosowanie programu gfix.exe (C:\Program Files\Firebird\Firebird_2_5\bin). Sposób postępowania jest następujący: a. Uruchomić wiersz poleceń systemu Windows b. Wejść do katalogu z programem gfix.exe Strona 1 z 7
c. Wydać polecenie: gfix C:\KSBAZA\KS-APW\wapteka.fdb mend user sysdba pass masterkey gdzie: parametry napisane pogrubioną czcionką należy wpisać zgodnie ze stanem faktycznym (właściwa ścieżka do bazy, użytkownik i hasło) Po zakończeniu tej metody należy wykonać metodę nr 1 Backup/Restore, a w przypadku niepowodzenia przejść do kolejnych metod. 3. IBOConsole Przy pierwszym uruchomieniu programu IBOConsole okno aplikacji wygląda jak na rys. 2. Rys. 2. Okno programu IBOConsole przy pierwszym uruchomieniu Należy wtedy w pierwszej kolejności zarejestrować serwer bazy danych oraz samą bazę. Aby zarejestrować serwer Firebird lub Interbase należy z menu Server wybrać funkcję Register. Pojawi się okno, w którym należy wybrać Local server oraz w sekcji Login information wpisać odpowiednio: w polu User name nazwę użytkownika: SYSDBA w polu Password hasło: masterkey Strona 2 z 7
Rys. 3. Rejestrowanie serwera bazy danych Po zatwierdzeniu okna na liście powinien się pojawić lokalny serwer. Kolejną czynnością do wykonania jest zarejestrowanie samej bazy danych. W tym celu z menu Database wybieramy Register i wpisujemy dane jak na rysunku 4. Rys. 4. Rejestrowanie pliku z bazą danych Po zatwierdzeniu przyciskiem OK okno programu powinno wyglądać jak na rysunku poniżej. Strona 3 z 7
Rys. 5. Okno programu po zarejestrowaniu bazy danych Do naprawy bazy danych używa się funkcji walidacji (ang. validation). Aby użyć tej funkcji program musi być odłączony od bazy, inaczej funkcja w menu Database Maintenance Validation będzie niedostępna. Aby odłączyć program od bazy należy wywołać funkcję Disconnect z menu Database. Po odłączeniu wywołujemy funkcję z menu Database Maintenance Validation. Rys. 6. Opcje walidacji Program wyświetli okno z opcjami walidacji. Przy pierwszej próbie należy przestawić pierwszą oraz trzecią opcję na wartość True jak pokazano na rysunku 6. Po zatwierdzeniu program rozpocznie sprawdzanie bazy danych. Może to potrwać od kilku do kilkunastu minut, podczas których program wygląda jakby był zawieszony jest to normalny objaw. Strona 4 z 7
Rys. 7. Raport ze sprawdzania bazy danych Po sprawdzeniu bazy danych wyświetlony zostanie raport o znalezionych nieprawidłowościach w bazie. W oknie, które się pojawi (rysunek 7) należy ponownie wybrać opcje walidacji, czyli w naszym przypadku przestawić obydwie opcje z wartości False na True i nacisnąć przycisk Repair. Program rozpocznie naprawę bazy, która może trwać podobnie jak sprawdzanie bazy danych od kilku do kilkunastu minut. Rys. 8. Zakończenie procesu walidacji Po zakończeniu naprawy bazy danych należy zrobić archiwum bazy i następnie odtworzyć ją, aby sprawdzić czy baza została naprawiona. 4. IBPack IBPack jest programem do robienia rocznego archiwum bazy danych, możliwe jest jednak wykorzystanie go w celu naprawy uszkodzonej bazy danych. W wyniku uruchomienia programu tworzona jest nowa baza zawierająca przeniesione dane ze starej bazy. Pozycje bazy sprzedaży oraz zakupów są przenoszone tylko od określonej daty. Wpisując jako datę graniczną odpowiednio wczesną datę, np. 1950.01.01 (rysunek 9), do nowej bazy zostaną przekopiowane wszystkie zakupy oraz sprzedaże. Strona 5 z 7
Rys. 9. Okno programu IBPack.exe W pliku IBPack.ini znajdują się opcje programu. W sekcji [Nie kopiuj] znajdują się tabele, które mają być pominięte przez program. Jeśli wiadomo, która tabela jest uszkodzona, a jest to tabela mało ważna, to można tam ją umieścić i program jej nie przekopiuje. Po pomyślnym zakończeniu działania programu IBPack.exe należy upewnić się, że problem został rozwiązany wykonując metodę nr 1 Backup/Restore, a w przypadku niepowodzenia przejść do kolejnych metod. 5. DBCopy Metoda ta polega na przeniesieniu wszystkich tabel do nowej bazy. Aby przenieść dane należy: 1) Zmienić nazwę pliku wapteka.fdb na inną, np. wap_old.fdb 2) W miejsce pliku wapteka.fdb wgrać nową bazę (za pomocą programu IBRest), znajdującą się w pliku ibempty.zip 3) Obie bazy muszą być w tej samej wersji (aktualizacja programem ApwPlus) 4) Uruchomić program DBCopy 5) W grupie Dane źródłowe należy podać namiary do bazy wap_old.fdb, w grupie Dane docelowe namiary do bazy wapteka.fdb Strona 6 z 7
6) Nacisnąć Połącz. W tym czasie program sprawdzi obydwie bazy i pojawi się lista z zaznaczonymi tabelami do skopiowania. 7) Nacisnąć Kopiuj tabele. Nastąpi kopiowanie danych do bazy docelowej. Może to potrwać ok. 0.5 2 godzin. 8) Po zakończeniu kopiowania należy z modułu APW42-Serwis uruchomić funkcję Narzędzia Ustawianie sekwencji. W przypadku błędów podczas działania programu należy operację powtórzyć, przy czym należy odznaczyć na liście tabelę powodującą błąd. Jeżeli wśród zaznaczonych tabel są tylko mało istotne tabele (np. słownikowe), to można uznać operację za zakończoną sukcesem. Po zakończeniu należy wykonać metodę nr 1 Backup/Restore. Strona 7 z 7