Наследует ли процедура Oracle привилегии своего создателя? - PullRequest
2 голосов
/ 19 ноября 2010

У меня есть 3 пользователя Oracle A, B, C и я хочу использовать B (в качестве промежуточного) для импорта таблицы из C в A. При подключении к B я могу запустить «создать таблицу A.T1 как select * from T1 @C». Но когда я помещаю оператор sql в процедуру, которую B создает / владеет, я продолжаю получать «ORA-01031: недостаточно привилегий». Как sysdba, я предоставил все права (dba) B. Так чего мне здесь не хватает? Спасибо.

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

В хранимой процедуре определения прав (по умолчанию) доступны только те привилегии, которые предоставляются непосредственно пользователю, а не те, которые были предоставлены через роль (например, администратор БД).Таким образом, Пабло прав, что B должен иметь привилегию CREATE ANY TABLE в качестве прямого разрешения.

2 голосов
/ 19 ноября 2010

Предоставили ли вы следующее пользователю B?

sql> grant create any table to b;
...