Транзит прав на Oracle
Есть БД Oracle, в ней схемы A,B,C. В схеме A есть таблица T1, в схеме B есть представление V1, которое берет данные из A.T1; в схеме C есть права на SELECT из A.T1, и B.V1.
Я логинюсь через TOAD в схему C и пытаюсь выполнить запрос
Код:
SELECT * from B.V1
на что получаю сообщение "insufficient priveleges". Причем запрос
Код:
SELECT * from A.T1
в схеме C работает.
Т.о. цепочка A->B->C не работает, хотя все необходимые права везде есть. Кто-нибудь сталкивался с таким? И как это можно решить?
Проблема решена. Тот, кто дает права схеме B на чтение A.T1 должен дать их с GRANT OPTION.
Я маленько запутался в ABC, T1/V1 (у нас уже ночь, и я не соображаю ничего) но, вкратце, хочу сказать: представления (равно как и хранимые процедуры, триггеры, пакеты и т.п.) открываются/исполняются не с правами пользователя, под которым ты подключаешься, а с правами пользователя, являющегося владельцем представления (процедуры/триггера/пакета). grant option, понятное дело, позволяет делегировать права на чтение, запуск или какие-либо другие привилегии другому.