Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры после ресторе требуют перекомпиляции / 16 сообщений из 16, страница 1 из 1
17.12.2015, 16:41
    #39131029
svd
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
17.12.2015, 17:03
    #39131050
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
svdВ общем последние полгода встречаются ошибки во время выполнения хранимых процедур.
что именно тут понимается под ошибками?
...
Рейтинг: 0 / 0
17.12.2015, 17:08
    #39131057
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
svd,

сравнивать нужно BLR, а не исходники
...
Рейтинг: 0 / 0
17.12.2015, 17:19
    #39131074
MrCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
Минутка паранойи. Голосую за то, чтобы в
- метаданные базы сравнивается с эталонной базой
- полученный в результате скрипт потом проигрывается в базе.
- затем для базы делается backup/restore.
второй и третий пункт поменять местами.
...
Рейтинг: 0 / 0
17.12.2015, 17:44
    #39131098
svd
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
17.12.2015, 18:01
    #39131122
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
svdСравнение системных таблиц ничего не дало:
сравнивать надо rdb$procedure_blr, двоично. если они не совпадают, сравнить rdb$procedure_source.

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

предлагаешь через блоб-фильтр blr сравнивать текст? ну, можно.
...
Рейтинг: 0 / 0
18.12.2015, 03:24
    #39131461
DBConstructor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
hvlad, любители изощренных методов могут попробовать прогнать blr через UDF хеш-функцию...
Кстати, а почему бы в FB 3.0 рядом с blr не хранить, к примеру, его SHA-1?
...
Рейтинг: 0 / 0
18.12.2015, 08:45
    #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
18.12.2015, 09:28
    #39131539
DBConstructor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
Firebird 2.1, пока не доводилось использовать. Спасибо, учту.
...
Рейтинг: 0 / 0
18.12.2015, 11:20
    #39131631
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры после ресторе требуют перекомпиляции
DBConstructorhvlad, любители изощренных методов могут попробовать прогнать blr через UDF хеш-функцию...Нахрена козе баян ? Других слов нет.

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

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


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