如何检查对Oracle对象授予了哪些模式执行权限?
我需要找出在Oracle 10g db(在本例中是一个包)中的某个对象上,哪些模式已经被授予了执行权限。对我来说,最简单的方法是什么?是否有内置功能提供此信息?如何检查对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
选择被授权人
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及其对系统表的无意义命名:)