Oracle-11g-R2

如何列出對包擁有授權的所有使用者

  • May 24, 2017

我正在尋找一些查詢來列出所有對包有授權的使用者。

例如,使用者 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(or who_has_priv_procedure.sql)。Pete 可能是 Oracle 安全性方面的領先專家,因此與我試圖拼湊的任何東西相比,這些更可能解決所有可能的極端情況。

引用自:https://dba.stackexchange.com/questions/33439