Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / системныйтриггер / 7 сообщений из 7, страница 1 из 1
26.03.2003, 19:17
    #32127726
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
Никто так случайно не писал системные триггеры на logon (нужен триггер , который включал бы трассировку на сессию конкретного пользователя когда этот пользователь соединяется с базой).
...
Рейтинг: 0 / 0
26.03.2003, 20:52
    #32127761
gminter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
Код: 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.
CREATE OR REPLACE TRIGGER AfterConnect after logon on database
declare
 s_rec sys.v_$session%rowtype;
 ip_address varchar2( 64 );
 ip_con utl_tcp.connection;
 semafor varchar2( 64 );
 n number;
 s varchar( 512 );
 b boolean;
begin
  select * into s_rec from sys.v_$session t 
      where t.audsid = sys_context('USERENV', 'SESSIONID');     
  if not ((s_rec.username is null) or (s_rec.username = '[color=red]GMINTER[/color]')
  begin
    ip_address := sys_context('USERENV', 'IP_ADDRESS');     
    ip_con := utl_tcp.open_connection(ip_address,  8050 );
    n := utl_tcp.available(ip_con,  0 );
    semafor := utl_tcp.get_text(ip_con, n);
    utl_tcp.close_connection(ip_con);
  exception when others then
  semafor := 'NONE';
  end;
   if semafor <> 'PASSWORD' then
   raise_application_error (- 20000 , 'Вы запустили не ту программу :)');
   end if;  
  end if;   
end;


Смысл примера в чем - у слегка продвинутого пользователя иногда возникает желание полазить со своими правами по базе при помощи SQL-навигатора или чего-то там еще, поэтому после коннекта мы по TCP спрашиваем у клиента-программы ПАРОЛЬ, и если ответ нам не нравится, то вместо коннекта юзер получает Exception )
...
Рейтинг: 0 / 0
26.03.2003, 21:15
    #32127764
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
это , колнечно тоже хорошо , но начальные условия несколько другие:
нужно именно чтобы включалась трассировка .
Пока реализовано след-м образом:
написана процедура, которая устанавливает трассировку:
--------------------------------------------------------------------------
CREATE OR REPLACE procedure logon_proc
authid current_user is
begin
sys.dbms_session.set_sql_trace (true);
end logon_proc;
выполняется - проверено.
есть триггер , который это процедуру выполняет:

CREATE OR REPLACE TRIGGER AfterConnect after logon on database
BEGIN
<>.logon_proc;
END;

трэйс файл формируется (!) , но со след-ми сообщениями:

*** SESSION ID:(273.2707) 2003-03-26 20:27:23.430
Skipped error 604 during the execution of ROMAN.LOGONTRIGGER
*** 2003-03-26 20:27:23.432
ksedmp: internal or fatal error
ORA-00604: error occurred at recursive SQL level 1
ORA-01031: insufficient privileges
ORA-06512: at line 8
Skipped error 604 during the execution of ROMAN.LOGONTRIGGER_LOG
*** 2003-03-26 20:27:23.447
ksedmp: internal or fatal error
ORA-00604: error occurred at recursive SQL level 1
ORA-01031: insufficient privileges
ORA-06512: at line 8
Skipped error 604 during the execution of ROMAN.LOGONIN
*** 2003-03-26 20:27:23.449
ksedmp: internal or fatal error
ORA-00604: error occurred at recursive SQL level 1
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_SESSION", line 86
ORA-06512: at "ROMAN.LOGON_PROC", line 4
ORA-06512: at line 2
...
Рейтинг: 0 / 0
26.03.2003, 21:34
    #32127767
gminter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
Может, попробовать так?

CREATE OR REPLACE procedure logon_proc
authid DEFINER is
.....
...
Рейтинг: 0 / 0
26.03.2003, 23:06
    #32127775
luxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
Что то вроде работает ,
подробности завтра :)
...
Рейтинг: 0 / 0
27.03.2003, 14:52
    #32128202
EthernalWonderer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
gminter: классно придумано! А нельзя ли взглянуть на ответную часть - которая на клиенте отвечает на Ваш TCP-запрос?
...
Рейтинг: 0 / 0
29.03.2003, 11:15
    #32129517
Sergis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системныйтриггер
Po mojemu luche i legche ispolzovatj roli s parolami:
CREATE ROLE MY_ROLE IDENTIFIED BY AA;
GRANT MY_ROLE TO MY_USER;
ALTER USER MY_USER DEFAULT ROLE ROLE1,ROLE2,ROLE3 <-novaja rol (MY_ROLE) ne ukazivajetsa.

V klientskoj chasti, pered tem kak choto delatj vkluchajem etu rol:
set role MY_ROLE identified by AA;
Tak kak juzverj neznajet nash parol, to nemozhet nichego delatj!

p.s. ideja ot gminter - interesnaja
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / системныйтриггер / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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