You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行含PDPT_PTY.FUNC的DBMS_PARALLEL_EXECUTE脚本遇ORA-27486权限不足

ORA-27486权限缺失排查(DBMS_PARALLEL_EXECUTE调用自定义函数场景)

当使用DBMS_PARALLEL_EXECUTE.RUN_TASK时调用自定义函数PDPT_PTY.FUNC(col1)触发ORA-27486,直接使用字段col1却正常执行,说明问题出在自定义函数的权限传递或调度器权限上,以下是需要补充的权限项:

1. 自定义函数的执行权限

确保执行并行任务的用户(任务运行时的执行者,可能是当前用户或指定的调度用户)拥有PDPT_PTY.FUNC的执行权限:

GRANT EXECUTE ON PDPT_PTY.FUNC TO 任务执行用户;

如果是当前用户执行任务,先在当前会话中直接调用PDPT_PTY.FUNC(col1)验证是否能正常运行,排除基础权限问题。

2. Oracle Scheduler相关权限

DBMS_PARALLEL_EXECUTE底层依赖Oracle Scheduler执行并行任务,执行者需要调度器相关权限:

  • 基础必要权限:
    GRANT CREATE JOB TO 任务执行用户;
    
  • 若涉及复杂任务管理,可补充授予:
    GRANT MANAGE SCHEDULER TO 任务执行用户;
    

注意:遵循最小权限原则,避免直接授予CREATE ANY JOB(除非业务场景必需)。

3. 自定义函数内部对象的权限(若函数访问其他对象)

如果PDPT_PTY.FUNC内部访问了其他表、视图或函数,需要确保:

  • 函数所有者PDPT_PTY对这些内部对象有相应的访问权限(如SELECT、EXECUTE);
  • 若函数使用AUTHID CURRENT_USER定义,任务执行者需要对这些内部对象有直接权限;若使用默认的AUTHID DEFINER,则确保PDPT_PTY的权限足够覆盖函数内部所有操作。

验证步骤

查询调度器日志获取更详细的错误定位:

SELECT log_id, job_name, status, error#, additional_info 
FROM DBA_SCHEDULER_JOB_RUN_DETAILS 
WHERE job_name LIKE '%你的并行任务名称%';

其中additional_info字段会明确指出缺失的具体权限项。

内容的提问来源于stack exchange,提问作者Ranjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:13:15