2016-10-30 2 views
0

Я пытаюсь найти всех пользователей с определенными привилегиями в таблице DBA_SYS_PRIVS. В таблице есть столбец GRANTEE и в соответствии с официальным сайтом Oracle, в столбце GRANTEE указано «Имя получателя, пользователь или роль, получающая грант». Итак, как я могу узнать, является ли GRANTEE учетной записью или ролью? Например, есть роль под названием SYS, а также учетная запись SYS в Oracle DB. Итак, как я узнаю, является ли это учетной записью или ролью?Как определить учетную запись пользователя в таблице DBA_SYS_PRIVS в базе данных Oracle

Также в таблице DBA_TAB_PRIVS есть столбец под названием GRANTEE. И в этой таблице в столбце GRANTEE указано «Имя пользователя, которому был предоставлен доступ». Так что я действительно путают, так как столбец «GRANTEE» означает разные вещи в двух разных таблицах

Пожалуйста, помогите, thanksssssssssssssss

+2

По умолчанию нет функции 'SYS'. Я бы не ожидал, что будет возможно создать роль с тем же именем, что и пользователь, но я не пробовал. Вы говорите, что вы видите строку в 'dba_roles', где' role' является SYS? –

+0

Ну, может быть, SYS - неправильный пример. Но я видел «DBA» в столбце GRANTEE в DBA_SYS_PRIVS. Итак, этот момент относится к роли DBA, или имя учетной записи «DBA»? – Sio

ответ

1

Нет нет SYS роль в Oracle.

SQL> select * from dba_roles where role='SYS'; 

no rows selected 

На самом деле вы не можете создавать роли с тем же именем, что и имена пользователей.

SQL> create role sys; 
create role sys 
     * 
ERROR at line 1: 
ORA-01921: role name 'SYS' conflicts with another user or role name 

Чтобы получить только роли без имени пользователя.

SQL>select grantee from dba_sys_privs where grantee not in(select username from all_users); 

Чтобы получить только пользователей без ролей.

SQL>select grantee from dba_sys_privs where grantee in(select username from all_users) 
+0

Что относительно роли «DBA»? В таблице «SYS_USERS» вы можете видеть учетные записи администратора баз данных под столбцом «Имя», а также есть GRANTEE, называемый DBA в таблице DBA_SYS_PRIVS? – Sio

+0

'DBA' не является пользователем, его ролью. 'выберите имя пользователя из all_users, где username = 'DBA'', что вы получаете? – JSapkota