8

テーブルスペースに多くのテーブルがあり、100 近くあります。これらすべてのテーブルに対する選択、挿入、更新の権限をユーザーに付与する必要があります。出来ますか?私が書くとき:

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;

スクリプトを生成するだけの場合は、execute immediately をコメントアウトし、dbms_output のコメントを外します。

于 2011-06-01T08:46:32.630 に答える