powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / triiger after log on
18 сообщений из 18, страница 1 из 1
triiger after log on
    #39293840
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собсна нарисовал триггер, который должен ругаться, но увы, raise не хочет работать,где допустил ошибку?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace trigger logon
  after logon on colvir.database
declare
  p_session_user varchar2(10);
  p_ip_address varchar2(15);
begin
  p_session_user := upper(sys_context('userenv', 'session_user'));
  if p_session_user = 'USR_TEST' then
    raise_application_error(-20002, 'LOGON ERROR', true);
  end if;
end;
...
Рейтинг: 0 / 0
triiger after log on
    #39293849
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cydiaдолжен ругаться, но увы, raise не хочет работатьRTFM/STFF privilege ADMINISTER DATABASE TRIGGER
...
Рейтинг: 0 / 0
triiger after log on
    #39293851
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем схема от юзера отличается, знаете?

У вас триггер на логон в схему colvir.database
а проверяете юзера 'USR_TEST'
...
Рейтинг: 0 / 0
triiger after log on
    #39293852
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,

ничем, этот юзер в этой схеме есть.
...
Рейтинг: 0 / 0
triiger after log on
    #39293855
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Код: plsql
1.
grant administer database trigger to USR_TEST;


не помогло
...
Рейтинг: 0 / 0
triiger after log on
    #39293878
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cydia этот юзер в этой схеме есть.
...
Рейтинг: 0 / 0
triiger after log on
    #39293890
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CydiaFogel,

ничем, этот юзер в этой схеме есть.

...
Рейтинг: 0 / 0
triiger after log on
    #39293903
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в чём разница между схемой, экземпляром БД и юзером тоже знаете?
а триггер логон вешается на старт БД или на коннект к схеме, тоже знаете?
...
Рейтинг: 0 / 0
triiger after log on
    #39293961
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,

триггер логон вешается на коннект к схеме,т.е. моя задача отсечь определенный круг пользователей.
подскажите, что не так сделано в моем тригере?
...
Рейтинг: 0 / 0
triiger after log on
    #39293969
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cydiaмоя задача отсечь определенный круг пользователей.

Код: plsql
1.
revoke create session from USR_TEST
...
Рейтинг: 0 / 0
triiger after log on
    #39293970
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
triiger after log on
    #39293975
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,
не все так просто, забыл еще добавить, что с определенных IP машин доступ разрешен., поэтому raise полюбому тут нужен
...
Рейтинг: 0 / 0
triiger after log on
    #39293996
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CydiaElic,

Код: plsql
1.
grant administer database trigger to USR_TEST;


не помогло

Ты бы доку покурил перед тем как сo скал прыгать. С точностью до наоборот. Elic намекнул на то что тот у кого есть administer database trigger - тот прoходит без пропуска.

SY.
...
Рейтинг: 0 / 0
triiger after log on
    #39294003
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CydiaFogel,
не все так просто, забыл еще добавить, что с определенных IP машин доступ разрешен., поэтому raise полюбому тут нужен
а зачем в таком случае райз?!
вам же надо знать, кто пытается пробраться? ну а вдруг злоумышленники/недобросовестные ддосить начнут? чтобы знать, кто и когда и связать причину со следствием.
я бы реализовал следующим образом: при логоне сохранял необходимые данные из syscontext в табличку аудита, сверял HOST с разрешёнными и делал принудительный disconnect сессии, кому нельзя.
...
Рейтинг: 0 / 0
triiger after log on
    #39294540
Cydia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogel,
к сожалению, этот вариант не сработал

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE TRIGGER my_after_logon
AFTER LOGON ON DATABASE
DECLARE
   usernm VARCHAR2(50);
   sid    NUMBER;
   serial NUMBER;
   v_JobNum NUMBER;
   pragma autonomous_transaction;
BEGIN
 
   SELECT sid,serial# INTO sid,serial
      FROM v$session WHERE
audsid=SYS_CONTEXT('userenv','sessionid');
 
    IF usernm='USR_TEST' THEN
  dbms_job.submit(v_JobNum
        ,'begin
            execute immediate
             (''alter system kill session '''''||sid||''''''');
         end;'
     );
     commit;
 END; 
...
Рейтинг: 0 / 0
triiger after log on
    #39294602
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CydiaFogel,
к сожалению, этот вариант не сработал

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE TRIGGER my_after_logon
AFTER LOGON ON DATABASE
DECLARE
   usernm VARCHAR2(50);
   sid    NUMBER;
   serial NUMBER;
   v_JobNum NUMBER;
   pragma autonomous_transaction;
BEGIN
 
   SELECT sid,serial# INTO sid,serial
      FROM v$session WHERE
audsid=SYS_CONTEXT('userenv','sessionid');
 
    IF usernm='USR_TEST' THEN
  dbms_job.submit(v_JobNum
        ,'begin
            execute immediate
             (''alter system kill session '''''||sid||''''''');
         end;'
     );
     commit;
 END; 


как-то страшно всё
serial потерял и вообще много лишнего
посмотри здесь или здесь или здесь
...
Рейтинг: 0 / 0
triiger after log on
    #39294674
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CydiaFogel,
к сожалению, этот вариант не сработал


Последний совет - кури доку. Почитай про триггеры и в частности про Event Attribute Functions, Event Attribute Functions for Client Event Triggers, Event Attribute Functions for Database Event Triggers и только потом ваяй. Все прекрасно работает:

Код: plsql
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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
SQL> create or replace
  2    trigger after_logon
  3      after logon
  4      on database
  5      begin
  6          if ora_login_user = 'USR_TEST'
  7            then
  8              raise_application_error(-20002, 'LOGON ERROR', true);
  9          end if;
 10  end;
 11  /

Trigger created.

SQL> create user u1 identified by u1
  2  /

User created.

SQL> grant create session to u1
  2  /

Grant succeeded.

SQL> create user usr_test identified by usr_test
  2  /

User created.

SQL> grant create session to usr_test
  2  /

Grant succeeded.

SQL> connect u1@pdb1sol12/u1
Connected.
SQL> connect usr_test@pdb1sol12/usr_test
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20002: LOGON ERROR
ORA-06512: at line 4


Warning: You are no longer connected to ORACLE.
SQL> connect scott@pdb1sol12
Enter password: *****
Connected.
SQL> grant administer database trigger to usr_test
  2  /

Grant succeeded.

SQL> connect usr_test@pdb1sol12/usr_test
Connected.
SQL> 



SY.
...
Рейтинг: 0 / 0
triiger after log on
    #39294690
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogelа зачем в таком случае райз?!
вам же надо знать, кто пытается пробраться? ну а вдруг злоумышленники/недобросовестные ддосить начнут? чтобы знать, кто и когда и связать причину со следствием.
я бы реализовал следующим образом: при логоне сохранял необходимые данные из syscontext в табличку аудита, сверял HOST с разрешёнными и делал принудительный disconnect сессии, кому нельзя.отлуп в триггере не противоречит аудиту.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / triiger after log on
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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