powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Чтение из mon$attachments для НЕ sysdba
10 сообщений из 10, страница 1 из 1
Чтение из mon$attachments для НЕ sysdba
    #38321161
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5.2
Необходимо получить
Код: sql
1.
select cast(list(mon$attachment_id) as varchar(1000)) from mon$attachments


Если выполняю под SYSDBA, то все хорошо. Все вижу.
Если же под другим пользователем, то уже виден только свой коннект.

Создал процедуру, все работает. Но мне кажется, что это костыль. Есть ли другой способ получать данные из MON$ATTACHMENTS?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create or alter procedure get_active_connections
returns (
    conn varchar(1000))
AS
begin
  for execute statement ('select cast(list(mon$attachment_id) as varchar(1000)) from mon$attachments')
      as user 'SYSDBA' password 'masterkey'
  into conn do
    suspend;
end
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321165
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийЕсли же под другим пользователем, то уже виден только свой коннект.

Не так. Видны все коннекты этого пользователя. И это - правильно. Ибо безопасность рулит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321177
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так задумано, by design.
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321183
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНе так. Видны все коннекты этого пользователя. И это - правильно. Ибо безопасность рулит.

Понятно.
А по сути вопроса: приведенная мной процедура - единственный способ получить данные из mon$attachments ?

Объясню зачем.

Есть таблица блокировок ресурса.

Код: sql
1.
2.
3.
4.
5.
CREATE TABLE RES_LOCK (
    ID_RES       INT NOT NULL, -- Ресурс
    TIME_END     TIMESTAMP,   -- Время жизни блокировки
    LOCK_CONNECT INT DEFAULT CURRENT_CONNECTION
)



и есть процедура отображения блокировок
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or alter procedure get_lock_res
returns (
    id_res integer,
    time_end timestamp)
AS
declare variable c varchar(1000);
declare variable t timestamp = 'now';
begin
  select ','||conn||',' from get_active_connections into c;

  for select id_res, time_end from res_lock
      where time_end > :t and :c containing ','||:lock_connect||','
  into id_res, time_end do
    suspend;
end


Снятие своей блокировки (и очистка устаревших)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or alter procedure clear_lock_res (
    id_res integer = null)
AS
declare variable c varchar(10000);
declare variable t timestamp = 'now';
begin
  select ','||conn||',' from get_active_connections into c;

  -- Удаляем неактивные или устаревшие блокировки
  delete from res_lock where time_end < :t or :c not containing ','||lock_connect||',';

  delete from room_lock where id_res = :id_res and lock_connect = current_connection;
end


Установка блокировки ресурса (по-умолчанию на 15 минут)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or alter procedure set_lock_res (
    id_res integer,
    minutes integer = 15)
AS
declare variable id_item int;
declare variable t timestamp = 'now';
begin
  execute procedure clear_lock_res(:id_res);

  begin
    insert into room_res(id_room, TIME_END)
    values(:id_res, dateadd(:minutes minute to :t));
  when any do
    exception userexception 'Ресурс заблокирован';
  end
end


Проверка по mon$attachments дает возможность отсечь отвалившиеся соединения
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321187
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийОбъясню зачем.
Лучше объясни почему не использовать штатные механизмы блокировок, которые отваливаются
автоматически.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321206
Гаджимурадов РустамТак задумано, by design.
А почему не дать для пользователя с правами роли RDB$ADMIN?
Или это в в тройке будет. Было удобно и для разработчиков, которые не имеют прав DBA рабочей БД
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321209
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молочный АлександрБыло удобно и для разработчиков, которые не имеют прав DBA рабочей БДУдобно должно быть в специально отведённом месте.
Если в рабочей базе у разработчика нет прав DBA, то у приложения их точно не будет.
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #38321278
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЛучше объясни почему не использовать штатные механизмы блокировок, которые отваливаются
автоматически.
Мне важно заблокировать на определенное время, иметь список заблокированного, кто заблокировал и зачем.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Чтение из mon$attachments для НЕ sysdba
    #39153806
chAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Молочный АлександрА почему не дать для пользователя с правами роли RDB$ADMIN?
Поддерживаю. Может, не всем админам, но какой-то способ делегировать этот доступ нужен (grant на rdb$attachments?)
Иначе вся эта паранойя приводит к тому, что скрипт мониторинга запускается от SYSDBA, что ни разу не безопасно.
...
Рейтинг: 0 / 0
Чтение из mon$attachments для НЕ sysdba
    #39153849
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chAlМолочный АлександрА почему не дать для пользователя с правами роли RDB$ADMIN?
Поддерживаю.
не надо поддерживать, надо попробовать. Полный доступ к мониторингу всегда был доступен для роли RDB$ADMIN.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Чтение из mon$attachments для НЕ sysdba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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