Oracle-11g-R2
如何列出對包擁有授權的所有使用者
我正在尋找一些查詢來列出所有對包有授權的使用者。
例如,使用者 Schema_A 已被授權執行包:B.MyPackage。
我正在查詢視圖或表,例如:role_tab_privs、role_sys_privs、sys.dba_sys_privs、dba_role_privs ……但我找不到我在找的東西。
如果權限已被直接授予或授予角色,則授予將出現在
DBA_TAB_PRIVS
SELECT grantee, privilege FROM dba_tab_privs WHERE owner = 'B' AND table_name = 'MYPACKAGE' AND privilege = 'EXECUTE'
如果它
grantee
是一個角色,那麼您需要dba_role_privs
查看哪些使用者(或角色)已被授予該角色,如果您將角色授予其他角色,則遵循該鏈。如果您需要考慮由於(非常危險的)ANY
授權(即EXECUTE ANY PROCEDURE
)而獲得授權的使用者,則需要單獨查詢。但是,如果您想要比簡單地對 進行直接查詢更複雜
dba_tab_privs
,那麼您最好使用Pete Finnigan 的腳本中的 on ,例如who_has_priv.sql
(orwho_has_priv_procedure.sql
)。Pete 可能是 Oracle 安全性方面的領先專家,因此與我試圖拼湊的任何東西相比,這些更可能解決所有可能的極端情況。