在Job创建同义词的权限问题

Ykang 2008-11-11 12:21:03
我有一个存贮过程P,里面调用了创建了同义词的一个存储过程C,将过程P作为JOB执行时,说权限不够,但该过程在PL/SQL语句中执行是可以的。
简单示例如下:
CREATE OR REPLACE Procedure C(P_DbLink varchar2) authid current_user AS
begin
execute immediate 'create or replace synonym TD_DEVICE for TD_DEVICE@||p_dblink;
end;

CREATE OR REPLACE Procedure P(P_DbLink varchar2) authid current_user AS
begin
C(p_dbLink);
end;

--Job调度脚本,执行后,JOB已经创建JOb1已经返回,但执行JOB出现权限不够的错误:
declare
job1 number;
begin
dbms_job.submit(job1,'P(''LS'');',sysdate,'sysdate+120/1440');
dbms_Output.put_line(job1);
dbms_job.run(Job1);
end;



...全文
332 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueskyWide 2008-11-11
  • 打赏
  • 举报
回复
grant create any view,create any synonym,drop any view to Current_user;
又是违规昵称 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linzhangs 的回复:]
SQL codegrantcreatesynonymtousername;
[/Quote]

这个权限
范佩西_11 2008-11-11
  • 打赏
  • 举报
回复
grant create synonym to username;
sleepzzzzz 2008-11-11
  • 打赏
  • 举报
回复
这个问题是比较怪异的,我也遇到过你同样的情况.
要对调度job的用户进行一次grant即可.

grant create any synonym to user_name;
BlueskyWide 2008-11-11
  • 打赏
  • 举报
回复
--使用dba角色授权:

conn /as sysdba;
grant connect,resource,select any table to Current_user;


[Quote=引用楼主 Ykang 的帖子:]
我有一个存贮过程P,里面调用了创建了同义词的一个存储过程C,将过程P作为JOB执行时,说权限不够,但该过程在PL/SQL语句中执行是可以的。
简单示例如下:
CREATE OR REPLACE Procedure C(P_DbLink varchar2) authid current_user AS
begin
execute immediate 'create or replace synonym TD_DEVICE for TD_DEVICE@||p_dblink;
end;

CREATE OR REPLACE Procedure P(P_DbLink varchar2) authid current_user AS

[/Quote]
sleepzzzzz 2008-11-11
  • 打赏
  • 举报
回复
亦即是要显式进行授权,understand??

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧