Грант SELECT на нескольких таблицах oracle
У меня есть 3 таблицы table1, table2, table3. Я хочу предоставить (выбрать, например) эти таблицы пользователю user1.
Я знаю, что я могу с:
grant select on table1 to user1;
grant select on table2 to user1;
grant select on table3 to user1;
могу ли я предоставить 3 таблицы user1, используя только 1 запрос?
спасибо
4 ответов
нет. Как показывает, вы можете предоставить доступ только к одному объекту за раз.
вы можете сделать это с помощью динамического запроса, просто запустите следующий скрипт в pl-sql или sqlplus:
select 'grant select on user_name_owner.'||table_name|| 'to user_name1 ;' from dba_tables t where t.owner='user_name_owner'
и затем выполнить результат.
мое предложение...создайте роль в oracle с помощью
create role <role_name>;
затем назначьте привилегии этой роли, используя
grant select on <table_name> to <role_name>;
затем назначьте эту группу привилегий через эту роль любому пользователю с помощью
grant <role_name> to <user_name>...;
это сработало для меня в моей базе данных Oracle:
SELECT 'GRANT SELECT, insert, update, delete ON mySchema.' || TABLE_NAME || ' to myUser;'
FROM user_tables
where table_name like 'myTblPrefix%'
затем скопируйте результаты, вставьте их в Редактор, а затем запустите их как сценарий.
вы также можете написать сценарий и использовать "выполнить немедленно" для запуска сгенерированного SQL, если вы не хотите дополнительных шагов копирования/вставки.