代码之家  ›  专栏  ›  技术社区  ›  MPritchard

如何检查哪些架构已被授予对Oracle对象的执行权限?

  •  6
  • MPritchard  · 技术社区  · 15 年前

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

    1 回复  |  直到 15 年前
        1
  •  6
  •   DCookie    15 年前
    SELECT grantee
      FROM all_tab_privs
     WHERE table_name = '<your object name>'
      AND privilege = 'EXECUTE'
      AND grantor = '<object owner>';
    

    是的,我知道,它说“表名”,但它也适用于可执行对象。表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>';
    
    推荐文章