oracle查询以查找存储过程的权限

时间:2010-01-28 18:10:48

标签: oracle permissions

我可以运行什么查询来查看用户是否具有执行存储过程的权限。

假设用户为UserA,存储过程名称为my_stored_proc

我想知道UserA是否具有my_stored_proc

的执行权限

UserA不是storedproc的所有者。其他一些所有者授予他许可。

4 个答案:

答案 0 :(得分:12)

通过角色考虑补助:

  select grantee, table_name, privilege
     from dba_tab_privs
     where
       table_name = 'my_stored_proc'
        and 
       owner = 'ownerOfObject'
       and
       (grantee = 'userA'
         or
         grantee in
          (select granted_role
        from dba_role_privs
        where grantee = 'userA'
           )
        )

答案 1 :(得分:4)

你可以尝试

select ap.*
from All_Procedures ap
where ap.owner = 'UserA'

这只会告诉您UserA是否为所有者。我认为即使不是所有者,UserA仍然可以获得许可。不知道如何检查。

修改 其他要检查的表是

USER_SYS_PRIVS
USER_TAB_PRIVS
USER_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS

我很少询问这些,所以我不确定如何找到你想要的东西,但我会从这些开始。

答案 2 :(得分:2)

得到了......

SELECT * FROM DBA_TAB_PRIVS A WHERE GRANTEE = 'UserA' AND GRANTOR = 'someoneelse' and privilege = 'EXECUTE'

答案 3 :(得分:0)

这对我有用,我想找到我可以访问的所有SP:

从USER_TAB_PRIVS中选择*,其中GRANTEE ='______'和PRIVILEGE ='EXECUTE'

USER_TAB_PRIVS中的列包括GRANTEE,OWNER,GRANTOR,TABLE_NAME(在这种情况下为SP名称)和PRIVILEGE,所以我认为这很完美。

我的理解是dpbradley和Omnipresent的答案不适用于普通用户,因为他们无法访问DBA_ *表。