81

Linux、Oracle10g を使用しています。test というユーザーを 1 人作成しました。セッションの作成と辞書の選択権限を同じユーザーに付与します。

また、sysdba と sysoper の役割を同じユーザーに付与しました。

ここで、ユーザーに付与されたすべての権限とロールを表示したいと思います。次のクエリが見つかりましたが、セッションの作成と辞書の選択権限のみが表示されます。

select privilege 
from dba_sys_privs 
where grantee='SAMPLE' 
order by 1;

問題の解決にご協力ください。

ありがとう

4

9 に答える 9

69

http://docs.oracle.com/cd/B10501_01/server.920/a96521/privs.htm#15665を見てください。

これらの select ステートメントを使用して、USER_SYS_PRIVS、USER_TAB_PRIVS、USER_ROLE_PRIVS テーブルを確認します。

SELECT * FROM USER_SYS_PRIVS; 
SELECT * FROM USER_TAB_PRIVS; 
SELECT * FROM USER_ROLE_PRIVS;
于 2013-02-25T12:01:43.800 に答える
62

他の答えはどれもうまくいかなかったので、私は自分の解決策を書きました:

Oracle 11g 以降。

USER を目的のユーザー名に置き換えます

付与される役割:

SELECT * 
  FROM DBA_ROLE_PRIVS 
 WHERE GRANTEE = 'USER';

ユーザーに直接付与される権限:

SELECT * 
  FROM DBA_TAB_PRIVS 
 WHERE GRANTEE = 'USER';

ユーザーに付与されたロールに付与された権限:

SELECT * 
  FROM DBA_TAB_PRIVS  
 WHERE GRANTEE IN (SELECT granted_role 
                     FROM DBA_ROLE_PRIVS 
                    WHERE GRANTEE = 'USER');

付与されるシステム権限:

SELECT * 
  FROM DBA_SYS_PRIVS 
 WHERE GRANTEE = 'USER';

現在接続しているユーザーを検索する場合は、テーブル名の DBA を USER に置き換え、WHERE 句を削除します。

于 2016-04-01T02:52:44.887 に答える
13

以前の提案を組み合わせて個人のアクセス許可 (つまり、「ユーザー」アクセス許可) を決定し、これを使用します。

-- your permissions
select * from USER_ROLE_PRIVS where USERNAME= USER;
select * from USER_TAB_PRIVS where Grantee = USER;
select * from USER_SYS_PRIVS where USERNAME = USER;

-- granted role permissions
select * from ROLE_ROLE_PRIVS where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER);
select * from ROLE_TAB_PRIVS  where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER);
select * from ROLE_SYS_PRIVS  where ROLE IN (select granted_role from USER_ROLE_PRIVS where USERNAME= USER);
于 2015-10-28T16:49:57.180 に答える
10

IF privileges are given to a user through some roles, then below SQL can be used

select * from ROLE_ROLE_PRIVS where ROLE = 'ROLE_NAME';
select * from ROLE_TAB_PRIVS  where ROLE = 'ROLE_NAME';
select * from ROLE_SYS_PRIVS  where ROLE = 'ROLE_NAME';
于 2014-12-16T15:28:53.250 に答える
1
select * 
from ROLE_TAB_PRIVS 
where role in (
    select granted_role
    from dba_role_privs 
    where granted_role in ('ROLE1','ROLE2')
)
于 2014-01-15T09:16:57.563 に答える