如何检查对Oracle对象授予了哪些模式执行权限?

如何检查对Oracle对象授予了哪些模式执行权限?,oracle,oracle10g,database-permissions,grant,Oracle,Oracle10g,Database Permissions,Grant,我需要找出在Oracle 10g db(在本例中是一个包)中的某个对象上,哪些模式已经被授予了执行权限。对我来说,最简单的方法是什么?是否有内置功能提供此信息?选择被授权人 SELECT grantee FROM all_tab_privs WHERE table_name = '<your object name>' AND privilege = 'EXECUTE' AND grantor = '<object owner>'; 从所有私人 其中表_n

我需要找出在Oracle 10g db(在本例中是一个包)中的某个对象上,哪些模式已经被授予了执行权限。对我来说,最简单的方法是什么?是否有内置功能提供此信息?

选择被授权人
SELECT grantee
  FROM all_tab_privs
 WHERE table_name = '<your object name>'
  AND privilege = 'EXECUTE'
  AND grantor = '<object owner>';
从所有私人 其中表_name=“” 和特权='EXECUTE' 授予人=“”;
是的,我知道,上面写着“table_name”,但它也适用于可执行对象。DBA_TAB_PRIVS表也可以使用。您需要适当的权限(例如,DBA角色,选择任何TALBE)才能从这些视图中进行选择并查看所有数据

针对马丁的评论。。。以上是我所知道的做你要求的事情的最简单方法。如果要将其限制为包,请尝试以下操作:

SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name)
 WHERE table_name = '<your object name>'
   AND object_type = 'PACKAGE'
   AND privilege = 'EXECUTE'
   AND grantor = '<object owner>';
SELECT*FROM all_tab_privs连接上的所有对象(table_name=object_name)
其中表_name=“”
对象类型='PACKAGE'
和特权='EXECUTE'
授予人=“”;

事实上,我想要的不是更一般的东西,就是一个特定于软件包的案例……一切都被原谅了!好的旧oracle及其对系统表的无意义命名:)