首页 文章

ORA-01031:插入权限不足

提问于
浏览
1

从NUMBER(4)到VARCHAR2(4)的e列的数据类型发生了变化 . DBA完成了现有值的转换 .

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

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

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

2 回答

  • 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;
    

    然后,再次确保您是否正在重新创建表格,每次丢弃它并再次创建时,都会相应地运行您的授权 .

  • 3

    运行此行:

    grant insert on [table] to [user]
    

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

相关问题