|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Впрочем, есть один сценарий, в который укладывается и откат генераторов, и ошибки из лога. Это memory corruption в результате сбойного ОЗУ или кривой UDF. Спасибо Задам вопрос админам, насколько это вероятный сценарий для наших виртуальных серверов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:22 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub Dimitry Sibiryakov Впрочем, есть один сценарий, в который укладывается и откат генераторов, и ошибки из лога. Это memory corruption в результате сбойного ОЗУ или кривой UDF. Спасибо Задам вопрос админам, насколько это вероятный сценарий для наших виртуальных серверов И как они UDF выпрямят? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:24 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
ъъъъъ И как они UDF выпрямят? UDF не менялись, как я говорил - код не менялся уже несколько лет. А вот про ОЗУ могут ответить ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:28 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub, а сервер ты обновить не желаешь? У тебя 2.1 совсем древней сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:30 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub IBExpert А почему не рассматривается версия, что кто-то/что-то откатывает значение генератора? Как это возможно и где это можно искать? 1. SET GENERATOR <генератор> TO <значение> 2. SELECT GEN_ID(<генератор>, <отрицательное_значение>) FROM RDB$DATABASE Где искать - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:30 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Тут вот еще одна интересная вещь обнаружилась В ходе "копания" в журналах и записях предыдущих "крайних" специалистов по сопровождению этого имущества, я наткнулся на запись, что совсем недавно в базе был какой-то сбой, что вроде никто не мог зайти в систему, т.к. все валилось на подключении в триггере RDB$TRIGGER7 И этот триггер был "успешно" удален из БД и якобы система заработала. Ну, выглядит это дико. Это как из машины выкинуть какую-то деталь... Но имею то, что имею Насколько я понимаю, это системный триггер и восстановить его из бекапов рабочей БД не получится. Есть какая-то вероятность, что это как-то связано? Не знаю, что это за тригер и на что он влияет - в гугле инфы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:33 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
ъъъъъ, поставил админам задачу обновиться. К сожалению, у нас строгое распределение обязанностей и я не имею права устанавливать какое-либо ПО ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:35 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
При memory corruption в результате сбойного ОЗУ там полБД может накрыться, а не только один несчастный генератор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:38 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Жесть какая-то... БД отресторить имеешь право хоть? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:38 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, если я правильно понял, то бекап/рестор я могу делать и делаю это регулярно согласно протокола. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:40 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Рестор-то ты делаешь (себе или на бэкап-сервер или даже рядышком на боевой), а основную БД на отресторенную заменяешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:42 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Жесть Да ладно. У нас есть клиент, у которого уже несколько лет подряд сервер на "моноблоке" живет, у того моноблока не работает монитор и ucb - порты, работает сетевая карта и кнопка включения, хранятся важные документы в больших объемах, ага... "записку мы каждый год посылаем, руководство решает"... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:46 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, конечно. бекапы делаются по расписанию автоматом с выливанием на FTP а для рестор у меня выделяется время порядка 5 часов, когда я лочу все подключения, делаю бекап актуальной БД, потом делаю рестор в файл рабочей БД и рестартую сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:47 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub я лочу все подключения, делаю бекап актуальной БД delphi_nub бекап/рестор я могу делать и делаю это регулярно согласно протокола. Что, прямо такой протокол - "лочить подключения"? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:49 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub делаю бекап актуальной БД, потом делаю рестор в файл рабочей БД и рестартую сервер Хорошие грабли, качественные. Рукоятка как раз под ети... самые. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:53 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Начал "ковырять" эти системные триггера В списке системных триггеров (в IBExpert включил соответствующую опцию) я не нашел триггера RDB$TRIGGER7 и RDB$TRIGGER_7 Но эти триггера я нашел в таблице RDB$TRIGGERS Это единственные системные триггера, у которых есть данные в поле исходных текстов RDB$TRIGGER_7: Код: sql 1. 2. 3.
RDB$TRIGGER7: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Первый код мне кажется каким-то бессмысленным бредом. А второй похож на вполне реальный триггер регистрации чего-то там в системных таблицах Но самое интересное в поле RDB$TRIGGER_BLR Для триггера без "_" (RDB$TRIGGER7) откомпилированный код выглядит очень похожим на тот же, что и в исходных текстах. Там встречаются такие же имена таблиц и полей А вот для триггера с "_" (RDB$TRIGGER_7) в этом поле очень много текста откомпилированного кода, который совсем не похож на 3 строчки исходного текста И вот там встречаются упоминания этих самых генераторов. У меня сейчас возникли неприятные подозрения, что кто-то в БД внес какой-то зловредный код с таймером, который действительно записывает в генератор уменьшенное значение (как предположил IBExpert ) Вопрос: может кто-то подсказать, что правильно должно быть в этом самом триггер под № 7 И есть ли возможность декомпилировать код из RDB$TRIGGER_BLR ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 15:58 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
О, началась операция на сердце с консультацией по телефону... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:01 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub В списке системных триггеров (в IBExpert включил соответствующую опцию) я не нашел триггера RDB$TRIGGER7 и RDB$TRIGGER_7 Но эти триггера я нашел в таблице RDB$TRIGGERS Значит, кто-то все же чудил в базе. Это не системные триггеры. Системные триггеры имеют RDB$SYSTEM_FLAG = 1, и их точно было бы видно в ветке системных триггеров. Кто-то создал эти триггеры намеренно и замаскировал под системные, ИМХО. Что у RDB$TRIGGER_7 живет в полях RDB$RELATION_NAME, RDB$TRIGGER_TYPE и RDB$TRIGGER_INACTIVE, какие значения? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:13 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub> делаю рестор в файл рабочей БД и рестартую сервер Ну ты гигант, конечно. Как раз про для таких в FAQ жирно выделено, что так делать нельзя. > Начал "ковырять" эти системные триггера То, что IBExpert подсказал - проверь, конечно. Но вообще, не там и не то ковыряешь. Сделай выгрузку метаданных и проверь, есть ли там эти самые RDB$TRIGGER-а. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:20 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Но вообще, не там и не то ковыряешь. Не, все он правильно ковыряет, судя по всему. Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел. В этом триггере что-то делается, но исходный текст триггера заменили на другой. В FB 2.1 с этим проблем нет. Осталось выяснить, на какую таблицу этот триггер повешен и на какое действие. Тогда можно будет попытаться спровоцировать его на срабатывание и посмотреть на результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:27 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
IBExpert Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел. дембельский аккорд? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:33 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nubUDF не менялись, как я говорил - код не менялся уже несколько лет. Это, к сожалению, не означает, что они не гадят в память. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:35 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
IBExpert, похоже на то Насколько я понял, они лезут в одну из таблиц, замаскированную под рабочую таблицу с данными, а затем начинают "чудить". Считывают MAX по айдишнику и GEN_ID(__, 0) Если MAX меньше или равен значению из генератора (на меньше, наверное, проверяют, чтобы не попасть в "процедуру", когда генератор уже инкрементирован, но идентифкатор еще не записался в таблицу), то они вызывают GEN_ID(___, -2000*RAND()) И такой код вызывается на нескольких разных таблицах. Почему чаще всего срабатывает на "протоколе" - пока не понимаю. Возможно, там какая-то формула, которая вычисляет, какой код когда вызывать. Но чтобы это понять, нужно детальней "курить" BLR :) RDB$RELATION_NAME - NULL RDB$TRIGGER_TYPE - 8192 RDB$TRIGGER_INACTIVE - 1 Активирован, но таблицы нет... Возможно, используется какая-то недокументированная возможность? Чисто теоретически, я могу принудительно вызвать выполнение триггера? Есть ли где-то в системных таблицах "связь", которую можно увидеть в разделе зависимостей? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:38 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
delphi_nub RDB$TRIGGER_TYPE - 8192 RDB$TRIGGER_INACTIVE - 1 Активирован, но таблицы нет... Возможно, используется какая-то недокументированная возможность? Чисто теоретически, я могу принудительно вызвать выполнение триггера? Есть ли где-то в системных таблицах "связь", которую можно увидеть в разделе зависимостей? Это триггер на коннект (ON CONNECT). Я и забыл, что в 2.1 они уже были. Таблица ему не нужна, и срабатывает он при каждом коннекте. Но он сейчас деактивирован. Срабатывание вызвать легко: активировать его, и он будет срабатывать при каждом коннекте. Можно сделать копию базы и поиграться с ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:43 |
|
GEN_ID дает повторяющееся значение
|
|||
---|---|---|---|
#18+
Дегтярев Евгений IBExpert Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел. дембельский аккорд? К бабке не ходи. Судя по следующему посту ТС - грохнуть его не дожидаясь перитонитов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 16:43 |
|
|
start [/forum/topic.php?fid=40&msg=39957553&tid=1560352]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
125ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 493ms |
0 / 0 |