Рейтинг:-1

Извлечение пользователей и ролей в Oracle

флаг ht

Я пытался написать запрос для извлечения пользователей/ролей, у меня не так много навыков SQL, как и в оракуле, поэтому я начал с этого:

ВЫБЕРИТЕ A.GRANTEE, A.GRANTED_ROLE, B.ACCOUNT_STATUS FROM DBA_ROLE_PRIVS A
ПРИСОЕДИНЯЙТЕСЬ к DBA_USERS B НА A.GRANTEE = B.USERNAME
ГДЕ B.ACCOUNT_STATUS = 'ОТКРЫТО'
И ПОЛУЧАТЕЛЬ НЕ В ('SYS', 'SYSTEM')
ЗАКАЗ ГРАНТОПОЛУЧАТЕЛЯ;

Результаты выглядят следующим образом:

GRANTEE GRANTED_ROLE ACCOUNT_STATUS
СОЕДИНЕНИЕ PIPPO ОТКРЫТО
ПЛУТОН ПОДКЛЮЧЕНИЕ ОТКРЫТО
PAPERINO DATAPUMP_IMP_FULL_DATABASE ОТКРЫТА
PAPERINO DATAPUMP_EXP_FULL_DATABASE ОТКРЫТА
РЕСУРС ZIOPAPERONE ОТКРЫТ
ZIOPAPERONE ПОДКЛЮЧИТЬ ОТКРЫТЬ
PAPEROGA CONNECT ОТКРЫТЬ
РЕСУРС PAPEROGA ОТКРЫТ

Кто-нибудь знает, возможно ли что-то подобное, когда несколько GRANTED_ROLE сгруппированы в один столбец?

GRANTEE GRANTED_ROLE ACCOUNT_STATUS
СОЕДИНЕНИЕ PIPPO ОТКРЫТО
ПЛУТОН ПОДКЛЮЧЕНИЕ ОТКРЫТО
PAPERINO DATAPUMP_IMP_FULL_DATABASE, DATAPUMP_EXP_FULL_DATABASE ОТКРЫТ
РЕСУРС ZIOPAPERONE, ПОДКЛЮЧИТЬСЯ ОТКРЫТЬ
PAPEROGA CONNECT, РЕСУРС ОТКРЫТ

или существует другая системная таблица с таким же поведением? база данных - Oracle DB 12c

Большое спасибо

Michael Hampton avatar
флаг cz
Это не место здесь. Вы можете попробовать опубликовать сообщение на нашем родственном сайте [dba.se].
Рейтинг:-1
флаг ht

Я отвечаю сам себе, я нашел решение на другом конкретном форуме оракула:

ВЫБЕРИТЕ B.ACCOUNT_STATUS, A.GRANTEE, listagg(A.GRANTED_ROLE, ';') внутри группы (в порядке A.GRANTED_ROLE) ОТ DBA_ROLE_PRIVS A
ПРИСОЕДИНЯЙТЕСЬ к DBA_USERS B НА A.GRANTEE = B.USERNAME
ГДЕ B.ACCOUNT_STATUS = 'ОТКРЫТО'
ГРУППА ПО A.GRANTEE, B.ACCOUNT_STATUS
ЗАКАЗ ГРАНТОПОЛУЧАТЕЛЯ;

ключ — это список, который объединяет результаты A.GRANTED_ROLE в одну строку с ; разделитель.

Ваше здоровье

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.