存储过程中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数据库批量删除表、视图、序列、存储过程、函数脚本
112 0
|
存储 SQL Java
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
702 0
MySQL存储过程手册,及创建存储过程:循环为所有表添加字段
|
存储 Oracle 关系型数据库
Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
755 0
|
存储 SQL Go
SQL Server 删除数据库所有表和所有存储过程
SQL Server 删除数据库所有表和所有存储过程
157 0
|
存储
基于存储过程实现批量复制表(Procedure)的方案实现
基于存储过程实现批量复制表(Procedure)的方案实现
603 0
|
存储 MySQL 关系型数据库
mysql 跑存储过程没有权限的问题
mysql 跑存储过程没有权限的问题1.赋予权限GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "root";2.刷新权限FLUSH PRIVILEGES;
1305 0
|
存储 SQL 关系型数据库
MySQL使用存储过程为数据库中全部的表增加备用字段
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/84879858 ...
1751 0
|
存储 SQL
sql server 查询某个表被哪些存储过程调用
原文:sql server 查询某个表被哪些存储过程调用 sql server 查询某个表被哪些存储过程调用 select distinct object_name(id) from syscomments where id in (select id from sysobjects whe...
1334 0