Oracle, привилегии.

wwoland

Вопрос,можно ли как нибудь дать некоторому пользователю A привилению вибирать данные из любой таблицы другого пользователя B.
Вариант для каждой таблицы отдельно разрешать выборку не считается =)?

Boris1980

Ролями это делается.

wwoland

то есть если у меня у B 1000 таблиц,то надо нафигачить роль,которой надо сделать 1000 грантов?
То есть то же самое,что отдельными грантами делать.

Boris1980

Нет, если у тебя появится пользователь С, то ему ты права дашь всего одним действием.
Как у тебя возник пользователь с 1000 таблиц, и без каких-либо ролей?
Еще вариант блок написать.

Boris1980

По поводу блока, запусти запрос
Select t.table_name
From all_tables t
Where t.owner = &psUserName
ps: &psUserName - имя пользователя

ava3443

Вроде нет такого способа.
А перечислить 1000 таблиц - это легко. Прогони в sqlplus скрипт, приведённый ниже, пользователем B (предварительно role_name замени на имя пользователя A, которому нужно дать права).
set pagesize 0 feedback off verify off heading off echo off suffix "" sqlprompt ""
spool generated.sql
SELECT 'grant select on '||table_name||' to role_name;'
FROM USER_TABLES
ORDER BY table_name;
SELECT 'exit;' FROM dual;
spool off;
@generated.sql
exit;

P.S. Скрипт не проверял

ava3443

да-да, только DDL триггера и не хватает для полного счастья

Gerkon

Том Кайт считается большим знатоком в среде ораклистов...
Решение для Oracle 8i, возможно в новых версиях можно и по-другому (тоже интересно)
Конечно, можно одним запросом дать права, но при создании новой таблицы их ведь не будет.
А так, не нужно ни за чем следить, да и ресурсы не затрачиваются на это. Вполне нормальное решение.

wwoland

Спасиб за решение,такое я и сам догадался,просот интересно было,можно ли как нибудь одним грантов все это сделать =)

wwoland

Кстати,а если возникла необюходимость дать права уже задолго после создания таблиц,то триггер тоже не спасет ведь

ava3443

я может торможу, но как можно дать права на объект, который ещё не создан?
триггер при создании таблицы даст права на неё.

wwoland

никто и не спорит,нельзя,я имею ввиду,что если все таблицы давно созданы и функционируют и тут я решил создать юзер с правом доступа к таблицам =)

ava3443

а, я слово "после" прочитал как "до"
Оставить комментарий
Имя или ник:
Комментарий: