Naprawa uszkodzonej bazy danych Firebird 2.5

Naprawa uszkodzonej bazy danych Firebird 2.5
L1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć,
obsługuję pewną placówkę, która korzysta z programu, który stoi na Firebird 2.5.
Mam program z poprawnością wykonanej kopii (gbak) oraz naprawą bazy danych przy pomocy gfix (próbowałem już różnych opcji -mend, ściągania indeksów, wyzwalaczy, kluczy itd.). Plik bazy (.fdb) da się kopiować i przenosić w inne miejsce, jednakże nie da się odtworzyć kopii z archiwum wykonanego przy pomocy gbak.
Próbowałem również przenosić tabele do nowej bazy danych, ale przy kopiowaniu wywala się na indeksach.

Znalazłem narzędzie takie jak IBSurgeon FirstAID, jednakże jest ono dość drogie jak na naprawę pojedynczej bazy danych.

Macie może jakieś pomysły co jeszcze mogę wykonać? Może ktoś z Was korzysta z tego narzędzia lub jest w stanie za jakąś opłatą pomóc naprawić tą bazę danych ?

Z góry dzięki za rady! :)

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1801
3

dawno to było jak takie rzeczy robiłam ,ale widzę że wersja bazy nie najnowsza
używałam narzędzi różnych, chyba IBExpert głównie
poradników ze strony https://www.firebirdsql.org/en/reference-manuals/
i tak jak już napisałam kasowałam indexy i dodawałam je z powrotem i patrzyłam co się wywali przy dodawaniu indeksu, potem ręcznie się poprawiało kilka sprawiających problemy rekordów
jeszcze próba eksportu całej tabeli do sql i też na jakimś rekordzie wyskoczył błąd to się eksportowało rekordy z id < tego rekordu i z id > od tego rekordu i potem to łączyło

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
2

Ja jeszcze dodam, że w nowszych wersjach IBExpert'a jest narzędzie https://www.ibexpert.net/ibe/index.php?n=Doc.DatabaseInside pozwalające na przejrzenie bazy bez pośrednictwa serwera i eksport całej bazy bądź wybranych tabel do skryptu. Obecnie narzędzie obsługuje wersje 1.5-2.5 i jest dostępne tylko w pełnej wersji. O ile dobrze kojarzę wersja Personal jest pozbawiona tego narzędzia.

L1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Dzięki za wsparcie. Powiedźcie mi jednak, jak potem z powrotem mogę przywrócić wyeksportowane wcześniej dane skryptem SQL ? Również z wykorzystaniem IBExpert czy w inny sposób? Nigdy tego nie wykonywałem :)

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
1
lukasz18101988 napisał(a):

Dzięki za wsparcie. Powiedźcie mi jednak, jak potem z powrotem mogę przywrócić wyeksportowane wcześniej dane skryptem SQL ? Również z wykorzystaniem IBExpert czy w inny sposób? Nigdy tego nie wykonywałem :)

W zasadzie możesz wtedy wykonać dowolny program do zarządzania bazą danych. Nawet dostarczanego razem z serwerem isql. Tworzysz nową, pustą bazę, a następnie wykonujesz w niej skrypt. Używasz narzędzia Script Executive uruchamianego poprzez kombinację klawiszy Ctrl + F12 https://www.ibexpert.net/ibe/index.php?n=Doc.ScriptExecutive

Tylko musisz uważać, bo tak stworzony skrypt jak pisała @Miang albo ja mogą być błędne i pozostaje wtedy ręczna naprawa kolejnych insertów.

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
2

Nie wiem jaki jest oficjalny sposób na to ale kiedyś miałem podobny problem z kopiowaniem danych między bazami, tabele były wzajemnie połączone i nie dało się przez klucze obce ich uzupełnić bo trzeba by było to robić w bardzo konkretnej kolejności. Rozwiązaniem było po prostu wyłączenie indeksów, uzupełnienie danych i ich ponowne włączenie oraz odbudowanie..
W firebird widzę że można wyłączyć indeksy przez ALTER INDEX <index> INACTIVE. Jak wszystko inne zawiedzie to może to pomoże

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.