Предоставить выбор, вставку, обновление табличного пространства - PullRequest
8 голосов
/ 01 июня 2011

У меня есть много таблиц в табличном пространстве, около 100. Я должен предоставить пользователю право выбора, вставки, обновления всех этих таблиц. Является ли это возможным? Когда я пишу:

GRANT USE OF TABLESPACE MYTABLESPACE TO USERNAME

Я получаю сообщение об ошибке "недопустимая или отсутствующая привилегия"

Ответы [ 2 ]

11 голосов
/ 01 июня 2011

USE OF TABLESPACE не документированный вариант, где вы это нашли?

Вы можете сделать это, чтобы позволить пользователю создавать объекты в табличном пространстве:

alter user username quota [amount] on mytablespace;

Для предоставления выбора, вставки, обновления и удаления объектов необходимо выполнить отдельную команду grant для каждой таблицы:

grant select, insert, update, delete on mytable1 to username;
....
9 голосов
/ 01 июня 2011

Используйте представление словаря данных 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.

...