【问题标题】:how to get granted indexes,triggers and synonyms of granted tables如何获得授权表的授权索引、触发器和同义词
【发布时间】:2016-03-30 15:23:00
【问题描述】:

我创建了两个用户,user1 和 user2,并授予 user2 对 user1 的一些表、函数、过程、视图、序列和包的所有权限。我正在使用以下查询来获取授予对象的列表:-

SELECT * FROM USER_TAB_PRIVS where grantor = 'user1' and grantee = 'user2'

上面提到的查询给出了所有对象的列表,如表、函数、过程、视图、序列和包。它没有给出索引名称、同义词名称和触发器名称。

谁能建议我如何授予索引、触发器和同义词的权限。或如何获取已授予表的触发器、索引和同义词。

【问题讨论】:

    标签: java oracle11g database-schema privileges


    【解决方案1】:

    对于索引或触发器没有像 SELECT 这样的权限。 阅读https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm 了解任何类型的数据库对象的可能特权,尤其是表 18-1 和表 18-2。如果触发器存在并在满足条件时启用它(ON INSERT、UPDATE 等)。如果索引存在,则在优化器需要时使用它。

    您可以从视图中获取对象列表,只需在 OWNER 列上添加一些 WHERE:

    SELECT *
      FROM all_triggers;
    
    SELECT *
      FROM all_synonyms;
    
    SELECT *
      FROM all_indexes;
    

    【讨论】:

    • 谢谢...所有查询都在工作,但是是否有任何单个查询可以获取所有授予的对象,包括触发器、索引和同义词?
    【解决方案2】:

    要获取所有可用对象的架构,您可以使用 ALL_OBJECTS 视图。如果您不知道应该使用哪些常量,那么只查看 Selected distinct object types 可能比在 oracle 文档中查找它们更快。

    Select distinct object_type from all_objects;
    

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多