在oracle中,当我执行我的包时,我得到错误:
ORA-01031:权限不足
我的用户具有 dba 管理员角色。
mySchema 中的 myPackage。但表在架构中不同。
我尝试了下面的脚本,但没有解决我的问题。
grant execute on mySchema.myPackage to otherSchema;
感谢您的关注。
execute
mySchema.myPackage.disabledTableConstraint(otherSchema.table_Cons);
通过角色授予的权限在PL/SQL中并不重要。默认情况下,包以定义者的权限执行,这意味着它们以拥有架构的权限执行。
看起来mySchema
正在尝试禁用otherSchema
中的约束,所以这基本上就像您以mySchema
身份登录并尝试这样做一样:
alter table otherSchema.someTable disable constraint myconstraint;
听起来mySchema
没有特权对otherSchema
这样做。您可以:
- 授予从
otherSchema
到mySchema
的ALTER TABLE
权限。您必须逐个表执行此操作。 - 授予
ALTER ANY TABLE
系统权限以mySchema
。这可能很危险。 - 使用
AUTHID CURRENT_USER
子句使过程调用者的权限。这将使过程以调用它的架构的权限运行,在本例中为otherSchema
。
请参阅:管理定义者权限和调用者权限的安全性