oracle查询以查找存储过程上的特权
我可以运行什么查询来查看用户是否具有执行存储过程的权限 假设用户是oracle查询以查找存储过程上的特权,oracle,permissions,Oracle,Permissions,我可以运行什么查询来查看用户是否具有执行存储过程的权限 假设用户是UserA,存储过程名称是my\u stored\u proc 我想知道UserA是否对my\u stored\u proc UserA不是storedproc的所有者。另一个主人给了他许可 你可以试试 select ap.* from All_Procedures ap where ap.owner = 'UserA' 这只会告诉您UserA是否是所有者。我想UserA仍然可以拥有权限,即使不是所有者。我不知道该怎么检查 编辑
UserA
,存储过程名称是my\u stored\u proc
我想知道UserA
是否对my\u stored\u proc
UserA不是storedproc的所有者。另一个主人给了他许可 你可以试试
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
用户系统权限
用户\u选项卡\u权限
用户\u角色\u权限
角色系统私人
角色\u选项卡\u私人
我很少查询这些,所以我不确定如何找到您要找的内容,但我会从这些开始。明白了
SELECT * FROM DBA_TAB_PRIVS A WHERE GRANTEE = 'UserA' AND GRANTOR = 'someoneelse' and privilege = 'EXECUTE'
要通过角色说明补助金,请执行以下操作:
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'
)
)
这对我来说很有用,我想找到我可以访问的所有SP: 从“用户”选项卡的“特权”中选择*,其中被授权人=“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu USER_TAB_PRIVS中的列包括被授权人、所有者、授予人、表名称(在本例中为SP名称)和特权,因此我认为这是完美的
我的理解是,dpbradley和Omnipresent的答案对普通用户不起作用,因为他们无法访问DBA表。是的,这就是我的情况。他不是主人。有个老板同意了他。