1、 在你的过程签名后临时声明授权:authid current_user 。
代码如下:
create or replace procedure proc_test_name authid current_user
begin
execute immediate 'create database link dblink_name connect to user_name identified by user_pwd using ''db_remote'' ' ;
end;
2、 给你的用户再授权一次。
grant create database link to user_name(永久的)。
对于以上的操作,Oracle也没有给出明确的解释,网上相关的资料也较少。与同事讨论了下可能的原因,可能是Oracle 权限管理的一个小bug吧。Oracle中的权限分系统权限和对象权限,dba应该是一种角色型的权限,它表示该角色下的用户可以干任何事情,但是“可以干”不代表直接就可以干,还需要再“申请”下,确实有点费解。