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

Начало » Использование СУБД » Firebird, HQbird, InterBase » Проверялка базы
Проверялка базы [сообщение #5480] Tue, 24 September 2024 17:21 Переход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 63
Зарегистрирован: July 2022
Member
Приветствую знатоков и разработчиков!

WI-V3.0.8.33535 Firebird 3.0 (Windows/Intel/i386), ODS 12.0

Хочется иметь какой-то инструмент, который бы отвечал на вопрос - база в порядке или нет. С тем, чтобы в определенной ситуации (или с определенной периодичностью) запускать и если что - бить тревогу.

Попробовал isc_action_svc_validate. Но! Она выдает большой объем текстовой информации, а мне нужен ответ - Да или Нет. Как понимаю - решение в анализе выводимой информации, поиска слов типа "ERROR" или что-то в этом роде.

Вопрос: на какие слова завязаться?

И, как пример, вот у меня эта проверялка выдает:

16:32:42.46 Warning: Pointer page 807 {sequence 0} bits {0x05 full, swept} are not consistent with data page 6869 {sequence 373} state {0x01 full} 
Вроде-бы безобидно, но на клиенте это превращается в невозможность прочитать блоб:

Error Message:
----------------------------------------
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
BLOB not found.
-------------------------------------------------------------------------------------------------------------------
SQLCODE: -901
SQLSTATE: HY000
GDSCODE: 335544382
Re: Проверялка базы [сообщение #5493 является ответом на сообщение #5480] Wed, 25 September 2024 12:30 Переход к предыдущему сообщениюПереход к следующему сообщению
sashaua01 в настоящее время не в онлайне  sashaua01
Сообщений: 26
Зарегистрирован: July 2022
Junior Member
может не совсем то что Вам надо. У нас есть такой велосипед.
Микросервис на пайтоне + фласк который имеет ендпоинт /heath , внутри этот ендпоин делает простой селект в базе (select max(id) from customers) и если все ок возвращает код 200, эсли что-то пошло не так возвращает код 500.
В системе мониторинга есть синтетический тест https://dba.vltava.local/heath и если ответ  <> 200 будет аларм.
Примитивный тест жива база или нет.   

[Обновления: Wed, 25 September 2024 12:31]

Известить модератора

Re: Проверялка базы [сообщение #5494 является ответом на сообщение #5493] Wed, 25 September 2024 12:58 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 52
Зарегистрирован: June 2022
Member
gfix -v -full database.fdb  не устраивает?
Re: Проверялка базы [сообщение #5496 является ответом на сообщение #5480] Wed, 25 September 2024 13:51 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 339
Зарегистрирован: August 2022
Senior Member
ggreggory писал(а) Tue, 24 September 2024 17:21

И, как пример, вот у меня эта проверялка выдает:

16:32:42.46 Warning: Pointer page 807 {sequence 0} bits {0x05 full, swept} are not consistent with data page 6869 {sequence 373} state {0x01 full} 
Вроде-бы безобидно, но на клиенте это превращается в невозможность прочитать блоб:

Error Message:
----------------------------------------
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
BLOB not found.
-------------------------------------------------------------------------------------------------------------------
Абсолютно высосанный из пальца вывод о связи одного с другим.


PS 3.0.8 ? Серьёзно ?
Re: Проверялка базы [сообщение #5498 является ответом на сообщение #5493] Wed, 25 September 2024 16:24 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 63
Зарегистрирован: July 2022
Member
sashaua01 писал(а) Wed, 25 September 2024 12:30
может не совсем то что Вам надо. У нас есть такой велосипед.
Микросервис на пайтоне + фласк который имеет ендпоинт /heath , внутри этот ендпоин делает простой селект в базе (select max(id) from customers) и если все ок возвращает код 200, эсли что-то пошло не так возвращает код 500.
В системе мониторинга есть синтетический тест https://dba.vltava.local/heath и если ответ  <> 200 будет аларм.
Примитивный тест жива база или нет.   
Конкретно на примере этой базы "select max(id) from table" работает, а "select max(octet_length(blob_field)) from table" уже нет. Вот поэтому и ищу более продвинутый вариант.

sg729 писал(а) Wed, 25 September 2024 12:58
gfix -v -full database.fdb  не устраивает?
Хотелось бы без монопольного доступа.
Re: Проверялка базы [сообщение #5499 является ответом на сообщение #5496] Wed, 25 September 2024 17:00 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 63
Зарегистрирован: July 2022
Member
hvlad писал(а) Wed, 25 September 2024 13:51
Абсолютно высосанный из пальца вывод о связи одного с другим.
Хорошо. Но все-таки, на какие слова завязаться?

hvlad писал(а) Wed, 25 September 2024 13:51

PS 3.0.8 ? Серьёзно ?
По работе 3.0.8 вроде как все устраивает. Все порчи баз связываем с отключением электричества или баловством с кнопкой Power юзерами. К сожалению, замена сервера для нас крайне крайне затратная и длительная процедура.

Re: Проверялка базы [сообщение #5500 является ответом на сообщение #5499] Wed, 25 September 2024 17:44 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 339
Зарегистрирован: August 2022
Senior Member
ggreggory
Но все-таки, на какие слова завязаться?
Если речь об онлайн-валидации, то можно искать "Error:"

ggreggory
По работе 3.0.8 вроде как все устраивает. Все порчи баз связываем с отключением электричества или баловством с кнопкой Power юзерами. К сожалению, замена сервера для нас крайне крайне затратная и длительная процедура.
Апгрейд минорной версии сервера FB делается за 1 мин простоя, было бы желание:
Re: Проверялка базы [сообщение #5501 является ответом на сообщение #5500] Thu, 26 September 2024 12:01 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 63
Зарегистрирован: July 2022
Member
hvlad писал(а) Wed, 25 September 2024 17:44
ggreggory
Но все-таки, на какие слова завязаться?
Если речь об онлайн-валидации, то можно искать "Error:"
Ок, спасибо!

hvlad писал(а) Wed, 25 September 2024 17:44
ggreggory
По работе 3.0.8 вроде как все устраивает. Все порчи баз связываем с отключением электричества или баловством с кнопкой Power юзерами. К сожалению, замена сервера для нас крайне крайне затратная и длительная процедура.
Апгрейд минорной версии сервера FB делается за 1 мин простоя, было бы желание:
Ок, подумаем над этим!
Re: Проверялка базы [сообщение #5502 является ответом на сообщение #5501] Thu, 26 September 2024 14:35 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 873
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
раньше вродь gfix отдавал errorlevel на выходе.
вряд ли что-то в этом плане менялось.
Re: Проверялка базы [сообщение #5503 является ответом на сообщение #5502] Thu, 26 September 2024 20:52 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 63
Зарегистрирован: July 2022
Member
Возникли вопросы. Допустим есть база, резервная копия которой с помощью GBAK корректно сохраняется (без ошибок).

Могут ли в этой базе данных при этом оставаться ошибки, которые GBAK не замечает (не выдает ошибки)? Ну, например, испорченные индексы.

И если да, могут, то другой вопрос: может ли онлайн-валидация часть из этих ошибок найти?
Re: Проверялка базы [сообщение #5504 является ответом на сообщение #5503] Fri, 27 September 2024 00:30 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 70
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
GBAK не обнаружит нарушение уникальности индекса, и при восстановлении будет ошибка
Re: Проверялка базы [сообщение #5505 является ответом на сообщение #5504] Fri, 27 September 2024 07:54 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 139
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Не пытайтесь решать нерешаемое.

gbak:ERROR: Error while parsing procedure ...
gbak:ERROR: action cancelled by trigger ...
gbak:ERROR: attempt to store duplicate value ...
Это всё ошибки восстановления из успешно сделанного бэкапа базы.
Первая строчка - некорректная правка метаданных. Может возникнуть для PSQL-кода, который уже давно и никем не используется. В исходной базе - плевать, но восстановиться из бэкапа - невозможно.
Вторая строчка - не хватило места для временных файлов на этапе активации индексов. Вообще ничего не говорит о "здоровье" исходной базы.
Третье - дубли в первичном/уникальном индексе, которые надо отдельно искать. А потом - решать, что делать с найденным.
Дубли, в общем и целом, могут и не влиять на работу приложения. Но возможны ньюансы.
А ещё есть всякие "приколы" с повреждениями отдельных записей/блобов.
Или, например разная видимость "по индексу" и "натуралом". Причём в обоих вариантах расхождения.

database file appears corrupt ...
internal Firebird consistency check ...
Это уже разновсяческие варианты физических повреждений, включая разную экзотику, которую сложно обнаружить "в дикой природе".
А ещё есть предупреждения, которые сами по себе некритичны, но которые указывают на какие-то другие проблемы.

Приведённое для примера, надо сказать, далеко не всё, с чем можно столкнуться.
А ещё есть уже исправленные ошибки "всякой древности" вроде "вашей" 3.0.8.

И вот вы, такой д'Артаньян, собираетесь решать - повреждена ли ваша база. Оперативно и онлайн.
Если СУБД Firebird работает с файлом базы, то база, в целом, исправна. Но могут быть не в порядке данные в этой вашей базе.

Хотите уверенности в завтрашнем дне?
Регулярно проверяйте метаданные - быстро и страхует от некоторых сюрпризов.
Регулярно проверяйте восстановимость бэкапов.
Регулярно (но реже) проверяйте физическую целостность на копии файла базы.
Две последние проверки не заменяют одна другую - они про разное.

P.S.
Совсем забыл - не забывайте "почитывать" firebird.log и системные журналы Smile

[Обновления: Fri, 27 September 2024 08:00]

Известить модератора

Re: Проверялка базы [сообщение #5506 является ответом на сообщение #5505] Fri, 27 September 2024 09:49 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 52
Зарегистрирован: June 2022
Member
Чуть подробнее, пожалуйста...

basid писал(а) Fri, 27 September 2024 07:54

Регулярно проверяйте метаданные - быстро и страхует от некоторых сюрпризов.
Как? Каким инструментом?

basid писал(а) Fri, 27 September 2024 07:54

Регулярно (но реже) проверяйте физическую целостность на копии файла базы.
Как? Каким инструментом?
Re: Проверялка базы [сообщение #5507 является ответом на сообщение #5506] Fri, 27 September 2024 15:41 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 139
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member

  1. gbak -se ... -m -b -g источник stdout | gbak ... -m -c stdin приёмник
  2. gfix -v ... копия
Как создавать корректную файловую копию базы рассказывать?
Re: Проверялка базы [сообщение #5508 является ответом на сообщение #5507] Fri, 27 September 2024 15:49 Переход к предыдущему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 52
Зарегистрирован: June 2022
Member
basid писал(а) Fri, 27 September 2024 15:41



  1. gbak -se ... -m -b -g источник stdout | gbak ... -m -c stdin приёмник
  2. gfix -v ... копия
Понятно, спасибо!

basid писал(а) Fri, 27 September 2024 15:41

Как создавать корректную файловую копию базы рассказывать?
Нет -)

Предыдущая тема: Missing security context required
Следующая тема: Архив "старого" скруля
Переход к форуму:
  


Текущее время: Sun Sep 29 00:27:07 GMT+3 2024

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