授予选择,插入,更新到表空间

Mik*_*yev 8 oracle select insert grant tablespace

我在表空间中有很多表,差不多有100个.我必须向用户授予所有这些表的Select,Insert,Update权限.可能吗?我写的时候:

GRANT USE OF TABLESPACE MYTABLESPACE TO USERNAME
Run Code Online (Sandbox Code Playgroud)

我得到oracle错误"无效或缺少权限"

Ton*_*ews 11

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

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

alter user username quota [amount] on mytablespace;
Run Code Online (Sandbox Code Playgroud)

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

grant select, insert, update, delete on mytable1 to username;
....
Run Code Online (Sandbox Code Playgroud)


Fra*_*itt 9

使用数据字典视图dba_tables(如果无法访问dba_tables,则为resp.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;
Run Code Online (Sandbox Code Playgroud)

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