【问题标题】:Grant SELECT on multiple tables oracle在多个表上授予 SELECT oracle
【发布时间】:2013-03-16 15:57:51
【问题描述】:

我有 3 个表 table1、table2、table3。 我想将这些表授予(例如选择)用户 user1。

我知道我可以授予:

grant select on table1 to user1;
grant select on table2 to user1;
grant select on table3 to user1;

我可以只使用 1 个查询将 3 个表授予 user1 吗?

谢谢

【问题讨论】:

标签: select oracle11g sql-grant


【解决方案1】:

没有。作为documentation shows,您一次只能授予对一个对象的访问权限。

【讨论】:

    【解决方案2】:

    您可以使用动态查询来做到这一点,只需在 pl-sql 或 sqlplus 中运行以下脚本:

    select 'grant select on user_name_owner.'||table_name|| 'to user_name1 ;' from dba_tables t where t.owner='user_name_owner'
    

    然后执行结果。

    【讨论】:

    • 你应该复制/粘贴结果来执行它吗?
    • @justincress,有了这个答案,您将获得一系列可以节省您时间的句子。我认为这是一种解决方法。
    • 在文本 ||table_name|| 之前和之后需要一个空格
    【解决方案3】:

    我的建议是……使用

    在 oracle 中创建角色
    create role <role_name>;
    

    然后使用

    为该角色分配权限
    grant select on <table_name> to <role_name>;
    

    然后使用

    通过该角色将该组权限分配给任何用户
    grant  <role_name> to <user_name>...;
    

    【讨论】:

      【解决方案4】:

      这对我的 Oracle 数据库有用:

      SELECT   'GRANT SELECT, insert, update, delete ON mySchema.' || TABLE_NAME || ' to myUser;'
      FROM     user_tables
      where table_name like 'myTblPrefix%'
      

      然后,复制结果,将它们粘贴到您的编辑器中,然后像脚本一样运行它们。

      如果您不想要额外的复制/粘贴步骤,您也可以编写一个脚本并使用“立即执行”来运行生成的 SQL。

      【讨论】:

        【解决方案5】:

        如果您想同时授予表和视图,请尝试:

        SELECT DISTINCT
            || OWNER
            || '.'
            || TABLE_NAME
            || ' to db_user;'
        FROM
            ALL_TAB_COLS 
        WHERE
            TABLE_NAME LIKE 'TABLE_NAME_%';
        

        对于视图尝试:

        SELECT
            'grant select on '
            || OWNER
            || '.'
            || VIEW_NAME
            || ' to REPORT_DW;'
        FROM
            ALL_VIEWS
        WHERE
            VIEW_NAME LIKE 'VIEW_NAME_%';
        

        复制结果并执行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-30
          • 2013-11-11
          • 2011-05-07
          • 2014-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多