powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GEN_ID дает повторяющееся значение
25 сообщений из 108, страница 3 из 5
GEN_ID дает повторяющееся значение
    #39957489
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Впрочем, есть один сценарий, в который укладывается и откат генераторов, и ошибки из лога.
Это memory corruption в результате сбойного ОЗУ или кривой UDF.


Спасибо
Задам вопрос админам, насколько это вероятный сценарий для наших виртуальных серверов
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957491
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub
Dimitry Sibiryakov

Впрочем, есть один сценарий, в который укладывается и откат генераторов, и ошибки из лога.
Это memory corruption в результате сбойного ОЗУ или кривой UDF.


Спасибо
Задам вопрос админам, насколько это вероятный сценарий для наших виртуальных серверов

И как они UDF выпрямят?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957495
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
И как они UDF выпрямят?


UDF не менялись, как я говорил - код не менялся уже несколько лет.

А вот про ОЗУ могут ответить
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957497
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub,

а сервер ты обновить не желаешь? У тебя 2.1 совсем древней сборки.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957498
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nub
IBExpert
А почему не рассматривается версия, что кто-то/что-то откатывает значение генератора?


Как это возможно и где это можно искать?


1. SET GENERATOR <генератор> TO <значение>
2. SELECT GEN_ID(<генератор>, <отрицательное_значение>) FROM RDB$DATABASE

Где искать - не знаю.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957504
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут вот еще одна интересная вещь обнаружилась
В ходе "копания" в журналах и записях предыдущих "крайних" специалистов по сопровождению этого имущества, я наткнулся на запись, что совсем недавно в базе был какой-то сбой, что вроде никто не мог зайти в систему, т.к. все валилось на подключении в триггере RDB$TRIGGER7

И этот триггер был "успешно" удален из БД и якобы система заработала.
Ну, выглядит это дико. Это как из машины выкинуть какую-то деталь... Но имею то, что имею


Насколько я понимаю, это системный триггер и восстановить его из бекапов рабочей БД не получится.


Есть какая-то вероятность, что это как-то связано? Не знаю, что это за тригер и на что он влияет - в гугле инфы нет.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957506
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ, поставил админам задачу обновиться.
К сожалению, у нас строгое распределение обязанностей и я не имею права устанавливать какое-либо ПО
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957508
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При memory corruption в результате сбойного ОЗУ там полБД
может накрыться, а не только один несчастный генератор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957509
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть какая-то...

БД отресторить имеешь право хоть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957512
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам, если я правильно понял, то бекап/рестор я могу делать и делаю это регулярно согласно протокола.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957513
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рестор-то ты делаешь (себе или на бэкап-сервер или даже рядышком на боевой),
а основную БД на отресторенную заменяешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957517
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Жесть

Да ладно.
У нас есть клиент, у которого уже несколько лет подряд сервер на "моноблоке" живет, у того моноблока не работает монитор и ucb - порты, работает сетевая карта и кнопка включения, хранятся важные документы в больших объемах, ага... "записку мы каждый год посылаем, руководство решает"...
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957518
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам, конечно.
бекапы делаются по расписанию автоматом с выливанием на FTP
а для рестор у меня выделяется время порядка 5 часов, когда я лочу все подключения, делаю бекап актуальной БД, потом делаю рестор в файл рабочей БД и рестартую сервер
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957521
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub
я лочу все подключения, делаю бекап актуальной БД

delphi_nub
бекап/рестор я могу делать и делаю это регулярно согласно протокола.

Что, прямо такой протокол - "лочить подключения"?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957526
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nub

делаю бекап актуальной БД, потом делаю рестор в файл рабочей БД и рестартую сервер


Хорошие грабли, качественные. Рукоятка как раз под ети... самые.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957531
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал "ковырять" эти системные триггера

В списке системных триггеров (в IBExpert включил соответствующую опцию) я не нашел триггера RDB$TRIGGER7 и RDB$TRIGGER_7

Но эти триггера я нашел в таблице RDB$TRIGGERS

Это единственные системные триггера, у которых есть данные в поле исходных текстов

RDB$TRIGGER_7:
Код: sql
1.
2.
3.
BEGIN 
  CONNECTION_ID = 0; 
END



RDB$TRIGGER7:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
AS
BEGIN
  INSERT INTO IBE$STATE(IBE$ATTID, IBE$SRVID, IBE$ADDR, IBE$PROC)
  SELECT
       MON$ATTACHMENT_ID
      ,MON$SERVER_PID
      ,MON$REMOTE_ADDRESS
      ,MON$REMOTE_PROCESS
  FROM MON$ATTACHMENTS
  WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION
  ;
END



Первый код мне кажется каким-то бессмысленным бредом.
А второй похож на вполне реальный триггер регистрации чего-то там в системных таблицах

Но самое интересное в поле RDB$TRIGGER_BLR
Для триггера без "_" (RDB$TRIGGER7) откомпилированный код выглядит очень похожим на тот же, что и в исходных текстах. Там встречаются такие же имена таблиц и полей

А вот для триггера с "_" (RDB$TRIGGER_7) в этом поле очень много текста откомпилированного кода, который совсем не похож на 3 строчки исходного текста
И вот там встречаются упоминания этих самых генераторов.

У меня сейчас возникли неприятные подозрения, что кто-то в БД внес какой-то зловредный код с таймером, который действительно записывает в генератор уменьшенное значение (как предположил IBExpert )

Вопрос: может кто-то подсказать, что правильно должно быть в этом самом триггер под № 7
И есть ли возможность декомпилировать код из RDB$TRIGGER_BLR ?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957534
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О, началась операция на сердце с консультацией по телефону...
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957541
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, какие значения?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957544
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nub> делаю рестор в файл рабочей БД и рестартую сервер

Ну ты гигант, конечно. Как раз про для таких
в FAQ жирно выделено, что так делать нельзя.

> Начал "ковырять" эти системные триггера

То, что IBExpert подсказал - проверь, конечно.
Но вообще, не там и не то ковыряешь.
Сделай выгрузку метаданных и проверь,
есть ли там эти самые RDB$TRIGGER-а.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957549
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам

Но вообще, не там и не то ковыряешь.


Не, все он правильно ковыряет, судя по всему. Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел.
В этом триггере что-то делается, но исходный текст триггера заменили на другой. В FB 2.1 с этим проблем нет.
Осталось выяснить, на какую таблицу этот триггер повешен и на какое действие.
Тогда можно будет попытаться спровоцировать его на срабатывание и посмотреть на результат.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957553
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert
Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел.

дембельский аккорд?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957557
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nubUDF не менялись, как я говорил - код не менялся уже несколько лет.

Это, к сожалению, не означает, что они не гадят в память.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957558
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, похоже на то
Насколько я понял, они лезут в одну из таблиц, замаскированную под рабочую таблицу с данными, а затем начинают "чудить".
Считывают MAX по айдишнику и GEN_ID(__, 0)
Если MAX меньше или равен значению из генератора (на меньше, наверное, проверяют, чтобы не попасть в "процедуру", когда генератор уже инкрементирован, но идентифкатор еще не записался в таблицу), то они вызывают GEN_ID(___, -2000*RAND())

И такой код вызывается на нескольких разных таблицах. Почему чаще всего срабатывает на "протоколе" - пока не понимаю. Возможно, там какая-то формула, которая вычисляет, какой код когда вызывать.
Но чтобы это понять, нужно детальней "курить" BLR :)

RDB$RELATION_NAME - NULL
RDB$TRIGGER_TYPE - 8192
RDB$TRIGGER_INACTIVE - 1

Активирован, но таблицы нет... Возможно, используется какая-то недокументированная возможность?
Чисто теоретически, я могу принудительно вызвать выполнение триггера?
Есть ли где-то в системных таблицах "связь", которую можно увидеть в разделе зависимостей?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957560
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nub

RDB$TRIGGER_TYPE - 8192
RDB$TRIGGER_INACTIVE - 1

Активирован, но таблицы нет... Возможно, используется какая-то недокументированная возможность?
Чисто теоретически, я могу принудительно вызвать выполнение триггера?
Есть ли где-то в системных таблицах "связь", которую можно увидеть в разделе зависимостей?


Это триггер на коннект (ON CONNECT). Я и забыл, что в 2.1 они уже были. Таблица ему не нужна, и срабатывает он при каждом коннекте. Но он сейчас деактивирован.
Срабатывание вызвать легко: активировать его, и он будет срабатывать при каждом коннекте.
Можно сделать копию базы и поиграться с ней.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957561
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений
IBExpert
Кто-то создал триггер RDB$TRIGGER_7 с закосом под системный. В базах системного триггера с таким именем нет, я посмотрел.

дембельский аккорд?


К бабке не ходи. Судя по следующему посту ТС - грохнуть его не дожидаясь перитонитов.
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 3 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GEN_ID дает повторяющееся значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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