Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите настроить логирование в триггере / 10 сообщений из 10, страница 1 из 1
12.04.2018, 12:29
    #39629002
serg_warlock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
fb 2.5.8

в триггере before update добавляю следующую конструкцию.

---------------------------------------------------------
insert into rkc_area_logs (
LODGINGS_ID,
start_period_old,
start_period_new,
Living_area_old,
Living_area_new,
total_area_old,
total_area_new,
DATE_upd,
ip_address,
process)
Select new.lodgings_id,
old.start_period,
new.start_period,
old.living_area,
new.living_area,
old.total_area,
new.total_area,
current_date,
a.MON$REMOTE_ADDRESS,
a.MON$REMOTE_PROCESS
from MON$TRANSACTIONS t
join MON$ATTACHMENTS a on t.MON$ATTACHMENT_ID=a.MON$ATTACHMENT_ID
where t.MON$TRANSACTION_ID= current_transaction;

---------------------------------------------------------

Тестируюсь в IBExperte, при апдейте целевой таблицы запись в таблицу логов идет, и MON$REMOTE_ADDRESS такой как надо 192.168.0.25,
а при апдейте целевой таблицы из сторонней программы, в MON$REMOTE_ADDRESS пишется 127.0.0.1. Хотя, сторонняя программа запускается с моей же машины и адрес должен быть 192.168.0.25.
...
Рейтинг: 0 / 0
12.04.2018, 12:59
    #39629046
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
serg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.
Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут.
А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции.
serg_warlockХотя, сторонняя программа запускается с моей же машины и адрес должен быть 192.168.0.25.
не должен. как раз должен быть 127.0.0.1, что означает коннект с этой же машины, где и сервер.
...
Рейтинг: 0 / 0
12.04.2018, 13:28
    #39629085
serg_warlock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
kdv,
Спасибо. попробовал на на базе с другой машины все получилось :)
...
Рейтинг: 0 / 0
12.04.2018, 19:35
    #39629432
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
kdvserg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.
Для примера, в зависимости от системы, на сотне и больше пользователей время получения снимка MON$ сервером может длиться от нескольких секунд до нескольких минут.
А снимок будет делаться каждый раз, когда такой триггер сработает в новой транзакции.

Можно сделать отдельную таблицу юзеров и писать в лог только ИД, либо в on connect сохранить нужные реквизиты в Set_Context и потом уже брать их оттуда
...
Рейтинг: 0 / 0
13.04.2018, 09:16
    #39629621
serg_warlock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
Василий 2, в данном конкретном случае логировал справочную таблицу, которую правят редко. Да и пользователей у которых есть возможность это сделать всего 15. Так что задача пока решена. Логировать большие таблицы, с которыми работают все пока не нужно. :) Вариант с контекстными переменными мне понравился. Если наклонят логировать большие таблицы попробую его реализовать
...
Рейтинг: 0 / 0
16.04.2018, 03:53
    #39630554
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
kdvserg_warlockcurrent_date,
a.MON$REMOTE_ADDRESS,

не надо так делать. Обращение к mon$ ресурсоемко, при увеличении количества пользователей время обращения будет только увеличиваться, а если в эту таблицу часто вставляются записи, то с производительностью будет вообще крандец.


В справке для 2.5.4 есть такая штука как:

Код: plsql
1.
RDB$GET_CONTEXT ('SYSTEM', 'CLIENT_ADDRESS');


CLIENT_ADDRESS:

- Для TCPv 4 – IP адрес,
- для XNET – локальный ID процесса.
- Для остальных случаев NULL.
...
Рейтинг: 0 / 0
16.04.2018, 14:21
    #39630821
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
fraks,

насколько понимаю, эти переменные заполняет клиентская либа "руками" ???

Т.е. если вдруг программа соединяется через fbclient.dll 1.x ( или аналогично старые jaybird/NetProvider ), то эти переменные останутся пустыми?
...
Рейтинг: 0 / 0
16.04.2018, 15:07
    #39630866
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
Arioch,

MON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером и никак не зависит от версии клиента. Как и MON$REMOTE_PROTOCOL. А вот REMOTE_PID, REMOTE PROCESS "заполняются" клиентом.
...
Рейтинг: 0 / 0
16.04.2018, 15:46
    #39630906
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
dimitrMON$REMOTE_ADDRESS (он же RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')) "заполняется" сервером

Любопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ?
Паузы сравнимой со временем фиксации MON-таблицы не будет ?
...
Рейтинг: 0 / 0
16.04.2018, 16:18
    #39630936
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить логирование в триггере
AriochЛюбопытно. А "RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS')" в каком смысле "он же" ?
это разные механизмы получения одной и той же информации

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


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