【问题标题】:oracle dbms_scheduler.create_job() error when executed within stored procedure在存储过程中执行 oracle dbms_scheduler.create_job() 错误
【发布时间】:2019-08-12 05:33:57
【问题描述】:

从匿名块创建工作工作正常:

begin
  SYS.DBMS_SCHEDULER.create_job(
  job_name    =>     'test_job',
  job_type    =>     'PLSQL_BLOCK',
  job_action  =>     'begin null; end;',
  enabled     =>     TRUE,
  auto_drop   =>      TRUE);
end;

结果:

PL/SQL 过程成功完成。

从存储过程创建作业:

create or replace procedure pr_create_job is
begin
  SYS.DBMS_SCHEDULER.create_job(
  job_name =>'test_job',
  job_type =>'PLSQL_BLOCK',
  job_action =>'begin null; end;',
  enabled     => TRUE,
  auto_drop   => TRUE);
end pr_create_job;

Begin
  pr_create_job;
End;

结果:

错误报告 - ORA-27486: 权限不足 ORA-06512: 在 “SYS.DBMS_ISCHED”,第 135 行 ORA-06512:在“SYS.DBMS_SCHEDULER”,行 271 ORA-06512:在“PR_CREATE_JOB”,第 3 行 ORA-06512:在第 2 行 27486. 00000 - “权限不足”

【问题讨论】:

  • 可能是因为使用dbms_scheduler 的权限是通过角色授予用户的。它应该直接授予用户。
  • 谢谢,CREATE JOB 权限是通过角色授予的。

标签: oracle stored-procedures plsql dbms-scheduler


【解决方案1】:

正如Kaushik Nayak 提到的,CREATE JOB 权限是通过角色授予的,而不是直接授予用户,直接授予用户解决了这个错误。

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2014-12-04
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多