Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не работает триггер со сменов схемы  [new]
DKV
Member

Откуда: Москва
Сообщений: 38
Приветствую,
чтоб не заморачиваться с паблик синонимами пытаюсь сделать триггер на вход в базу с подменой текущей схемы пользователю, если у него есть опред. роль.
Собственно сам код.
CREATE OR REPLACE TRIGGER system.ilc_logon
 AFTER
  LOGON
 ON DATABASE
declare
   l_count number(1);
begin
    select count(*) into l_count
      from sys.user_role_privs r 
     where r.granted_role = 'AC_ROLE'
      and r.username = user; 
    
    if ( l_count > 0 ) then
        execute immediate 'alter session set current_schema = AIRCARGO';
    end if;  
end;
Так все равно не видят :(
Юзаю через веб (mod_owa), мож в этом дело? Так он и через навигатор не фурычит. Пробовали и на 8 и на 10...и нифига
18 сен 07, 15:47    [4683720]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
А почему user_role_privs-то?
ЗЫ: У меня первой мыслью возникло бы проверить, какой же l_count мы имеем. Вы это проверяли?
ЗЫ2: Кстати поле default_role не забывайте
ЗЫ3: Вы не учитываете роли, выданные через роли, запрос должен быть иерархическим. Хотя это, конечно, возможно у Вас огранизационно учитано...
18 сен 07, 15:52    [4683756]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
DKV
Member

Откуда: Москва
Сообщений: 38
а что иначе если не user_role_privs?
1.если организовать ручками
т.е. по ходу запустить от юзера
declare
   l_count number(1);
begin
    select count(*) into l_count
      from sys.user_role_privs r 
     where r.granted_role = 'AC_ROLE'
      and r.username = user; 
    
    if ( l_count > 0 ) then
        execute immediate 'alter session set current_schema = AIRCARGO';
    end if;  
end;
,
то ОК. А в триггере не фурычит
2. где не забывать default_role
3. роль автоматом присваивается юзерам при создании через процедуру
ЗЫ. Я с ораклом на ВЫ, поэтому не пинайте сильно.
18 сен 07, 16:55    [4684310]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
а что иначе если не user_role_privs?

Кроме представлений с префиксом USER_, есть еще с префиксами ALL_ и DBA_
18 сен 07, 16:58    [4684344]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
Elic
Member

Откуда:
Сообщений: 29991
DKV
а что иначе если не user_role_privs?
Подсказка: В хранимом коде с AUTHID DEFINER представления USER_* возвращают данные касательно DEFINER-а.
18 сен 07, 17:02    [4684372]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
tru55
а что иначе если не user_role_privs?

Кроме представлений с префиксом USER_, есть еще с префиксами ALL_ и DBA_

Лишее это, КМК.
А вот автору я бы хотел рекомендовать дать пользователю привилегии на таблицы схемы AIRCARGO - смена текущей схемы не означает подмену пользователя.
18 сен 07, 17:04    [4684377]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
andrey_anonymous
tru55
а что иначе если не user_role_privs?

Кроме представлений с префиксом USER_, есть еще с префиксами ALL_ и DBA_

Лишее это, КМК.
А вот автору я бы хотел рекомендовать дать пользователю привилегии на таблицы схемы AIRCARGO - смена текущей схемы не означает подмену пользователя.


Ух ты-ы-ы-ы!!!
Такой абревиатуры я еще не встречал. Енто замена ИМХУ? :)
18 сен 07, 17:08    [4684402]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
tru55
Такой абревиатуры я еще не встречал. Енто замена ИМХУ? :)

Да, это перевод IMHO на родной язык.
https://www.sql.ru/forum/actualsearch.aspx?search=%CA%CC%CA&sin=0&a=&ma=0&bid=3&dt=-1&s=1&so=1
18 сен 07, 17:10    [4684411]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
DKV
Member

Откуда: Москва
Сообщений: 38
1. на сколько я понимаю на all_ и dba_ у юзеров прав нету, да и зачем они ему?
2. Права на таблицы схемы AIRCARGO даны роли AC_ROLE
Elic
Подсказка: В хранимом коде с AUTHID DEFINER представления USER_* возвращают данные касательно DEFINER-а

а можно поподробней плиз...
18 сен 07, 17:18    [4684463]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
если подробнее, тогда предварительный вопрос - с чьими правами выполняются хранимые процедуры / функции / триггера?
18 сен 07, 17:42    [4684657]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
DKV
1. на сколько я понимаю на all_ и dba_ у юзеров прав нету, да и зачем они ему?
А Вам и не надо, чтобы были даны пользователю, главное, чтобы их видел создатель того объекта, который создается (в Вашем случае этот объект - триггер). Сейчас Вы в ролях создателя пытаетесь искать роли юзера, соответственно - это 0 строк (для всех, кроме самого владельца, конечно) :)
DKV
2. где не забывать default_role
Это поле такое в dba_role_privs, которое говорит о том, по умолчанию или нет выдана человеку роль.
DKV
3. роль автоматом присваивается юзерам при создании через процедуру
ИМХО лучше уж написать сразу правильно, чтобы потом при изменении политики партии ничего не править :)
18 сен 07, 17:45    [4684675]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
DKV
Member

Откуда: Москва
Сообщений: 38
Спасибо, заработало с dba_role_privs.
Более-менее логика процесса стала ясна, но без поллитры не разберешь (что сообственно сегодня и подтвердилось: с бодуна все заработало:) )
ЗЫ. Правда пришлось еще вставлять проверку на узер нот ин sys и т.д. В дальнейшем планирую организовать табличку вида юзер-нужная схема и разруливать через нее.
19 сен 07, 13:57    [4688383]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
DKV
Правда пришлось еще вставлять проверку на узер нот ин sys

AFAIR, для пользователя SYS logon-триггер все одно не отрабатывает.
19 сен 07, 14:03    [4688453]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
andrey_anonymous
AFAIR, для пользователя SYS logon-триггер все одно не отрабатывает.
?
19 сен 07, 14:10    [4688521]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
DKV
Member

Откуда: Москва
Сообщений: 38
andrey_anonymous
AFAIR, для пользователя SYS logon-триггер все одно не отрабатывает.

ну не знаю, но когда под сисом через навигатор редактировали этот триггер (без указания схемы), то записывался он в схему AIRCARGO, т.е. сису схема при входе была сменена
19 сен 07, 14:46    [4688775]     Ответить | Цитировать Сообщить модератору
 Re: Не работает триггер со сменов схемы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
andrey_anonymous
DKV
Правда пришлось еще вставлять проверку на узер нот ин sys

AFAIR, для пользователя SYS logon-триггер все одно не отрабатывает.
Он просто не запрещает логин при ошибке в триггере
20 сен 07, 01:53    [4691415]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить