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