ORA-01031: недостаточные привилегии - пакетная процедура - PullRequest
0 голосов
/ 02 января 2019

В oracle, когда я запускаю свой пакет, я получаю сообщение об ошибке:

ORA-01031: недостаточно прав

У моих пользователей есть роль администратора dba.

myPackage в mySchema.Но таблица отличается в схеме.

Я попробовал приведенный ниже скрипт, но не решил мою проблему.

grant execute on mySchema.myPackage to otherSchema;

Спасибо за интерес.

execute
mySchema.myPackage.disabledTableConstraint(otherSchema.table_Cons);

1 Ответ

0 голосов
/ 03 января 2019

Привилегии, предоставляемые через роли, в PL / SQL на самом деле не имеют значения.По умолчанию пакеты выполняются с определенными правами, что означает, что они выполняются с привилегиями собственной схемы.

Похоже, mySchema пытается отключить ограничение в otherSchema, так что это в основном так, как будто вы вошли как mySchema и пытаетесь сделать:

alter table otherSchema.someTable disable constraint myconstraint;

Похоже, что mySchema не имеет прав сделать это для otherSchema.Вы можете:

  1. Предоставить привилегию ALTER TABLE от otherSchema до mySchema.Вам придется делать это по принципу «таблица за таблицей».
  2. Предоставьте системную привилегию ALTER ANY TABLE для mySchema.Это может быть опасно.
  3. Сделайте права лица, вызывающего процедуру, предложением AUTHID CURRENT_USER.Это приведет к запуску процедуры с привилегиями вызывающей ее схемы, в данном случае otherSchema.

См .: Управление безопасностью для прав определителя и прав вызывающего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...