【问题标题】:ORA-01031: insufficient privileges on insertORA-01031: 插入权限不足
【发布时间】:2016-01-11 22:46:48
【问题描述】:

e 一列的数据类型从 NUMBER(4) 更改为 VARCHAR2(4)。 DBA 完成了现有值的转换。

现在,当我们尝试使用 proc * c 代码将记录插入表中时,会出现错误“ORA-01031:权限不足”。

从 SQLPLUS 我们可以插入记录。一段时间后问题消失了。一旦 DBA 重建表,问题就消失了。

每次我们用新的更改刷新测试环境后都会出现此问题。

【问题讨论】:

  • “重建表”和“刷新”测试环境是什么意思?正在执行什么?如果您删除并重新创建表(或您的用户或角色),则需要再次授予插入权限,否则您肯定会收到 ORA-01031 错误消息。
  • 打开编译器警告,不要忘记分号,记住数组从索引0开始。

标签: c oracle


【解决方案1】:

运行这一行:

grant insert on [table] to [user]

[table] 更改为您的表名并将[user] 更改为您的用户。

【讨论】:

    【解决方案2】:

    有一些可能性。

    通过运行以下 SQL 命令仔细检查您的表权限:

    SELECT *
      FROM dba_tab_privs tp
     WHERE tp.owner = '<YOUR_OWNER>'
           AND tp.table_name = '<YOUR_TABLE_NAME>';
    

    如果您的权限是通过角色授予的,请通过检查上面的 GRANTEE(在下面的此查询中)显示属性“DEFAULT_ROLE”=YES,确保启用该角色。

    SELECT * FROM dba_role_privs rp WHERE rp.grantee = '<USER_RUNNING_THE_INSERT>';
    

    如果不是,并且假设您的 DBA 和应用程序设计没有安全问题,您可以通过运行以下命令启用它:

    alter user <YOUR_USER_RUNNING_THE_INSERT> default role all;
    

    再一次,确保如果您正在重新创建表,每次删除它并再次创建时,您都会相应地运行您的授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 2020-12-10
      • 2019-05-29
      相关资源
      最近更新 更多