Если в interabase.log есть ошибки wrong page type, значит БД повреждена из-за нехватки места, ошибок ФС или аппаратных ошибок диска.
Как правило после этого БД нормально восстанавливается если с этого момента прошло меньше 2 дней.
Восстановление происходит путем backup-restore:
1. Если у вас включен помощник, то в меню сервис переводим сервер в SAFEMODE. Либо при загрузке сервера, сразу после таблицы BIOS нажимайте раз в секунду клавиши вверх вниз, до появления menu. Выберите ядро ICServer и напишите
{code}sm=1 p=пароль{code}
Например, ICServer sm=1
После этого нажмите Enter и введите пароль загрузки: servicemode. При вводе пароля на экран ничего не отображается. После нажатия Enter должна продолжиться обычная загрузка системы.
Подключаемся помощником через root@ip port 33 пароль
2. Делаем бэкап
{code}export INTERBASE_LOCK=/var/lock/firebird/
gfix -mend -full -ignore /var/db/ics_main.gdb{code}
\#Может какое-то время повисеть и вывести количество ошибок
{code}gbak -b -v -ig -g -e /var/db/ics_main.gdb /tmp/123.gbk{code}
Если бэкап сделать не удалось, можно обратиться в техническую поддержку(от SLA 3) чтобы специалисты сделали ручное восстановление. В других случаях необходимо восстановить БД из ежедневного бэкапа
{code}export INTERBASE_LOCK=/var/lock/firebird/{code}
3. Вручную восстанавливаем существующий бекап во временный файл
{code}gbak -c -v /tmp/123.gbk /var/db/tmp.gdb{code}
{color:#ff0000}Если из этого бэкапа восстановиться не получилось, нужно восстанавливаться из последнего рабочего:{color}
{code}gbak -c -v /var/backup/db/ВАШ_БЕКАП.gbk /var/db/tmp.gdb{code}
4. Устанавливаем права доступа на вновь созданный файл
{code}chmod 666 /var/db/tmp.gdb{code}
5. Временный файл tmp.gdb переименовывается в ics_main.gdb, с сохранением исходной БД в ics_main.gdb.bad
{code}mv /var/db/ics_main.gdb /var/db/ics_main.gdb.bad
mv /var/db/tmp.gdb /var/db/ics_main.gdb{code}
6. Очистка БД от старых сообщений
{code}sqlexec /var/db/ics_main.gdb 'delete from msg_stack'
sqlexec /var/db/ics_main.gdb 'delete from msg'{code}
7. Остановка служб
{code}killall -HUP gds_inet_server
killall -KILL gds_lock_mgr{code}
8. Выполните "мягкую" перезагрузку
Как правило после этого БД нормально восстанавливается если с этого момента прошло меньше 2 дней.
Восстановление происходит путем backup-restore:
1. Если у вас включен помощник, то в меню сервис переводим сервер в SAFEMODE. Либо при загрузке сервера, сразу после таблицы BIOS нажимайте раз в секунду клавиши вверх вниз, до появления menu. Выберите ядро ICServer и напишите
{code}sm=1 p=пароль{code}
Например, ICServer sm=1
После этого нажмите Enter и введите пароль загрузки: servicemode. При вводе пароля на экран ничего не отображается. После нажатия Enter должна продолжиться обычная загрузка системы.
Подключаемся помощником через root@ip port 33 пароль
2. Делаем бэкап
{code}export INTERBASE_LOCK=/var/lock/firebird/
gfix -mend -full -ignore /var/db/ics_main.gdb{code}
\#Может какое-то время повисеть и вывести количество ошибок
{code}gbak -b -v -ig -g -e /var/db/ics_main.gdb /tmp/123.gbk{code}
Если бэкап сделать не удалось, можно обратиться в техническую поддержку(от SLA 3) чтобы специалисты сделали ручное восстановление. В других случаях необходимо восстановить БД из ежедневного бэкапа
{code}export INTERBASE_LOCK=/var/lock/firebird/{code}
3. Вручную восстанавливаем существующий бекап во временный файл
{code}gbak -c -v /tmp/123.gbk /var/db/tmp.gdb{code}
{color:#ff0000}Если из этого бэкапа восстановиться не получилось, нужно восстанавливаться из последнего рабочего:{color}
{code}gbak -c -v /var/backup/db/ВАШ_БЕКАП.gbk /var/db/tmp.gdb{code}
4. Устанавливаем права доступа на вновь созданный файл
{code}chmod 666 /var/db/tmp.gdb{code}
5. Временный файл tmp.gdb переименовывается в ics_main.gdb, с сохранением исходной БД в ics_main.gdb.bad
{code}mv /var/db/ics_main.gdb /var/db/ics_main.gdb.bad
mv /var/db/tmp.gdb /var/db/ics_main.gdb{code}
6. Очистка БД от старых сообщений
{code}sqlexec /var/db/ics_main.gdb 'delete from msg_stack'
sqlexec /var/db/ics_main.gdb 'delete from msg'{code}
7. Остановка служб
{code}killall -HUP gds_inet_server
killall -KILL gds_lock_mgr{code}
8. Выполните "мягкую" перезагрузку