powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры после ресторе требуют перекомпиляции
16 сообщений из 16, страница 1 из 1
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131029
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Кто-нибудь может объяснить интересную бяку в базе данных?


Firebird 2.5.3 - Superserver. OS WinXP, Win7 и Win8.1.
Базы данных подвергаются апдейту:
- метаданные базы сравнивается с эталонной базой
- полученный в результате скрипт потом проигрывается в базе.
- затем для базы делается backup/restore.

Производится все это с помощью IBEScript.exe.


В общем последние полгода встречаются ошибки во время выполнения хранимых процедур. При попытке найти в чем именно ошибка (с подозрением на некорректные данные) выясняется, что ошибка пропадает после компиляции одной или нескольких процедур в цепочке вызова. Боюсь предположить, что это может и с триггерами происходить.

Интересно еще то, что ошибка остается в файла бэкапа. То есть клиенты мне предают fbk для исследования и ошибка существует до перекомпиляции.
Потом чтоб ее повторить нужно восстановить из бэкапа базу.

Сравнение системных таблиц ничего не дало:

До компиляции
(RDB$PROCEDURE_NAME, RDB$PROCEDURE_ID, RDB$PROCEDURE_INPUTS, RDB$PROCEDURE_OUTPUTS, RDB$SECURITY_CLASS, RDB$OWNER_NAME, RDB$SYSTEM_FLAG, RDB$PROCEDURE_TYPE, RDB$VALID_BLR)

Код: plsql
1.
2.
('SP_INSERT_AC_IN_ARTIKEL_FROM_LP', 62, NULL, 0, 'SQL$204', 'SYSDBA', 0, 2, 1)
('SP_SBOX_BESTANDS_KORREKTUR', 160, 7, 0, 'SQL$302', 'SYSDBA', 0, 1, 1)



После компиляции
Код: plsql
1.
2.
('SP_INSERT_AC_IN_ARTIKEL_FROM_LP', 62, NULL, NULL, 'SQL$204', 'SYSDBA', 0, 2, 1)
('SP_SBOX_BESTANDS_KORREKTUR', 160, 7, NULL, 'SQL$302', 'SYSDBA', 0, 1, 1)



Разница не великая. И даже RDB$VALID_BLR у всех стоит в единице.

Вопрос 1: как можно определить подобную процедуру или триггер чтоб знать, что в базе не все в порядке есть?
Вопрос 2: есть ли способ перекомпилоировать все процедуры и триггеры через консольное соединение?
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131050
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdВ общем последние полгода встречаются ошибки во время выполнения хранимых процедур.
что именно тут понимается под ошибками?
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131057
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

сравнивать нужно BLR, а не исходники
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131074
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Минутка паранойи. Голосую за то, чтобы в
- метаданные базы сравнивается с эталонной базой
- полученный в результате скрипт потом проигрывается в базе.
- затем для базы делается backup/restore.
второй и третий пункт поменять местами.
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131098
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

В этот раз
Код: plsql
1.
2.
3.
Overflow occurred during data type conversion.
conversion error from string "".
At procedure 'SP_SBOX_BESTANDS_KORREKTUR' line: 462, col: 1.




Полгода назад, на Win8.1 выкидывало
arithmetic exception or string truncate
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131122
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdСравнение системных таблиц ничего не дало:
сравнивать надо rdb$procedure_blr, двоично. если они не совпадают, сравнить rdb$procedure_source.

svdвыкидывало arithmetic exception or string truncate
вероятно кто-то пролез мимо "процедуры апдейта метаданных".
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131139
ZeroMQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd...
Базы данных подвергаются апдейту:
- метаданные базы сравнивается с эталонной базой
- полученный в результате скрипт потом проигрывается в базе.
- затем для базы делается backup/restore.
...
ИМХО, первый этап следует выполнять в лабораторных условиях, с последующим тестированием скрипта.
А в базе хранить номер версии структуры (и т.п.).
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131243
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvсравнивать надо rdb$procedure_blr, двоичноЗачем двоично ?
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131274
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

предлагаешь через блоб-фильтр blr сравнивать текст? ну, можно.
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131461
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, любители изощренных методов могут попробовать прогнать blr через UDF хеш-функцию...
Кстати, а почему бы в FB 3.0 рядом с blr не хранить, к примеру, его SHA-1?
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131510
Firebird 2.1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBConstructorпрогнать blr через UDF хеш-функцию...Всем великим песателям нечитателям доки посвящается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select rdb$procedure_name, hash(rdb$procedure_blr) from rdb$procedures;

RDB$PROCEDURE_NAME                               HASH
=============================== =====================
SP_FILL                           2560938303574424812
SP_RECALC_IDX_STAT                3251217699293309164
SP_SHOW_DATA                       376955218796046092
SP_DEACTIVATE_IDX                 4860633064212655244
SP_ACTIVATE_IDX                    247821045770819868
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131539
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird 2.1, пока не доводилось использовать. Спасибо, учту.
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131631
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorhvlad, любители изощренных методов могут попробовать прогнать blr через UDF хеш-функцию...Нахрена козе баян ? Других слов нет.

DBConstructorпочему бы в FB 3.0 рядом с blr не хранить, к примеру, его SHA-1?См выше
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131842
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorFirebird 2.1, пока не доводилось использовать.DBConstructorКстати, а почему бы в FB 3.0 ...
Вот, собственно, всё, что следует знать о DBConstructor
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131872
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, ответь мне на пару элементарных для тебя вопросов - какой алгоритм используется в функции HASH и какова вероятность коллизий? А то, я смотрю, ты дофига умный.
...
Рейтинг: 0 / 0
Хранимые процедуры после ресторе требуют перекомпиляции
    #39131919
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Я не собираюсь отвечать на дебильные вопросы, не имеющие отношения к теме обсуждения.
Хешей, меньших по размеру самих данных, не имеющих коллизий, не бывает, а потому рассуждать, что у вот того алгоритма меньше или больше коллизий может только демагог вроде тебя.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры после ресторе требуют перекомпиляции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]