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

Откуда:
Сообщений: 450
простой вроде вопрос... получить список всех ролей, которые пользователь способен получить через set role. Представления user_role_privs и role_role_privs дают только один уровень вложенности, а session_roles вообще не к месту.

Поэтому кроме такого:
select granted_role from user_role_privs
union select granted_role from role_role_privs
 start with role IN (select granted_role from user_role_privs) 
 connect by prior granted_role=role;

ничего не приходит в голову.
Может есть вьюшка или пакет для этого?

извиняюсь, если это где-то обсуждалось
5 окт 08, 01:25    [6266185]     Ответить | Цитировать Сообщить модератору
 Re: список ролей, доступных через set role.  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
SELECT  GRANTED_ROLE
  FROM  DBA_ROLE_PRIVS
  START WITH GRANTEE = 'user_name'
  CONNECT BY GRANTEE = PRIOR GRANTED_ROLE
/

SY.
5 окт 08, 03:38    [6266227]     Ответить | Цитировать Сообщить модератору
 Re: список ролей, доступных через set role.  [new]
Пардон, поправка
Guest
SELECT DISTINCT GRANTED_ROLE
  FROM  DBA_ROLE_PRIVS
  START WITH GRANTEE = USER
  CONNECT BY GRANTEE = PRIOR GRANTED_ROLE
18 июн 09, 15:37    [7316105]     Ответить | Цитировать Сообщить модератору
 Re: список ролей, доступных через set role.  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
Пардон, поправка


Your поправка results in список всех ролей, которые logged-in user способен получить через set role. By substituting 'user_name' wth desired user name you will get получить список всех ролей, которые any particular пользователь способен получить через set role.

SY.
P.S. Necrophilia attack?

Сообщение было отредактировано: 18 июн 09, 20:19
18 июн 09, 20:18    [7317747]     Ответить | Цитировать Сообщить модератору
 Re: список ролей, доступных через set role.  [new]
Elic
Member

Откуда:
Сообщений: 29979
SY
P.S. Necrophilia attack?
Но DISTINCT всё же имеет смысл :)
18 июн 09, 20:24    [7317764]     Ответить | Цитировать Сообщить модератору
 Re: список ролей, доступных через set role.  [new]
Пардон, поправка
Guest
SY
Пардон, поправка


Your поправка results in список всех ролей, которые logged-in user способен получить через set role. By substituting 'user_name' wth desired user name you will get получить список всех ролей, которые any particular пользователь способен получить через set role.

SY.
P.S. Necrophilia attack?

Добрый день ув. форумчане Oracle. Дело в том что я сейчас увлечён написанием "иерархических" запросов с использованием connect by. Чисто случайно нашёл данный пример на форуме. Взял его себе, и вместо 'user_name' подставил USER для простоты. Но из за непростой иерархии ролей для моего пользователя данный запрос выдал мне повторения некоторых ролей. Далее я исправил у себя запрос добавив distinct и решил написать это мелкое исправление в форум, хотя-бы для таких же как и я. Но забыв про изначальную форму запроса я скопировал свой запрос с PL-ки и вставил его в форум. Вот и вышла такая-се ошибка.
Сори за оффтоп.
Пардон за ненамеренную ошибку и всё-же как заметил SY правильным вариантом запроса будет следующий:
SELECT DISTINCT GRANTED_ROLE
  FROM  DBA_ROLE_PRIVS
  START WITH GRANTEE = 'user_name'
  CONNECT BY GRANTEE = PRIOR GRANTED_ROLE

P.S. Често говоря причиной невнимательности возможно послужило именно то представление из которого semirax выбирал данные - USER_ROLE_PRIVS. Возможно это также послужило причиной ошибки. Ведь semirax выбирает именно те роли которые принадлежат текущему пользователю.
19 июн 09, 16:55    [7322142]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить