在oracle中,当我执行程序包时,出现错误:
ORA-01031:特权不足
我的用户具有dba管理员角色。
mySchema中的myPackage。但是表的架构有所不同。
我尝试使用以下脚本,但无法解决问题。
grant execute on mySchema.myPackage to otherSchema;
感谢您的关注。
execute
mySchema.myPackage.disabledTableConstraint(otherSchema.table_Cons);
答案 0 :(得分:1)
通过角色授予的特权在PL / SQL中并不重要。默认情况下,程序包以定义者的权限执行,这意味着它们以拥有架构的特权执行。
似乎mySchema
试图禁用otherSchema
中的约束,因此基本上就像您以mySchema
身份登录并尝试执行以下操作一样:
alter table otherSchema.someTable disable constraint myconstraint;
听起来mySchema
没有特权otherSchema
。您可以:
ALTER TABLE
的特权从otherSchema
授予mySchema
。您必须逐表执行此操作。ALTER ANY TABLE
的系统特权授予mySchema
。这可能很危险。AUTHID CURRENT_USER
子句赋予过程调用者的权利。这将使过程以调用它的模式的特权(在这种情况下为otherSchema
)运行。请参阅:Managing Security for Definer's Rights and Invoker's Rights