Проблемы с бэкапом и с последующим восстановлением

Ремонт и восстановление баз данных InterBase, Firebird, Yaffil

Модераторы: kdv, Alexey Kovyazin

Ответить
MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Проблемы с бэкапом и с последующим восстановлением

Сообщение MrNumbers » 13 май 2008, 12:00

Имеется база, которая стояла на Interbase (не знаю, какой версии). Перестал делаться бэкап. Размер - 8 Гб с хвостиком, разделена на 3 файла. Скопировал себе базу на локальный комп, поставил Firebird 1.5, попытался сделать бэкап: где-то на середине gbak вылетает с ошибкой wrong page type (expected 5, found 0). Сделал проверку базы gfix'ом:
Number of record level errors : 5
Number of data page errors : 1
Number of index page errors : 14
Number of database page errors : 24

Запустил команду лечения (gfix -m). После этого база успешно забэкапилась, но восстановить (gbak -c) из неё данные до конца не получается: где-то на 6,8 Гб вылетает ошибка:
gbak: ERROR: invalid request BLR at offset 203
gbak: ERROR: column RET_ID is not defined in table ANALOG_D
gbak: Exiting before completion due to errors

Пробовал бэкапить и gbak -b -v, и gbak -b -v -ig, и gbak -b -v -ig -g.
При восстановлении результат неизменный.
Что ещё можно попробовать?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 13 май 2008, 16:17

Поставить IB той версии, с какой базу стырил. Да ещё и стырил с подключенными ползателями.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 13 май 2008, 19:27

интересно почему оракл не поставил или МССКЛ . а так просто файрберд =) кто его вообще к базе подпустил ? =)

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 14 май 2008, 08:52

Проверил оригинал базы с помощью IBFirstAID Diagnostician 2.0.
Единственное место, где есть ошибка, это:

13.05.2008 19:54:36 ERROR: Expected data page at#4179801 but found pageType: Database header page
13.05.2008 19:54:36 ERROR: Error on data page #4179801
13.05.2008 19:54:36 INFO: Pointer page #4155616 checking: found 1 errors.
13.05.2008 20:09:16 ERROR: Error in checking relation #134 Found 1 errors.
13.05.2008 20:09:16 ERROR: Relation ERRORBAG (134) is CORRUPT

Т.е. всего 3 ошибки, хотя gfix нашёл гораздо больше.
Поможет ли мне починить базу покупка IBFirstAID?

P.S. Базу тырил не я - начальник мне её скинул на файловый сервер и сказал, чтобы я попытался её починить.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 май 2008, 10:01

Поможет ли мне починить базу покупка IBFirstAID?
не знаю. база многофайловая, причина повреждений неизвестна, и т.д.

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 14 май 2008, 15:58

Доп. информация:
сервер - InterBase 5.6.
База копировалась с остановкой сервиса.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 май 2008, 18:30

Ну так поставь триал IB5.6 и ресторь.

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 16 май 2008, 09:57

Долго гуглил, так и не нашёл триал IB 5.6. Нашёл одну версию, которая требует Certificate ID и Certificate Key. Подскажите, где такой раритет можно достать? :roll:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 май 2008, 10:20

чтобы получить триал, вместо certificate id надо ввести слово eval.

да, IB 5.6 уже не продается, но тем не менее бесплатно его использовать не разрешается.

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 16 май 2008, 11:10

Спасибо за подсказку :wink: Использовать не собираюсь, нужно только базу починить. О результатах отпишу :)
gbak: ERROR: column RET_ID is not defined in table ANALOG_D
Самое смешное, что ANALOG_D - это процедура, а RET_ID - её переменная. И я не понимаю, почему Firebird их воспринимает как таблицу и её колонку :?

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 19 май 2008, 08:41

М-да, с InterBase'ом оказалось ещё хуже - он вылетел при restore уже на 4 Гб, но с другой ошибкой:

gbak: ERROR: database file appears corrupt ()
gbak: ERROR: wrong page type
gbak: ERROR: page 4 is of wrong type (expected 6, found 5)
gbak: ERROR: gds_$send failed
gbak: Exiting before completion due to errors
gbak: ERROR: database file appears corrupt ()
gbak: ERROR: wrong page type
gbak: ERROR: page 229 is of wrong type (expected 3, found 5)
gbak: ERROR: database file appears corrupt ()
gbak: ERROR: wrong page type
gbak: ERROR: page 229 is of wrong type (expected 3, found 5)

Хотя gfix -m я к этой базе уже применил.
Хорошо хоть IB не посчитал процедуру за таблицу.
Даже не знаю, что можно ещё сделать... :(

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 май 2008, 10:26

Даже не знаю, что можно ещё сделать..
http://www.ibase.ru/dbrepair.htm

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 21 май 2008, 08:45

Починил я свою базу! \:D/
А использовал я для этого 2 программы:
одна - Open Source программка IBDBRepair, которая копирует из базы всё, что можно скопировать, в новую базу. А вторая - всем известный IBExpert, который нашёл мне различия между базами и скопировал недостающее (в частности, процедуры). После этого и backup и restore прошли на ура. База даже похудела на 1 Гб! А данные потерялись всего в одной таблице, куда скидывался архив ошибок системы.
Вот так, Open Source - это круто! =D>

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 21 май 2008, 09:44

IBExpert не опен сурс =)
но им можно было сделать тоже самое что ты делал двумя програмами.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 21 май 2008, 10:23

MrNumbers писал(а):дна - Open Source программка IBDBRepair, которая копирует из базы всё, что можно скопировать, в новую базу. А вторая - всем известный IBExpert, который нашёл мне различия между базами и скопировал недостающее (в частности, процедуры).
Из этого абзаца понимаю, что IBDBRepair - полное Г, если IBExpert "видит" больше него.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 май 2008, 12:31

IBDBRepair - полное Г,
глянул в исходники. оно использует IBDatabase, IBQuery, IBSQL. Т.е. никакой физической работы с файлом БД. Следовательно, утилита практически бесполезная в смысле "ремонта" БД.
Также, там много "копирований" инфы из системных таблиц. В общем, более-менее серьезное повреждение эта утилита не починит, потому что она вообще не чинит - она просто пытается прочитать и скопировать данные, причем прочитать самым обычным способом через select.
А скопировать данные с тем же успехом можно и IBPump-ом.

p.s. с какого бодуна там заявляется, что оно может читать данные даже при consistency check - не знаю.

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 22 май 2008, 10:19

Всё же одна проблемка осталась: не хочет восстанавливаться часть процедур. Ошибка следующая:
Invalid token. invalid request BLR at offset 852. function IB_UDF_SUBSTR is not defined. module name or entrypoint could not be found.
Так же повторяется и с функциями XOR_INT и BIN_AND.
Короче, не восстанавливаются процедуры, которые используют вышеназванные функции.
Вроде бы это стандартные функции, включённые в ib_udf.dll, который идёт вместе с InterBase'ом. Или тут что-то другое?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 май 2008, 12:12

Вроде бы это стандартные функции
а может и нет. в rdb$functions смотрел?

MrNumbers
Сообщения: 9
Зарегистрирован: 13 май 2008, 11:46

Сообщение MrNumbers » 22 май 2008, 12:23

Да, они там есть.

Вопрос решился копированием файла ib_udf.dll с того сервера, с которого снята база. Причём в директории lib он остался тот же (версии 5.6), а в директорию bin нужно было положить файл версии 5.1. Не знаю, почему, но это решило проблему. Вроде и размер у них одинаковый, не понимаю...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 май 2008, 13:30

в lib??? там никакие udf не живут. т.е. туда можно положить что угодно, даже doc или avi.
вот почему от 5.1 - это уже интересно. Хотя, впрочем, нет. Сервер старый, неинтересно.

Ответить