Можно ли восстановить данные из мусора

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

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

Ответить
KSV
Сообщения: 5
Зарегистрирован: 07 дек 2005, 16:55

Можно ли восстановить данные из мусора

Сообщение KSV » 07 дек 2005, 17:08

Всем здравствуйте!

Впервые на этом форуме, поэтому прошу прощения если эта тема ранее обсуждалась. Поиск по гуглу ничего не дал.

Итак, есть база, небольшая (13 mb), из которой одним махом было удалено много записей. Как это случилось? Стояло каскадное удаление записей. В итоге удаление записи в одной таблице привело к удалению множества записей, от нее зависящих. Программист не вставил никакого предупреждения для пользователя.

Теперь вопрос: можно ли как нибудь извлечь данные из мусора? Сборка мусора не была включена для этой базы (я даже нашел текст от некоторых записей в бинарном коде).

Бэкап делался, но, увы, администратор не знал как его делать правильно и просто копировал gdb файл в другое место, не закрывая базу. В итоге gfix -v пишет file ZAVRN.GDB is not a valid databas
e.

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

Сообщение kdv » 07 дек 2005, 17:11

Если после этого удаления с базой работали, то шансов восстановить удаленные данные нет.

KSV
Сообщения: 5
Зарегистрирован: 07 дек 2005, 16:55

Сообщение KSV » 07 дек 2005, 17:30

Вроде не работали в плане изменения данных, но выборки делали точно.

eugeney
Сообщения: 79
Зарегистрирован: 29 окт 2004, 18:51

Сообщение eugeney » 09 дек 2005, 10:20

KSV писал(а):Вроде не работали в плане изменения данных, но выборки делали точно.
Один из вариантов сборки мусора как раз работает в момент select. Так что возможности восановить приближаетя к null.

KSV
Сообщения: 5
Зарегистрирован: 07 дек 2005, 16:55

Сообщение KSV » 09 дек 2005, 13:03

Вы наверное незаметили. Я написал, что сборка мусора в этой базе была отключена изначально.
Вот что пишет IBAnalyst:
Автоматическая сборка мусора выключена, (sweep interval = 0),
однако расстояние между Oldest Snapshot и Oldest transactions (12912)
больше чем среднее число транзакций в день (59)..
Возможно какие-либо приложения сделали rollback большого количества
изменений примерно 220 дней назад.Мы рекомендуем запускать явную
сборку мусора (sweep) или запускать sweep (gfix -sweep) регулярно при
помощи Task Scheduler, когда нет пользователей, подсоединенных к БД.
Так что данные там должны быть. Вопрос в том, как их оттуда изъять.

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 09 дек 2005, 13:05

чтоб собрать мусор свип необязателен, достаточно разок пройтись по таблице натуралом...

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 10 дек 2005, 11:36

KSV писал(а):сборка мусора в этой базе была отключена изначально
каким образом?

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

Сообщение kdv » 10 дек 2005, 11:59

это "автоматическая" сборка мусора выключена. Если интересует - почитай про сборку мусора вообще -
www.ibase.ru/devinfo/garbage.htm

Alexey Kovyazin
Сообщения: 15
Зарегистрирован: 25 окт 2004, 19:13

Сообщение Alexey Kovyazin » 12 дек 2005, 12:54

привет!

Если не сделали копию базы в момент, когда было произведено удаление, а еще потом читали что-то в этой таблице, то следов старых версий не удастся найти даже на низком уровне.

Проще посмотреть на бэкап - возможно, там что-то можно сделать и поднять данные хотя бы той утерянной таблицы.

С уважением,
Алексей Ковязин

Ответить