【问题标题】:How to grant privileges on trigger and synonyms in oracle 11g如何在 oracle 11g 中授予触发器和同义词的权限
【发布时间】:2016-03-29 12:34:03
【问题描述】:

我创建了一个示例应用程序来获取所有对象的架构并生成 SQLfile,所以我只是创建了两个用户,用户 'SYSTEM' 和 'SCOTT' ,并且用户 SYSTEM 授予访问某些表、视图和函数的所有权限等给用户SCOTT, 为用户 SCOTT 授予权限,请使用以下 oracle 查询

GRANT ALL ON table_name to username

但问题是此查询不适用于触发器和同义词。 所以任何人都请建议我如何向用户 SCOTT 授予触发器和同义词的权限。

【问题讨论】:

    标签: sql oracle oracle11g privileges


    【解决方案1】:

    但问题是此查询不适用于触发器和同义词。所以任何人都请建议我如何向用户 SCOTT 授予触发器和同义词的权限。

    • TRIGGER - 您不能授予触发权限。哪有这回事。只要在创建触发器的表上完成触发器事件,触发器就会自动触发。您只需要授予对表的权限。

    • SYNONYM - 您只需为 schema.table 创建一个同义词并授予该表的权限,这样其他用户就不必完全限定该表而只需使用同义词即可.

    【讨论】:

    • 感谢您的回复,我可以获得除 TRIGGER 和 SYNONYMS 之外的所有数据库元素的替代架构(除登录用户之外的架构)的 ddl。因为当我将数据恢复到新数据库时,我首先需要生成相同的数据结构,然后禁用所有触发器和约束,然后将数据加载到数据库的表中,然后启用该触发器和约束。因此,除非我无法获得 TRIGGER 和 SYNONYMS 的 ddl,否则我无法创建以及将数据恢复到新数据库。您能否提供其他解决方案来获取触发器和同义词的 DDL?
    • @Gracy 您是否使用DBMS_METADATA.GET_DDL 来检索DDL
    • 是的,我正在使用 DBMS_METADATA.GET_DDL 来检索 DDL,但是如果我获得登录用户的 ddl 模式,那么我使用以下查询“从 user_objects 中选择 object_name”获取现有 TRIGGER 的名称object_type = 'TRIGGER'" ;然后我在 getDDL 方法中使用触发器名称并返回 TRIGGER ddl sql。在我的情况下,我想获取其他模式的 TRIGGER DDL(不是登录用户的 SCHAMA)在这里我无法获取已授予触发器的名称列表,“这是问题”[同义词相同] 所以如果我得到触发器的名称那么我也可以得到触发器的 ddl 模式
    • user_objects 只给你当前用户的对象。要获取所有用户的对象列表,如果您有 DBA 权限,请使用 DBA_OBJECTS
    • 谢谢先生,是否有任何查询可以获取仅授予表的触发器,这意味着如果我将“DEPT”表的权限授予用户 scott,那么我怎样才能获得相关的索引、触发器和同义词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多