ORA-01031:插入权限不足

时间:2016-01-11 22:46:48

标签: c oracle

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

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

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

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

2 个答案:

答案 0 :(得分:3)

有一些可能性。

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

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

如果通过角色授予您的权限,请确保通过检查上面的GRANTEE在下面的查询中显示的属性为&#34; DEFAULT_ROLE&#34;来确保该角色已启用。 =是。

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

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

alter user <YOUR_USER_RUNNING_THE_INSERT> default role all;

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

答案 1 :(得分:2)

运行此行:

grant insert on [table] to [user]

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