Как вылечить базу данных

Mari.P Откуда: Yekaterinburg | Дано: БД Firebird 1.5.6.5026 database.fdb Полетел жесткий диск, базу скопировали на новый, но не запускается, привожу ошибки: gfix -v -full -user SYSDBA -pas masterkey database.fdb internal gds software consistency check (cannot find tip page (165)) gfix -mend -full -ignore -user SYSDBA -pas masterkey database.fdb internal gds software consistency check (cannot find tip page (165)) gbak -b -v -ig -g -user SYSDBA -pas masterkey server:database.fdb database.gbk internal gds software consistency check (cannot continue after bugcheck) В инете пишут, что это скорее всего «В результате физического повреждения файла базы данных потеряна страница учета тразакций (TIP)» Подскажите пожалуйста уважаемые профессионалы, что делать? В принципе данные не сильно нужны, программа собирает данные с узлов учета и пишет в базу, с нуля только настраивать датчики не хочется…. |
Mari.P Откуда: Yekaterinburg | Я это и читала… |
Gallemar Откуда: г.Иркутск |
Лечение базы Firebird утилитой gfix: |
Gallemar Откуда: г.Иркутск |
backup/restore как я понял после прогона gfix делать не пробовали? |
o_v_a Откуда: Тула | Не исправят штатный gfix и gbak потерю TIP. Или сюда в платный ремонт. Или FirstAID — он тоже умеет. |
FedorinoFF Откуда: | можно попробовать в IBExpert инструмент (Main menu -> Tools ->) DatabaseInside |
Gallemar Откуда: г.Иркутск |
Ничего себе совет… Сам то пробовал? |
o_v_a Откуда: Тула | Ага-ага. Выглядит как типа «А давайте случайного человека с улицы позовём в операционную, дадим ему скальпель и попросим провести больному аппендэктомию». |
Gallemar Откуда: г.Иркутск | В общем — звоните в ibase и если данные нужны — платите денежку и будет вам счастье. Если не важны — разверните последний бэкап и радуйтесь. |
shaposh Откуда: Москва | В Ibase починят с вероятностью процентов в 95, если не починят — денег не возьмут. |
kdv Откуда: iBase.ru | Mari.P, tip page чинится или нашим FirstAid-ом, или руками.
повезло, что ошибку tip page пишет. Обычно в таких случаях данные ложечкой выскребать приходится, если они вообще остались. |
IBExpert Откуда: От верблюда |
Я пробовал. Не вытащит данные — ничего страшного не случится. |
FedorinoFF Откуда: | Gallemar, пробовал, иногда работает. если вылеты IBExpert — можно отправить пример разработчикам и поучаствовать в развитии супер-инструмента. В любом случае, попытка — не пытка. |
Ссылка на сообщение
Ссылка (включая название темы)
Ссылка (URL)
x
Источник
ВАЖНО! Перед началом восстановления убедитесь что все пользователи отключены от сервера и сделайте копию файла базы данных. Если нет доступа ко всем компьютерам в сети на которых запущены приложения подключенные к базе данных, то на сервере запретите (сделайте неактивным) сетевое подключение или просто достаньте сетевой кабель из розетки на системном блоке. Подождите несколько минут пока сервер не закроет все неактивные коннекты и перезагрузите операционную систему.
Войдите в каталог Bin в папке, куда был установлен сервер Interbase/Firebird/Yaffil[1]. Для того, чтобы не работать с «голым» окном командной строки, рекомендуется использовать любую файловую утилиту вроде Far или Total Commander.
Проверим базу данных на наличие повреждений:
gfix -v -full -user SYSDBA -pas masterkey database.gdb
вместо gdbase.gdb укажите полный путь к своему файлу базы данных (хорошая идея: для того чтобы не обременять себя вводом длинного пути, скопировать файл базы данных непосредственно в каталог BIN). Имя сервера указывать не надо!
Если утилита отработала и не выдала ничего на экран, то с базой все нормально.
Если есть повреждения, то попытаемся исправить их:
gfix -mend -full -ignore -user SYSDBA -pas masterkey database.gdb
Проверим, исправились ли все повреждения:
gfix -v -full -user SYSDBA -pas masterkey database.gdb
Если повреждения остались, то запишем информацию в Bak-файл, а потом восстановим в другой новой базе данных. Для этого последовательно выполним команды:
gbak -b -v -ig -g -user SYSDBA -pas masterkey server:database.gdb database.gbk
Здесь применены следующие ключи:
- -b — создавать архивную копию базы;
- -v — выводить на экран подробный лог;
- -ig — игнорировать ошибки в данных;
- -g — запретить сборку мусора при чтении из базы.
gbak -c -v -user SYSDBA -pas masterkey database.gbk server:new.gdb
Обратите внимание, что при указании имени базы данных необходимо указать имя сервера и через двоеточие полный путь к файлу базы данных на сервере (обратите внимание, что если вы даже скопировали файл базы данных в одну папку с утилитой резервного копирования все равно необходимо указать полный путь к файлу). При указании имени архива следует указать только полный путь к файлу без указания имени сервера.
При серьезных повреждениях базы данных в некоторых таблицах могут пропасть записи из-за чего не восстановятся внешние ссылки на эти таблицы. Или наоборот, появятся «фантомные» записи, нарушающие условия уникальности первичного ключа. В таких случаях на стадии восстановления базы данных из архива на экране будут отображены сообщения об ошибках и процесс восстановления прервется.
Спасти базу можно следующим образом: сначала восстановить ее без внешних ссылок (индексов) с помощью команды:
gbak -c -i -user SYSDBA -pas masterkey database.gbk server:new.gdb
Затем, с помощью любой оболочки, например IBExpert, один за одним активизировать внешние ключи с целью выявить поврежденные таблицы. По мере выявления следует, либо удалить записи которые содержат ссылки на несуществующие записи, либо добавить несуществующие записи, либо обнулить ссылки. Здесь, хорошим подспорьем может стать наличие пусть и устаревшего, но неповрежденного архива этой же базы.
Если база повреждена настолько, что одной деактивации индексов недостаточно, то можно попробовать ключи -n (отключение проверок целостности данных) и -o (комит данных после каждой таблицы при восстановлении).
Пример команды с вышеупомянутыми ключами:
gbak -c -i -n -o -user SYSDBA -pas masterkey database.gbk server:new.gdb
Как и в предыдущем случае, после разархивирования базы и ручного восстановления целостности данных базу следует еще раз сархивировать и восстановить из архива уже с обычным набором ключей.
См. также
- Пример ремонта поврежденной БД
Примечания
- ↑ По умолчанию, сервер Yaffil устанавливается в папку C:/Program Files/Yaffil.
Источник
Материал из Info
В исключительно редких случаях возможно появление проблемы в базе данных. Для ее исправления предвидены соответствующие процедуры, которые зависят от вида базы.
Подготовка к изменению базы
Прежде, чем начать реальное изменение базы данных, необходимо выполнить ряд процедур по проверке системы. Процедуры включают следующие шаги:
- Проверка свободного места на диске. Необходимо обратить внимание на папки, которые сохраняют базу данных, сам раздел с Windows и временные папки;
- Ошибки MSDE , Microsoft SQL Server 2005/2008/2012/2014/2016 записываются в Event Log Windows (Start/Control panel/Administrative Tools/Event Viewer), откуда можно понять, где именно проблема: в диске, в базе данных или в самом SQL сервере;
- Осуществляется проверка папок на наличие поврежденных секторов на диске;
- Осуществляется проверка последней архивной копии базы данных, при условии, что обнаружено наличие архива, в котором установлено повреждение, и он не проходит проверку на целостность. Простейшим решением проблемы является восстановление базы данных из архива.
После выполнения этих обязательных действий можно приступить к фактическому ремонту базы данных.
Access
При исправлении базы данных Access необходимо выполнить следующие действия:
- Обязательно создается архивная копия базы данных. Используются следующие методы:
- Если есть возможность открыть базу данных при помощи самой программы, то резервная копия базы создается в меню Файл / Резервное копирование и восстановление. Имя и путь к базе данных проверяется в меню Файл / Активная база данных;
- Если возникают проблемы с открытием базы данных при помощи программы, то осуществляется ее копирование вручную в другую, нерабочую папку. Папка базы данных описана в этой статье: Папка с продуктами.
- Открывается база данных в MS Access, версии 2003, 2007 или 2010. Для получения доступа к базе данных необходимо ввести инженерный пароль, который можно получить в отделе технической поддержки в Болгарии (Предоставляется только партнёрам Микринвест);
- Если при открытии базы данных Microsoft Access появляется сообщение, что файл не может быть использован, то возникает необходимость подключения дополнительного программного обеспечения для восстановления данных или поиска заархивированной копии базы данных;
- После открытия БД, в зависимости от версии MS Access, выбирается:
- MS Access 2003 — из меню Tools->Database Utilities->Compact and Repair Database…;
- MS Access 2007 — выбирается кнопка Office Button, которая находится в верхнем левом углу, потом опция Manage и Compact and Repair Database;
- MS Access 2010 — из меню File->Info->Compact & Repair;
Таким образом, изменение базы данных завершено.
MySQL
Для того чтобы произвести изменение базы данных сервера MySQL, необходимо наличие дополнительных инструментов:
- MySQL GUI Tools или MySQL Administrator. Данный продукт можно скачать отсюда: https://dev.mysql.com/downloads/gui-tools/5.0.html
После установки MySQL GUI Tools или MySQL Administrator, следует запустить MySQL Administrator, который запрашивает дополнительную информацию для соединения с сервером, содержащим базу данных.
Поля, необходимые для подключения к серверу:
Server Host — название или IP сервера, на котором находится база данных. Данные этого поля соответствуют аналогичным данным в настройке Microinvest Склад Pro;
Username — Имя пользователя для подключения к серверу. По умолчанию это root. Данные поля соответствуют аналогичным данным в настройке Microinvest Склад Pro;
Pasword — Пароль для подключения к серверу. Данные поля соответствуют аналогичным данным в настройке Microinvest Склад Pro.
После успешного запуска MySQL Administrator и осуществления подключения к базе данных, выполняются следующие шаги:
- Создаем архив базы данных:
- Используется Microinvest Архи Pro
- «MySQL Administrator» — содержит встроенные функции для создания архивов, выполняются следующие операции:
- В верхнем левом меню выбирается Backup;
- В нижнем правом углу нажимается кнопка New Project;
- Левой кнопкой мыши выделяется база данных, которую хотите заархивировать (Schema);
- Нажимается маленькая квадратная кнопка «>» для того, чтобы подтвердить выбор указанной базы данных. Она будет отражена в правой части приложения вместе с относящимися к ней таблицами (Backup Content);
- Подтверждение происходит нажатием кнопки Execute Backup Now;
- Открывается окошко Save As, в котором нужно указать, где будет сохранен архивный файл;
- После выбора кнопки Save начинается процесс создания архива. Необходимо дождаться появления системного сообщения «The Backup was finished successfully». Операция по созданию архива заканчивается нажатием OK;
- В верхнем левом меню выбирается Catalogs. В нижнем левом меню появляются базы данных, которые расположены на данном сервере;
- Выбирается база данных и выделяется левой кнопкой мыши. В правой части программы появляется структура баз данных и относящиеся к ней таблицы (Schema Tables);
- В нижнем правом углу расположена кнопка Maintenance. Открываются опции задач, и там указывается Repair Tables. Подтверждается с «Next >>», выделяется уровень изменения Extended. Последним шагом является активация «Repair Tables».
На этом процесс изменения БД MySQL завершен.
MSDE и Microsoft SQL Server 2000
Для выполнения изменения базы данных необходимо наличие инструментов для управления самим сервером:
- Процедуры осуществляются с помощью Microsoft SQL Server Management Studio;
- При условии, что версия Windows является 64-битной, скачать 64-битную версию можно по следующей ссылке: Microsoft SQL Server Management Studio;
- Если на компьютере не установлен MSXML6.0, то этот компонент необходимо инсталлировать до начала установки Microsoft SQL Server Management Studio;
- MSXML6.0 для 64-битной версии Windows доступен здесь;
- После успешной установки компонентов, запускается Microsoft SQL Server Management Studio и подключается к серверу MSDE путем указания имени и пароля пользователя для доступа к SQL серверу. Эти параметры настраиваются еще при установке MSDE и соответствуют параметрам для соединения с базой данных в программе;
- В Microsoft SQL Server Management Studio раскрывается папка Databases, выделяется база, которую необходимо восстановить, и при помощи правой кнопки мыши выбирается опция „New Query”. Аналогичный результат можно получить путем выделения левой кнопкой мыши базы данных, выбирая команду „New Query”;
- В открывшемся окне выписываются следующие команды:
ALTER DATABASE db_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ( ‘db_name’ , REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE db_name SET MULTI_USER;
где вместо db_name записывается имя базы, нуждающейся в восстановлении. Все заявки выполняются в окне путем нажатия клавиши F5 или кнопки Execute в Microsoft SQL Server Management Studio. В зависимости от величины базы данных и вида ошибок, время обработки заявки может варьировать от нескольких секунд до нескольких часов.
- Когда завершается обработка заявок, в Microsoft SQL Server Management Studio выводится информация по базе данных. Если в разделе Messages присутствуют строчки, выделенные красным цветом, это означает, что заявка обнаружила проблемы в БД. В большинстве случаев обнаруженные проблемы обработаны, и, соответственно, в разделе Messages следует описание о том, удалось ли устранить обнаруженные ошибки или нет.
- В том случае, если не удается установить, исправлена ли база данных, можно заново запустить заявки для проверки. При повторном запуске заявок не должно быть строк, выделенных красным цветом.
Microsoft SQL Server 2005+
Для выполнения исправления базы данных необходимо наличие инструментов для управления самим сервером:
- Процедуры осуществляются с помощью Microsoft SQL Server Management Studio 2005 или Microsoft SQL Server Management Studio 2008;
- При условии, что версия Windows является 64-битной, скачать 64-битную версию можно по ссылке: Microsoft SQL Server Management Studio 2005 или Microsoft SQL Server Management Studio 2008;
- Если на компьютере не установлен MSXML6.0, то этот компонент необходимо инсталлировать до начала установки Microsoft SQL Server Management Studio;
- MSXML6.0 для 64-битной версии Windows доступен здесь;
- После успешной установки компонентов, запускается Microsoft SQL Server Management Studio и подключается к SQL Server. Имя пользователя и пароль соответствуют заданным при установке сервера и совпадают с логином и паролем программы;
- Раскрывается папка Databases, выделяется база, которую необходимо восстановить, и правой кнопкой мыши выбирается опция „New Query”. Аналогично базу данных можно выделить левой кнопкой мыши и выбрать „New Query”;
- В окне справа выводятся следующие команды:
ALTER DATABASE db_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ( ‘db_name’ , REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE db_name SET MULTI_USER;
где вместо db_name записывается имя базы, нуждающейся в исправлении. Все заявки выполняются в окне путем нажатия клавиши F5 или кнопки Execute в Microsoft SQL Server Management Studio. В зависимости от величины базы данных и вида ошибок, время обработки заявки может варьировать от нескольких секунд до нескольких часов;
- Когда завершается обработка заявок, в Microsoft SQL Server Management Studio выводится информация по базе данных. Если в разделе Messages присутствуют строчки, выделенные красным цветом, это означает, что заявка обнаружила и исправила ошибки в базе данных. В большинстве случаев эти проблемы устранены. В разделе Messages описано исправлены ли обнаруженные ошибки или нет;
- В том случае, если не удается установить, изменена ли база данных успешно, можно заново запустить заявки для проверки. При повторном запуске заявок не должно быть строк, выделенных красным цветом.
База в режиме Suspected
Иногда сам сервер сообщает, что определенная база является «сомнительной». В таком случае она отмечается как «Suspected», и появляется необходимость выполнения ряда команд.
Для Microsoft SQL Server 2005/2008/2008 R2/2012/2014/2016:
sp_resetstatus ‘db_name’;
ALTER DATABASE db_name SET EMERGENCY;
DBCC CHECKDB ( ‘db_name’ ) ;
ALTER DATABASE db_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ( ‘db_name’ , REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE db_name SET MULTI_USER;
где вместо db_name пишется имя базы данных. В случае обнаружения ошибки, в разделе Messages будут присутствовать строчки, выделенные красным цветом. Необходимо выполнить все строки запроса. Строку DBCC CHECKDB ( ‘db_name’ , REPAIR_ALLOW_DATA_LOSS), возможно, придется выполнить несколько раз, до устранения всех ошибок.
Заявки необходимо обрабатывать последовательно, строчка за строчкой, а не все вместе.
Для MSDE и Microsoft SQL Server 2000 выполняются:
USE master;
sp_resetstatus ‘db_name’ ;
sp_configure ‘allow updates’,1;
reconfigure with override;
UPDATE sysdatabases SET status = 32768 WHERE name = ‘db_name’ ;
DBCC CHECKDB ( ‘db_name’ ) ;
ALTER DATABASE db_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ( ‘db_name’ , REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE db_name SET MULTI_USER;
UPDATE sysdatabases SET status = 4194328 WHERE name = ‘db_name’;
sp_configure ‘allow updates’,0;
reconfigure with override;
где вместо db_name пишется имя поврежденной базы данных. При наличии проблем, в разделе Messages вновь будут присутствовать строчки, выделенные красным цветом.
Заявки необходимо обрабатывать последовательно, строчка за строчкой, а не все вместе;
Некоторые полезные ресурсы
- Документация по всем продуктам;
- Форум технической поддержки Microinvest, где Вы сможете быстро получить ответ на интересующий вопрос;
- Примеры автоматизации ресторанов и торговли на базе Microinvest в России и странах СНГ;
- График предстоящих обучений в России и странах СНГ;
- Программы для автоматизации ресторанов и кафе бесплатные полнофункциональные демо-версии продуктов Microinvest для ресторанного бизнеса;
- Программы для автоматизации торговли и склада бесплатные полнофункциональные демо-версии продуктов Microinvest для магазинов;
- Автоматизация торговли под Linux;
- www.microinvest.tv Видеоуроки, обучения;
- Корпоративный блог — интересные события в мире Microinvest;
- Все статьи Базы Знаний;
- Скачать офф-лайн версию Базы Знаний на свой компьютер.
Рассмотрите другие статьи в категории Решение проблем | Анализ
Источник