gifts2017

Как я восстанавливал базу 1CD

Опубликовал Дмитрий Воробьев (vde69) в раздел Администрирование - Тестирование и исправление

Как я восстанавливал файловую базу восьмерки. Попала база после того, как в процессе обновлении релиза на диске кончилось место. Даю свой путь самурая :)

То что мне сообщил клиент:

Исходный релиз платформы 8.2.13.219. Текущий релиз платформы 8.2.16.352. Обновил без проблем и реструктуризация прошла успешно. Исходный релиз конфигурации БП 2.0.32.1. Обновлял на релиз 2.0.41.3. В самый ответственный момент вдруг закончилось место на диске.

chdbfl.exe говорит:

Поврежден заголовок файла базы данных Повреждено содержимое внутреннего файлаБаза полностью разрушена восстановление невозможно.

 Tool_1CD.exe тоже не помогает...

Для начала я использовал проект http://code.google.com/p/restoration-base-1c8/ 

Я использовал конфигурацию 0.2.2. (на момент публикации версия не выложена по причине мелких доработок о которых раскажу ниже, выложеная версия 0.1.7 для реального востановления не подходит, слишком много там ошибок, она носит скорее ознакомительный характер)

Для начала переименовал файл и загрузил его, загрузка шла 2 часа (размер файла примерно 1.8 гиг, загрузка идет долго в том числе и по тому что не используется корневой обьект). В процессе загрузки меня обматерило

1. с десяток сообщений типа "Ошибка потока описания таблицы "_REFERENCE54", Блок 00 00 0F 6C E0 00" на самом деле это ошибка конфигурации востановления, но я быстро понял в чем дело, просто таблицы где описание занимает более одного блока загрузились только по одному, вручную догрузил (поиск по индексу и кнопка "Загрузить данные блока"), ну и после этго на указаной таблице "Загрузить структуру ветки". (Это одна из ошибок которая не дает выложить версию 0.2.2)

2. Более серьезной проблеммой стало сообщение типа "В описании таблицы корневого блока 00 00 67 97 A0 00 есть недопустимые символы".

найдя блок жму "Редактировать таблицу", получаю рис "п-1", видно, что описание таблицы цело просто после него идет "хвост" мусора, захожу в блок и забиваю нулями этот мусор. (вторая требуемая доработка - нужна процедура забития нулями облости, я просто замучился по одному фигачить).

После того как ошибка пропала, жму "Загрузить структуру ветки".

К сожалению одна таблица не подлежала востановлению, но поразмыслив я понял что это таблица из новой конфигурации и она просто пустая, по этому я решил на нее забить.

На этом этапе вроде все выглядет красиво, но все равно не работает.

Тогда лезу в корневой обьект "редактировать таблицу" и вижу что длинна явно кривая (на картинке уже исправленый вариант), ну лезу в описание корневого и исправляю длинну.

после этого Tool_1CD.exe выдает только 1 ошибку, а chdbfl.exe две и говорит, что может помоч.

Запускаю chdbfl.exe на исправление и база завелась в режиме предприятия, и вроде все данные целы.

идем далее (последний рисунок)

Учитывая что часть блоков неверно распределено (на картинке серые) и корневой обьект содержит ссылки на FREE блоки, запускать на базе какие-либо махинации в конфигурации не стоит, стоит через выгрузку XML все перенести в новую чистую базу и уже с ней работать.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Макас (makas) 31.10.12 09:38
Даю свой путь самурая :)


То что мне сообщил клиент:

Исходный релиз платформы 8.2.13.219. Текущий релиз платформы 8.2.16.352. Обновил без проблем и реструктуризация прошла успешно. Исходный релиз конфигурации БП 2.0.32.1. Обновлял на релиз 2.0.41.3. В самый ответственный момент вдруг закончилось место на диске.



А почистить компьютер от мусора и заново провести апгрейд из дубликата ни самур-аЙ ни кли-ент не догадались? :)
2. Дмитрий Воробьев (vde69) 31.10.12 09:40
(1) makas,

само сабой бекапов небыло :) да и база была на флешке :)
4. Михаил Ражиков (tango) 31.10.12 10:10
(0) автор, как ваша публикация соотносится с
http://forum.infostart.ru/forum26/topic73004/message780847/#message780847
?
или мы имеем дело с множественностью аккаунтов?
5. Дмитрий Воробьев (vde69) 31.10.12 10:14
(4) tango,
именно эта база, просто тот топ я не читал :)
6. Михаил Ражиков (tango) 31.10.12 10:29
7. script Мальчинко (script) 31.10.12 14:39
Копиовать, копиовать и еще ааз копиовать, таваищи.

Глядиш на аватар автора и видишь, что даже аватару автора стыдно за автора.
Покраснел как!
8. Александр Зубцов (iov) 01.11.12 02:50
(0) 1 плохой программист создает 2-3 рабочих места. 1 плохой юзверь не делающий бекапов кормит 2-3 программиста. итог - меньше безработицы больше прибыль программистам. В ж*опу бекапы даешь прямую запись обновлений во время работы пользователей!!!
9. Дмитрий Воробьев (vde69) 01.11.12 11:30
10. Павел Шилкин (ReLock) 07.11.12 08:24
Конечно, полезное чтиво. Но! Лучше сделать бэкап и не парить себе мозК! :)
11. Дмитрий Воробьев (vde69) 07.11.12 08:35
(10)(8)(7)

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

Ко мне обратились с УЖЕ СЛОМАНОЙ базой. База и бекапы не моя зона ответствености (и вообще я не имею отношения к этой базе и к той организации)!

Бекапы делать надо, но ведь пользователям этого не обьяснишь...
davdykin; wolfsoft; +2 Ответить 3
12. Павел Шилкин (ReLock) 07.11.12 09:34
13. Александр Зубцов (iov) 07.11.12 13:14
14. Александр Твердиков (ATverdikov) 07.11.12 14:13
бэкап нужно делать перед обновлением
15. Олег Филиппов (comol) 07.11.12 16:40
По мне так респект автору. Откопать и докопаться... Обычно в случае с файловой базой только руками разводят...
16. Alex_IT (Alex_IT) 09.11.12 02:38
(11) vde69, просто по тексту нельзя понять, что база была передана в уже убитом виде, а как раз наоборот. Причем есть детальное описание действий перед "падением" базы...
17. Роман Ершов (MRAK) 27.02.13 10:20
18. Арутюн (harutyunb) 29.08.13 22:41
Буду пробовать, при обнавлении вышла ошибки "Ошибка СУБД: Файл базы данных поврежден", окозалось что ж/д битый,
после chkdsk /r теперь имею "Ошибка при выполнении операции с информационной базой Файл базы данных поврежден 1Cv8.1CD".
chdbfl.exe убивает половину конфигурациию почти всю информацию на эту половину. после чего старая версия Tool_1CD начал видеть информацию с базы, но без загаловков таблиц,
теперь хочу спросить как можно в эту базу загрузить нужную конфигурацию.
Поможет ли Альфа весия туда загрузить?
конфигурация проекта мне не помогла вообще не загрузил ни базу ви базу после Tools_1C
Подскажите!
Прикрепленные файлы:
19. Михаил Ражиков (tango) 01.11.13 11:00
(18) harutyunb, чем окончилась ваша проблема?
20. Михаил Ражиков (tango) 01.11.13 11:51
(0) загружаю через вашу конфу (компоненту) базу чуть более 2Г
устал ждать как долго...
вряд ли чтение com-сервером быстрее
наверное, стоит не грузить все сразу, а подгружать нужные кусочки по мере надобности
Прикрепленные файлы:
21. Дмитрий Воробьев (vde69) 01.11.13 13:51
(20) он и грузит кусочками

реально он грузит только системные данные и строит связи между ними.
а долго это по двум причинам
1. сама 1с медленная
2. он не использует корневой обьект а все строит сам.

2 гига - примерно 2-3 часа должно идти
22. Михаил Ражиков (tango) 01.11.13 13:54
(21) vde69, уже больше двух :(
Прикрепленные файлы:
23. Михаил Ражиков (tango) 01.11.13 13:57
а щас прям так и зашевелился - эффект присутствия, наверно
Прикрепленные файлы:
24. Михаил Ражиков (tango) 01.11.13 14:44
конец уж близок
Прикрепленные файлы:
25. Михаил Ражиков (tango) 01.11.13 15:43
упс
Прикрепленные файлы:
26. Арутюн (harutyunb) 02.11.13 09:49
(19) tango, Все закончилось, печально! были утеряны данные!, Но это послужило хорошим уроком для дальнейшего восстановления. нельзя делать chkdsk, он полностью сектор (512бит) заменяет 0-ями, после него невозможно восстановить, я делаю по другому, через прог-у nscopy копию, которая только нечитаемый биты заменяет 0-я, после если конфигурация цела, можно войти и делать тестирование где можно увидеть поврежденную инф-у, но можно восстановить, потому что любой документ при проведении делает записи в регистре накоплении и в других регистрах и легко найти первичную инф-ю, или в крайном случаи зесли побита конфигурация, через 1с-TOOLS делаю удаление конфигурации с базы, потом его закрываю, и загружаю снового, туда из резервной копии делаю сохранение конфигурации, после опять открываю нашу базу и импортирую его туда и уже можно запустить через конфигутор. можно так же востановить другие блоки базы из резервной копии!!!
Этот способ мне выручает, иногда прибегаю к hex-редактору(бывает сдвиг по базе).
27. rhtr Иванов (rhtr) 31.01.14 22:43
Автор, а будет возможность востонавливать удалённые объекты?
28. Татьяна Бакина (angel4evil) 07.04.14 08:37
Очень благодарна автору за выложенный материал!!!
29. Юлия Тюрина (JSverhnovaya) 08.04.14 14:56
Подскажите пожалуйста, как вы воспользовались программой из проекта (https://code.google.com/p/restoration-base-1c8/) для открытия файла БД? Просит файл с необычным расширением *.2CD..
30. Юлия Тюрина (JSverhnovaya) 08.04.14 17:51
Не сразу разобралась, решается изменением расширения файла.
31. Maxim Kolkin (the1) 26.09.15 22:47
У меня при попытке зарегистрировать ВК почему-то вылетает с ошибкой
Платформа: 1С:Предприятие 8.3 (8.3.6.2237)
Конфигурация: открытый проект под лицензией "GPL v2"     (0.2.3)
vde69@mail.ru
(http://code.google.com/p/restoration-base-1c8/)
Режим: Файловый (без сжатия)
Приложение: Толстый клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Версия 8.2

Ошибки:
--------------------------------------------------------------------------------
26.09.2015 22:38:50
Некорректная работа компоненты с памятью
...Показать Скрыть
32. Maxim Kolkin (the1) 26.09.15 22:50
(31) А вот на 8.2 пошла, родимая)
33. Maxim Kolkin (the1) 26.09.15 23:48
А что делать с сообщениями вида
Блок 00 00 00 00 10 00 содержит ссылку за пределами файла - 00 00 1C C9 A0 00
Блок 00 00 00 01 70 00 содержит ссылку за пределами файла - 00 00 29 D3 70 00
Блок 00 00 00 01 70 00 содержит ссылку за пределами файла - 00 00 29 D3 60 00

34. Дмитрий Воробьев (vde69) 27.09.15 11:24
(31) the1, возможно манифест нужно отредактировать...
(32)

Блок 00 00 00 01 70 00 содержит ссылку за пределами файла - 00 00 29 D3 70 00

в твоем файле по адресу 00 00 00 01 70 00 располагается таблица ссылок на блоки файла, у тебя там лежит невалидное значение, тут варианты
1. файл неожиданно стал меньше и теперь не содержит нужных данных (такое может быть например при восстановлении файла с диска), тут вряд ли чего сделаешь
2. в таблице ссылок попался мусор (тогда это нужно забить 00), обычно такое бывает в конце таблицы
3. в таблице находится ссылка уже перемещённого блока, в этом случае хорошо-бы его найти и ссылку поставить корректную, тут нужно смотреть среди блоков которые не лежат в корне дерева и не имеют на себя ссылок
35. Сергей Племянников (Serge_ASB) 29.08.16 13:20
У меня при загрузке файла выскочили только ошибки вида
Блок 00 00 00 01 70 00 содержит ссылку за пределами файла - 00 00 29 D3 70 00.
Как определить, где находится эта ссылка за пределами файла? Искать в теле блока последовательность 00 00 29 D3 70 00?
Как понять, что там мусор или не мусор?
Базу некогда грохнули по каким-то причинам, а затем восстанавливали специально обученными программами.

36. Дмитрий Воробьев (vde69) 29.08.16 20:27
(35)
00 00 00 01 70 00 - это бинарный адрес (hex смещение), там лежит указатель 00 00 29 D3 70 00, значение этого указателя больше размера файла.

есть 2 возможные причины

1. этот указатель мусорный и его следует забить нулями
2. указатель был правильный но файл кто-то обрезал и часть файла просто пропала, тут скорее всего базу восстановить не удастся...
37. Илья Главатских (myromskui) 05.10.16 19:06
очень крутая статья! вирус шифральщик зашифровал базу! - наткнуля на эту конфигурацию
загрузил файл .2сd, нажал кнопку Загрузить список внутренних файлов - ошибок не было ни одной, нажал кнопку Загрузить структуры внутренних файлов - посыпались ошибки "Блок 00 00 00 00 10 00 содержит ссылку за пределами файла ________" и много различных вариантов файла

как быть в этом случае?
38. Cooler (Cooler) 05.10.16 19:11
(37) myromskui,
вирус шифральщик зашифровал базу! ... как быть в этом случае?
В таком случае либо платить автору вируса за расшифровку (без гарантии!!!), либо восстанавливать базу из бэкапа. Нет бэкапа - восстанавливать учет по первичке.
39. Илья Главатских (myromskui) 06.10.16 11:59
(38) Cooler, но мне кажется, вирус не зашифровал сами данные внутри базы - проблема только в первых двух блоках 00 00 00 00 10 00 и 00 00 00 00 20 00 - т.е по сути мне кажется они должны быть типовые для большинства баз! и решением должно быть заменить эти блоки на типовые!!! но только чем и как ????
40. Cooler (Cooler) 06.10.16 13:11
(39) myromskui,
мне кажется, вирус не зашифровал сами данные внутри базы - проблема только в первых двух блоках 00 00 00 00 10 00 и 00 00 00 00 20 00
Это вам так только кажется. Потому что эти проблемы обнаруживаются сразу же в момент открытия базы и до других дело просто не доходит.

Обычная практика для вирусов-шифраторов: небольшие файлы они шифруют полностью, а большие (базы 1С, видеофайлы и т.д.) - частично, кодируя несколько блоков в разных местах файла.

Поэтому даже если вы восстановите заголовок базы, то неизвестно, что еще обнаружится внутри: могут быть "кракозябры" в любых справочниках или документах, или разрушены итоги. Или, если зашифрованным окажется не тело какой-нибудь таблицы, а ее заголовок (описание), то тогда вы теряете к ней доступ - фактически, лишаетесь всей таблицы.
41. Илья Главатских (myromskui) 06.10.16 13:48
(40) Cooler, это все окей да логично! но меня сейчас просто интересует сама процедура замены этих двух блоков т.е типо некая инструкция "мол берем аналогичную базу открываем HEХ редактором находим начало конец блоков, также открываем убитую базу HEX редактором и делаем замену блоков на правильные значения"...кароче чтоб велосипед не делать - полюбому кто-то ковырял уже такое
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа