powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$ATTACHMENTS
25 сообщений из 34, страница 1 из 2
MON$ATTACHMENTS
    #39045440
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть ли способ по mon$attachments определить, какой сервис запущен?
Какие есть ограничения при работе с БД при запуске сервисов?
Правильно ли я понимаю: при запуске backup любая запись из триггера on connect невозможна?

Вообще, есть подробное или более или менее подробное описание работы с mon$attachments? Не увидел этого в langref30, и в README.monitoring_tables.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045451
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

не надо лезть в mon'ы без лишней надобности - затратно это.
Есть файлик $fbhome/fbtrace.conf, и там - секция про services
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
services 
{
	# Do we trace services events or not
	#enabled = false

	# Operations log file name. For use by system audit trace only
	#log_filename = name

	# Maximum size of log file (megabytes). Used by system audit trace for 
	# log's rotation 
	#max_log_size = 0

	# Services filters.
	#
	# Only services whose names fall under given regular expression are 
	# reported in the log.
	#include_filter 

	# Services whose names fall under given regular expression are NOT 
	# reported in the log.
	#exclude_filter 

	# Put service attach, detach and start records
	#log_services = false

	# Put service query records
	#log_service_query = false

	# Put errors happened
	#log_errors false
}


Создайте себе такой .conf, ставьте в нём enabled = true & log_services = true и запускайте: fbtracemgr -se your_server_host/server_port:service_mgr -sta -c <your_trace.conf>

авторпри запуске backup любая запись из триггера on connect невозможна?Никогда такого не замечал. И при n backup тоже.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045452
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegentyесть подробное или более или менее подробное описание работы с mon$attachments? Не увидел этого в langref30,Приложение "Е", примеры Е.1, E.2, E.6, E.7, Е.9 ?
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045466
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, буду копать дальше. Сервис бакапа отваливается на триггере on connect с сообщением о невозможности вставки записи в системную таблицу (далее в сообщении моя таблица логов). Права у триггера на вставку есть. Предположил, что это потому что backup.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045477
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,версию FB сообщи. Ты бэкап чем делаешь? gbak/ nbackup? Если nbackup - попробуй с ключом -T.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045478
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegentyСервис бакапа отваливается на триггере on connect с сообщением о невозможности вставки записи в системную таблицу (далее в сообщении моя таблица логов).
Что за сообщение? И триггер покажи,если не тайна.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045491
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЧто за сообщение? И триггер покажи,если не тайна.я уже расковырял. Действительно - "лезет" :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
recreate table att_log (att_id int, att_name varchar(50), att_user varchar(31), att_addr varchar(25), att_prot varchar(15), att_auth varchar(15), att_dts timestamp default 'now');
commit;
set term ^;
create or alter trigger trg_connect active on connect as
begin
  in autonomous transaction do
  insert into att_log(att_id, att_name, att_user, att_addr, att_prot, att_auth)
  select
       mon$attachment_id
      ,mon$attachment_name
      ,mon$user
      ,mon$remote_address
      ,mon$remote_protocol
      ,mon$auth_method
  from mon$attachments
  --where mon$attachment_id = current_connection
  ;
end
^
set term ;^
commit;

quit;

Теперь пытаемся сделать бекап ("просто" или через сервисы - без разницы):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
gbak -b localhost/3333:C:\FBTESTING\qa\fbt-repo\tmp\E30.fdb C:\FBTESTING\qa\fbt-repo\tmp\E30.fbk

gbak: ERROR:INSERT operation is not allowed for system table ATT_LOG
gbak: ERROR:    At trigger 'TRG_CONNECT' line: 4, col: 3
gbak:Exiting before completion due to errors


fbsvcmgr localhost:service_mgr action_backup dbname C:\FBTESTING\qa\fbt-repo\tmp\E30.fdb bkp_file C:\FBTESTING\qa\fbt-repo\tmp\E30.fbk

INSERT operation is not allowed for system table ATT_LOG
-At trigger 'TRG_CONNECT' line: 4, col: 3
-Exiting before completion due to errors

PS. WI-V3.0.0.32022
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045497
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

что тебе не хватает в описании mon$attachments?
Если сервис не создаёт коннекта к базе, то он не мониторится, например такие сервисы как получение статистики, онлайн валидация или трейс. Для сервисов gbak, nbackup есть внутренние коннекты. Эти коннекты можно поймать в таблицах мониторинга при этом mon$remote_process будет равен NULL, т.к. в этом случае коннект создаётся самим сервером.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045509
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ну этого быть не должно. В трекер.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045515
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

попробуй убрать автономку
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045527
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидя уже расковырял. Действительно - "лезет" :-)

Крут дядька,что сказать :)
p.s. я тебе писал раза два, ты чет в подполье ушел.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045562
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сообщение идентичное сообщению Таблоида, только нет автономной транзакции при вставке. Если вставку отменить (проверить на null remote_pid и ничего не пытаться писать) - всё ок.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045568
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер один из последних троек WI-T6.3.0.31842 Firebird 3.0 Beta 2
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045570
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис - не хватает понимания, при каких условиях в каких полях null. В одних источниках говорится об embedded, в других - о сервисах, в третьих - о более ранней версии клиентской библиотеке, и нигде - всё вместе. Ожидал в langref увидеть, но и там всё очень кратко, структура, и всё.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045573
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

в 2.5 такого не было. В 3.0 вводили защиту системных таблиц. Видимо где-то перемудрили. Думаю таблицы мониторинга здесь не причём. Попробуй просто писать в att_log контекстные переменные, скорее всего ошибка сохранится.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045584
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

на самом деле там много нюансов. В SS есть ещё два служебных коннекта.
Про старые версии библиотек писать задолбаешься. Сейчас то можно, но с прицелом на будущее, количество старых библиотек будет постоянно расти и для каждой чего-то может не отображаться. По-умолчанию подразумевается что подключаешься современными библиотеками.
Про сервисы и служебные коннекты дописать могу. Устроит если будут ограничения только по работе с fbclient 2.5?
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045706
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис - устроит даже если только 3 ограничишься. Хотя в продакшене у всех 2.5.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045727
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0xFF. Gallemarp.s. я тебе писал раза два, ты чет в подполье ушел.хм... не вижу ничего... пробуй снова )
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045737
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
и если это поддается формализации - как определить, когда какой из сервисов работает. Глядя в MON$ATTACHMENTS.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045766
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

никак. Ещё раз повторю. Не все сервисы создают коннекты к БД. Те что создают делают их непосредственно в "ядре", для него они все одинаковые. Косвенно можно определить что за сервис, по выполняемым действиям. Например nbackup точно делает операторы ALTER DATABASE BEGIN BACKUP и ALTER DATABASE END BACKUP.

По хорошему для этого надо бы отдельную MON$ таблицу делать, чтобы определять какие сервисы активные.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045787
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, тогда не критично. Сейчас-то всё началось с облома backup, workaround найден - не писать в лог действия сервисов. Приемлемо. А лог сервисов, видимо, надо в другом месте брать/делать: курить логи заданий, например.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045813
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegenty,

лучше написать в трекер и это исправят (я про непонятную ошибку записи в системную таблицу). Всё таки FB3 ещё Beta.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045821
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил в 2.5.5 - там всё ОК.

Но единственной зацепкой понять по mon$att, что это был сервис, а не "просто коннект", КМК, будет анализ поля mon$remote_process. Для бекапа, проводимого сервисом, оно остается null'ом, в отличие от gbak:
Код: plaintext
1.
2.
3.
4.
5.
6.
ATT_ID                          3
ATT_NAME                        C:\MIX\FIREBIRD\QA\FBT-REPO\TMP\E25.FDB
ATT_USER                        SYSDBA
ATT_ADDR                        127.0.0.1
ATT_PROT                        TCPv4
ATT_PROC                         <null> 
ATT_DTS                         2015-09-08 14:03:38.2030

== vs ==
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ATT_ID                          3
ATT_NAME                        e25
ATT_USER                        SYSDBA
ATT_ADDR                        192.168.43.154
ATT_PROT                        TCPv4
ATT_PROC                        C:\MIX\firebird\fb25\bin\gbak.exe
ATT_DTS                         2015-09-08 14:00:30.4840
(скрипт см выше; для проверки после выполнения бекапа ввести: echo set list on; set count on; select * from att_log where att_id is distinct from current_connection; quit; | C:\%fb25home%\bin\isql /port:alias )


2 olegenty : в трекер сходишь ? (надо бы баг в 3.0 затолкать туда)
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045873
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНо единственной зацепкой понять по mon$att, что это был сервис, а не "просто коннект", КМК, будет анализ поля mon$remote_process. Для бекапа, проводимого сервисом, оно остается null'ом, в отличие от gbak
NULL там будет для любого embedded-коннекта, сервисы это лишь частный случай оного.

Вроде проскакивало предложение идентификации сервисных коннектов через отдельное поле в мониторинге. Можно попробовать это сделать, правда не факт что для всех сервисов это будет возможно.

Насчет вывода списка активных сервисов через мониторинг - это невозможно архитектурно, мониторинг видит только что относится к текущей базе, а сервисы это вещь сбоку, в общем случае к БД отношения не имеющая.
...
Рейтинг: 0 / 0
MON$ATTACHMENTS
    #39045915
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrВроде проскакивало предложение идентификации сервисных коннектов через отдельное поле в мониторинге.Сделать спец. опциональный тег для юзерской идентификации приложения : isc_dbp_appname

Юзеры смогут своё приложение точнее идентифицировать (например писать туда имя и номер версии), а сервисы смогут своё имя туда писать.

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


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