ORA-06512 问题解决是怎样的呢

网友投稿 482 2023-12-07

ORA-06512 问题解决是怎样的呢

这期内容当中小编将会给大家带来有关ORA-06512 问题解决是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

ORA-06512 问题解决是怎样的呢

在执行存储过程时,有动态执行SQL时,有时报错ORA-06512。

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

上述就是小编为大家分享的ORA-06512 问题解决是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ORA-39213: Metadata processing is not available的解决方案是什么
下一篇:什么是云原生中间件?- 了解云原生中间件的定义,特点以及如何应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~