Oracle: найти всех пользователей с определенной привилегией - PullRequest
0 голосов
/ 16 марта 2020

Я работаю как пользователь sys в базе данных, и я хотел бы искать всех пользователей, которым предоставлена ​​привилегия CREATE ANY JOB прямо и косвенно.

Я знаю, что dba_sys_privs может найти тех, кому предоставлено напрямую привилегия, но как насчет косвенного? Например, привилегия пользователя предоставляется ролью и даже ролью, предоставляемой другой ролью.

1 Ответ

0 голосов
/ 16 марта 2020

Как Рене Ниффенеггер приятно говорит:

SQL> set pagesize 100
SQL> set ver off
SQL>
SQL> select
  2    lpad(' ', 2*level) || c "Privilege, Roles and Users"
  3  from
  4    (
  5    /* THE PRIVILEGES */
  6      select
  7        null   p,
  8        name   c
  9      from
 10        system_privilege_map
 11      where
 12        name like upper('%&enter_privliege%')
 13    /* THE ROLES TO ROLES RELATIONS */
 14    union
 15      select
 16        granted_role  p,
 17        grantee       c
 18      from
 19        dba_role_privs
 20    /* THE ROLES TO PRIVILEGE RELATIONS */
 21    union
 22      select
 23        privilege     p,
 24        grantee       c
 25      from
 26        dba_sys_privs
 27    )
 28  start with p is null
 29  connect by p = prior c;
Enter value for enter_privliege: ALTER ANY TABLE

Privilege, Roles and Users
--------------------------------------------------------------------------------
  ALTER ANY TABLE
    DBA
      SYS
      SYSTEM
    IMP_FULL_DATABASE
      DATAPUMP_IMP_FULL_DATABASE
        DBA
          SYS
          SYSTEM
        SYS
      DBA
        SYS
        SYSTEM
      SYS
    MDSYS
    SYS
    WMSYS

17 rows selected.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...