SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » FB 3.0.7 повреждение БД
FB 3.0.7 повреждение БД [сообщение #3326] Tue, 10 October 2023 18:01 Переход к предыдущему сообщению
IP в настоящее время не в онлайне  IP
Сообщений: 25
Зарегистрирован: January 2023
Junior Member
Приветствую, коллеги!

Разбирал тут неприятный инцидент с повреждением БД.
Один из наших программистов ковырял метаданные, в частности создал табличку SKLAD_MAG_PAL_MEST,
потом происходит "нечто", в логах сервера нашел один сегфолт относящийся к файрберду примерно на указанный день,
чистоту в "железных" логах на предмет рэйда или ЕСС памяти.
В результате получили несогласованность в базе, есть запись в rdb$relations, но нет в RDB$RELATION_FIELDS

запрос
select RDB$RELATION_NAME from rdb$relations where RDB$RELATION_NAME = 'SKLAD_MAG_PAL_MEST'
отдает пустоту

запрос
select RDB$RELATION_NAME from rdb$relations where RDB$RELATION_NAME || '' = 'SKLAD_MAG_PAL_MEST' || ''
отдает 1 запись

Из видимых повреждений явно битый индекс как минимум на одной из системных табличек.

GBAK добросовестно создает gbk, а вот рестор уже обламывается.
Причем судя по вербозе создания gbk оно еще двадцать с лишим тысяч записей загоняет по этой табличке, т.е. gbak данных в проблемной табличке каким-то хитрым способом таки наковырял.
хотя "select * from SKLAD_MAG_PAL_MEST" шлет лесом.

gfix меня ни чем не порадовал и не уведомил. не умею пользоваться? может есть "хитрый" набор ключей?

Собственно пролечил сие безобразие велев gbak-у пропустить проблемную табличку "-SKIP_D SKLAD_MAG_PAL_MEST", потом врукопашную выкинул из gbk два упоминания таблички в секции метаданных, после чего оно разресторилось и проблема ушла.

Вопрос: Как избежать? скорее риторический. Да, я знаю, ковырять метаданные под нагрузкой в три сотни коннектов так себе занятие.

А вот вопрос:
Есть ли менее зубодробильный метод лечения, кроме как руками ковырять файл gbk в 185 гиг?
волне себе интересен.

Оригинальный gdb есть, но он гад 372 гиг и содержит кучу коммерческой инфы, разбором полетов я занялся когда прошло уже несколько дней после инцидента, никаких следов процессов файрберда не осталось.
Участники "врут как очевидцы", как мне кажется запустили апдейт метаданных в nowait транзакции, оно "зависло", взяли и грохнули процесс классика и тут "Остапа понесло".
Если есть версии как оно еще могло так покорежиться, было бы тоже интересно.
Могу ли я чем-то помочь разработчикам?
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Быстродействие UDR
Следующая тема: Миграция 2.5.9 -> 3.0.11
Переход к форуму:
  


Текущее время: Wed Dec 18 16:49:55 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01708 секунд