错误ORA-06512的问题
来源:互联网 发布:ionic lab for mac 编辑:程序博客网 时间:2024/05/24 07:23
原文链接
终于找到毛病了,原来是没有权限。虽然当前用户执行语句是有权限的,但是放到存储过程中就必须要显式的赋个权限给当前用户。以下是我找到的资料,贴出来给大家也看一下吧。
=====================
【IT168 技术文档】我们知道,用户拥有的role权限在存储过程是不可用的。如:
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
--已经可以执行了。
阅读全文
0 0
- 错误ORA-06512的问题
- 有关ora-12154错误的问题
- 解决ORA-12514错误的问题
- Oracle10gR2的ORA-06512 OLAP错误
- Oracle 有关ORA-12560: TNS:协议适配器错误 的问题
- ORA-12560: TNS: 协议适配器错误的问题
- ORA-12560: TNS: 协议适配器错误的问题(转)
- 关于ORA-00257问题的解决(归档程序错误)
- ORA-12560: TNS: 协议适配器错误的问题
- 关于ORA-00257问题的解决(归档程序错误)
- ORA-12560: TNS: 协议适配器错误的问题
- 关于ORACLE出现ORA-00904标识符错误的问题原因
- ORA-02020错误:过多的数据库连接使用中问题
- 起动crs出现的问题以及ORA-00376错误
- Oracle 的 ORA-01653 错误解决办法 表空间问题
- oracle ORA-12560: TNS: 协议适配器错误的问题
- ORA-12560: TNS: 协议适配器错误的问题
- 如何处理ORA-00376错误的恢复问题
- leetcode 377. Combination Sum IV 换钱问题
- 电量的测试方法(adb shell dumpsys batterystats)
- C语言实现顺序表
- 动态规划
- linux服务器挂载硬盘和服务器硬盘分区划分物理卷
- 错误ORA-06512的问题
- RxJava 与 Retrofit 结合使用,史上最牛搭档
- jquery中attr和prop的区别
- top命令小记~
- 从scrapy框架搭建入门python包的安装
- mysql的 日期格式化
- 简单试水nltk
- 基于汇编语言与c/c++语言混合编程的程序设计研究(一)
- Android判断网络连接状态并进入网络设置页面