存储过程中insert其它用户的表,编译提示无权限的处理

简介:
背景:某个用户下(假定A)的存储过程要调用另外用户(假定B)的表,在SYS下通过显式GRANT权限(具体如下)对A授权。

 

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DECTEMP1 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DECTEMP2 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DECTEMP3 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DECTEMP4 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DECTEMP5 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DUDECTEMP1 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DUDECTEMP2 to oper;

 

grant DELETE,INSERT,SELECT,UPDATE on dg_write.DCRASS_DUDECTEMP3 to oper;

 


 

 

故障现象:A中的存储过程编译提示权限错误

 
Error: PL/SQL: ORA-01031: insufficient privileges
 
通过模糊授权不管用,最后对B用户授予DBA后用B用户登录对A授权后A中的存储过程即可正常编译。
 
SQL> grant dba to dg_write;
 
Grant succeeded
 
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DECTEMP1 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DECTEMP2 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DECTEMP3 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DECTEMP4 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DECTEMP5 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DUDECTEMP1 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DUDECTEMP2 to oper;
 
grant DELETE,INSERT,SELECT,UPDATE on DCRASS_DUDECTEMP3 to oper;
 
 
看来SYS也不是万能的,也或许是ORACLE的一个BUG.
 

最后别忘记REVOKE B的DBA权限:

 
SQL> revoke dba from dg_write ;
 
Revoke succeeded



本文转自zylhsy 51CTO博客,原文链接:http://blog.51cto.com/yunlongzheng/1084945,如需转载请自行联系原作者
相关文章
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
143 0
|
存储 SQL Java
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
775 0
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
|
存储 Oracle 关系型数据库
Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
851 0
|
存储 SQL Go
SQL Server 删除数据库所有表和所有存储过程
SQL Server 删除数据库所有表和所有存储过程
177 0
|
存储
基于存储过程实现批量复制表(Procedure)的方案实现
基于存储过程实现批量复制表(Procedure)的方案实现
620 0
|
存储 MySQL 关系型数据库
mysql 跑存储过程没有权限的问题
mysql 跑存储过程没有权限的问题1.赋予权限GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "root";2.刷新权限FLUSH PRIVILEGES;
1316 0
|
存储 SQL 关系型数据库
MySQL使用存储过程为数据库中全部的表增加备用字段
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/84879858 ...
1773 0
|
SQL 存储 缓存
sqlserver 存储过程中使用临时表到底会不会导致重编译
原文:sqlserver 存储过程中使用临时表到底会不会导致重编译 曾经在网络上看到过一种说法,SqlServer的存储过程中使用临时表,会导致重编译,以至于执行计划无法重用,运行时候会导致重编译的这么一个说法,自己私底下去做测试的时候,根据profile的跟踪结果,存储过程中使用临时表,如果不是统...
1019 0

热门文章

最新文章