oracle运行SQL报错:ORA-01031: 权限不足
今天编译一个存储过程的时候,报错——ORA-01031: 权限不足,如下图:
原因:
本存储过程的用户为IFNRATEST,功能为insert数据到P2这个用户中的LOT_BK表。查看逻辑后,发现本存储过程的所属用户(INFRATEST用户)不具备存储过程中被操作表(LOT_BK表)的insert、select、update权限,导致权限不足。
create or replace PROCEDURE "INFRATEST"."A_INSERT_LOT_BK" AS
begin
insert into p2.lot_bk (table_name,table_num,table_status) vlaues ("test",1,"test");
commit;
end;
解决办法:
1.给用户INFRATEST用户赋权:
grant insert,select,update on P2.LOT_BK to INFRATEST;
--P2是LOT_BK的所属用户,意思就是LOT_BK是被P2这个用户创建的,INFRATEST要是想要操作LOT_BK表,难么就要用P2用户赋予权限给INFRATEST才行。
2.赋权后再次重新编译,可以成功编译:
写到这里,从这个权限机制中,我想到《满城尽带黄金甲》中周润发说的那句话:天地万物,朕赐给你,才是你的;朕不给,你不能抢。哈哈哈。
最后打个鸡血吧:
断断续续的坚持也是坚持。累的半死不活还去学习,这就是坚持!共勉!