8

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

GRANT USE OF TABLESPACE MYTABLESPACE TO USERNAME

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

4

2 回答 2

11

USE OF TABLESPACE不是一个记录的选项,你在哪里找到的?

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

alter user username quota [amount] on mytablespace;

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

grant select, insert, update, delete on mytable1 to username;
....
于 2011-06-01T08:51:11.637 回答
9

使用数据字典视图 dba_tables(如果您无法访问 dba_tables,则分别为 all_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。

于 2011-06-01T08:46:32.630 回答