bdd2

Как я восстанавливал базу 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) 41 31.10.12 09:38 Сейчас в теме
Даю свой путь самурая :)


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

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



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

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

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

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

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

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

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

2 гига - примерно 2-3 часа должно идти
22. Михаил Ражиков (tango) 467 01.11.13 13:54 Сейчас в теме
(21) vde69, уже больше двух :(
Прикрепленные файлы:
23. Михаил Ражиков (tango) 467 01.11.13 13:57 Сейчас в теме
а щас прям так и зашевелился - эффект присутствия, наверно
Прикрепленные файлы:
24. Михаил Ражиков (tango) 467 01.11.13 14:44 Сейчас в теме
конец уж близок
Прикрепленные файлы:
25. Михаил Ражиков (tango) 467 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) 56 31.01.14 22:43 Сейчас в теме
Автор, а будет возможность востонавливать удалённые объекты?
28. Татьяна Бакина (angel4evil) 2 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) 277 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) 277 26.09.15 22:50 Сейчас в теме
(31) А вот на 8.2 пошла, родимая)
33. Maxim Kolkin (the1) 277 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) 863 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) 863 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) 1 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) 1 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 редактором и делаем замену блоков на правильные значения"...кароче чтоб велосипед не делать - полюбому кто-то ковырял уже такое