首页 > 解决方案 > ORA-01031: 权限不足 -- 包程序

问题描述

在 oracle 中,当我执行我的包时,出现错误:

ORA-01031: 权限不足

我的用户具有 dba 管理员角色。

mySchema 中的 myPackage。但表的架构不同。

我尝试了下面的脚本,但没有解决我的问题。

grant execute on mySchema.myPackage to otherSchema;

感谢您的兴趣。

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

标签: oracleplsql

解决方案


通过角色授予的特权在 PL/SQL 中并不重要。默认情况下,包以定义者的权限执行,这意味着它们以拥有模式的权限执行。

看起来mySchema正在尝试禁用 中的约束otherSchema,所以这基本上就像您以身份登录mySchema并尝试执行以下操作:

alter table otherSchema.someTable disable constraint myconstraint;

听起来好像mySchema没有权限这样做otherSchema。你可以:

  1. 授予从到的ALTER TABLE权限。您必须逐表执行此操作。otherSchemamySchema
  2. ALTER ANY TABLE系统权限授予mySchema. 这可能很危险。
  3. AUTHID CURRENT_USER用该子句使过程调用者的权利。这将使过程以调用它的模式的权限运行,在本例中为otherSchema.

请参阅:管理定义者权利和调用者权利的安全性


推荐阅读