Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / user_role_privs vs dbms_session.is_role_enabled / 11 сообщений из 11, страница 1 из 1
23.09.2016, 11:52
    #39314097
user_role_privs vs dbms_session.is_role_enabled
В одной сессии делаю запросы
Код: plsql
1.
2.
select * from user_role_privs urp
where urp.GRANTED_ROLE = 'MY_COOL_ROLE'


В результате получаю
Код: plaintext
1.
2.
3.
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
A                              MY_COOL_ROLE                  NO           YES          NO

Потом выполняю

Код: plsql
1.
2.
3.
4.
5.
6.
7.
begin
  if dbms_session.is_role_enabled('MY_COOL_ROLE') then
    dbms_output.put_line('ЕСТЬ ТАКАЯ РОЛЬ');
  else
    dbms_output.put_line('НЕТ ТАКОЙ РОЛИ');   
  end if;
end;



И получаю что нету такой роли
Юзер не имеет доступ к табличкам которые грантованы данной роли

Как такое может быть?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
PL/SQL Release 11.2.0.2.0 - Production
CORE	11.2.0.2.0	Production
TNS for 32-bit Windows: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production
...
Рейтинг: 0 / 0
23.09.2016, 11:59
    #39314103
user_role_privs vs dbms_session.is_role_enabled
Хочу добавить что такое произошло у всех юзеров, у которых была эта роль, после того, как роли грантанули еще пару объектов.
При этом у юзеров есть и другие роли, которые тоже меняли и которые ведут себя нормально
...
Рейтинг: 0 / 0
23.09.2016, 12:11
    #39314122
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
user_role_privs vs dbms_session.is_role_enabled
Чтобы роль работала, она должна быть не просто грантована, но и включена. Включенные в данный момент в сессии роли сама сессия может увидеть в SESSION_ROLES.
...
Рейтинг: 0 / 0
23.09.2016, 12:49
    #39314183
user_role_privs vs dbms_session.is_role_enabled
Если вы по SET_ROLE
То в сессии не было таких вызовов
...
Рейтинг: 0 / 0
23.09.2016, 13:03
    #39314196
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
user_role_privs vs dbms_session.is_role_enabled
1) Может, в логон триггере какие-то манипуляции с ролями?
2) Версия оракла сырая, наверняка еще и непатченая. Вполне возможно, баг.
...
Рейтинг: 0 / 0
26.09.2016, 14:04
    #39315607
user_role_privs vs dbms_session.is_role_enabled
В session_roles действительно не было нужной роли
Код: plsql
1.
alter user ИМЯ_ПОЛЬЗОВАТЕЛЯ default role ALL;


помогло

Не подскажете, если ли способ выяснить, какие роли отключены для пользователя (ну кроме как логинится под ним и смотреть в session_roles)
...
Рейтинг: 0 / 0
30.09.2016, 15:51
    #39318788
user_role_privs vs dbms_session.is_role_enabled
Проблема начала повторяться и на патченой 11G SE 11.2.0.4.0
Каким то магическим образом у юзера пропадает роль.
Ни триггеров ни какого то другого кода не обнаружено.
Проблема замечена после перекомпиляции некоторых доступных через роль вьюх (вьюхи юзают контекст сессии, не знаю, важно ли это) во время активной работы под проблемным пользователем
...
Рейтинг: 0 / 0
30.09.2016, 16:26
    #39318828
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
user_role_privs vs dbms_session.is_role_enabled
А сколько вообще ролей у проблемного юзверя?
...
Рейтинг: 0 / 0
03.10.2016, 14:42
    #39319666
user_role_privs vs dbms_session.is_role_enabled
всего 7 ролей
...
Рейтинг: 0 / 0
03.10.2016, 14:48
    #39319671
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
user_role_privs vs dbms_session.is_role_enabled
Вроде как (поп первым постам) не твой случай, но все же распространенные грабли:
Некоторые думают, что назначив роль юзеру, а потом сказав alter user ... default role <новая_роль> они добавляют роль к списку дефолтовых (включающихся при логине)
Но они при этом заменяют весь список (или ALL) только на эту роль
...
Рейтинг: 0 / 0
03.10.2016, 14:50
    #39319675
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
user_role_privs vs dbms_session.is_role_enabled
Да, и еще с какой-то версии роли, защищенные паролем нельзя установить в качестве дефолтовой
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / user_role_privs vs dbms_session.is_role_enabled / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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