博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORA-06512 问题解决
阅读量:4315 次
发布时间:2019-06-06

本文共 1006 字,大约阅读时间需要 3 分钟。

SQL> 
select 
from 
dba_role_privs 
where 
grantee=
'SUK'
;
 
  
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
  
------------ ------------ ------------ ------------
  
SUK DBA 
NO 
YES
  
SUK 
CONNECT 
NO 
YES
  
SUK RESOURCE 
NO 
YES
 
  
--用户SUK拥有DBA这个role
 
  
--再创建一个测试存储过程:
  
create 
or 
replace 
procedure 
p_create_table  
  
is
  
begin
  
Execute 
Immediate 
'create table create_table(id int)'
;
  
end 
p_create_table;
 
  
--然后测试
  
SQL> 
exec 
p_create_table;
 
  
begin 
p_create_table; 
end
;
 
  
ORA-01031: 权限不足
  
ORA-06512: 在
"SUK.P_CREATE_TABLE"
, line 3
  
ORA-06512: 在line 1
 
  
--可以看到,即使拥有DBA role,也不能创建表。role在存储过程中不可用。
  
--遇到这种情况,我们一般需要显式进行系统权限,如grant create table to suk;
  
--但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程
  
--实际上,oracle给我们提供了在存储过程中使用role权限的方法:
  
--修改存储过程,加入Authid Current_User时存储过程可以使用role权限。
  
create 
or 
replace 
procedure 
p_create_table  
  
Authid Current_User 
is
  
begin
  
Execute 
Immediate 
'create table create_table(id int)'
;
  
end 
p_create_table;
 
  
--再尝试执行:
  
SQL> 
exec 
p_create_table;
 
  
PL/SQL 
procedure 
successfully completed
 
  
--已经可以执行了。

转载于:https://www.cnblogs.com/jzbml/p/5991918.html

你可能感兴趣的文章
文件上传
查看>>
不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况...
查看>>
Linux的IO性能监控工具iostat详解
查看>>
老杨聊架构:每个架构师都应该研究下康威定律
查看>>
1022: 锤子剪刀布
查看>>
RESTful-rest_framework认证组件、权限组件、频率组件-第五篇
查看>>
手机自带功能调用
查看>>
百度搜索引擎取真实地址-python代码
查看>>
java 多线程 Future callable
查看>>
字符串操作练习:星座、凯撒密码、99乘法表
查看>>
Java实现字符串转换十六进制MD5值
查看>>
MySQL数据库8(十七)数据库的备份还原
查看>>
tensorflow 梯度下降以及summary
查看>>
9、接口和抽象类
查看>>
timeStamp和GMT时间的转换
查看>>
探索J2ME应用:如何用GCF通信
查看>>
jquery ajaxform上传文件返回不提示信息的问题
查看>>
实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上...
查看>>
适配器
查看>>
c#截取字符串
查看>>