web-dev-qa-db-ja.com

別のスキーマの特定のテーブルに対する現在のユーザー権限を確認する最良の方法は何ですか?

私のソフトウェアでは、実行時に、接続されたユーザーが2つの異なるスキーマにわたっていくつかのテーブルに対する権限を持っているかどうかを確認する必要があります。調査の結果、これらの2つのビューに遭遇しましたALL_TAB_PRIVS_RECD ALL_TAB_PRIVSこれらのビューの1つを使用する必要がありますか、それとも別の方法がありますか?ありがとう

3
Goldorak84

最後に、接続されたユーザーが特権を確認するスキーマと異なる場合にのみ使用するこのクエリが付属しました。

SELECT PRIVILEGE
FROM ALL_TAB_PRIVS_RECD
WHERE PRIVILEGE = 'SELECT'
AND TABLE_NAME = 'GN_VERSION'
AND OWNER = 'USER_A'
UNION ALL
SELECT PRIVILEGE
FROM SESSION_PRIVS
WHERE PRIVILEGE = 'SELECT ANY TABLE';

これは、USER_AスキーマのテーブルGN_VERSIONに対するSELECT特権をチェックします

4
Goldorak84

ALL_TAB_PRIVSALL_TAB_PRIVS_RECD 。あなたはおそらくALL_TAB_PRIVS現在のユーザーが所有するテーブルが含まれているため。