【问题标题】:Grant Select, Insert, Update to a Tablespace授予对表空间的选择、插入、更新
【发布时间】:2011-09-06 02:29:42
【问题描述】:

我在一个表空间中有很多表,将近 100 个。我必须将所有这些表的 Select、Insert 和 Update 权限授予用户。可能吗?当我写:

GRANT USE OF TABLESPACE MYTABLESPACE TO USERNAME

我收到 oracle 错误“无效或缺少特权”

【问题讨论】:

    标签: oracle select insert grant tablespace


    【解决方案1】:

    USE OF TABLESPACE 没有记录在案的选项,您在哪里找到的?

    您可以这样做以允许用户在表空间中创建对象:

    alter user username quota [amount] on mytablespace;
    

    要授予对对象的选择、插入、更新和删除权限,您必须为每个表运行单独的grant 命令:

    grant select, insert, update, delete on mytable1 to username;
    ....
    

    【讨论】:

      【解决方案2】:

      使用数据字典视图 dba_tables(分别是 all_tables,如果您无法访问 dba_tables):

      declare
        l_SQL varchar2(4000);
      begin
        for cur in (
          select * from dba_tables where tablespace_name = 'mytablespace')
        loop
          l_sql := 'grant select, insert, update on ' || cur.owner || '.' || cur.table_name || ' to myuser';
          --dbms_output.put_line(l_SQL || ';');
          execute immediate l_SQL;
        end loop;
      end;
      

      如果您只想生成一个脚本,请注释掉执行立即数并取消注释 dbms_output。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-06
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多