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

Oracle APEX 20.1邮件发送故障:调度器不可用问题求助

Oracle APEX 20.1 邮件调度器(ORACLE_APEX_MAIL_QUEUE)故障排查思路

1. 检查Oracle调度器核心状态

  • 查询调度器全局状态:
    SELECT status FROM dba_scheduler_global_attribute WHERE attribute = 'SCHEDULER_STATUS';
    
    若结果为DISABLED,执行以下命令启用:
    EXEC DBMS_SCHEDULER.set_scheduler_attribute('SCHEDULER_STATUS', 'ENABLED');
    
  • 查看作业执行日志定位具体错误:
    SELECT log_id, job_name, status, error# FROM dba_scheduler_job_run_details 
    WHERE job_name = 'ORACLE_APEX_MAIL_QUEUE' ORDER BY log_date DESC;
    
    根据返回的error#查询对应详细错误信息,进一步缩小故障范围。

2. 验证APEX邮件作业的权限与配置

  • 检查APEX_200200用户的调度器权限:
    SELECT grantee, privilege FROM dba_sys_privs 
    WHERE grantee = 'APEX_200200' AND privilege LIKE '%SCHEDULER%';
    
    确保用户拥有CREATE JOB、MANAGE SCHEDULER等必要权限。
  • 确认作业关联的程序配置:
    先查询作业关联的程序名:
    SELECT job_name, program_name, enabled FROM dba_scheduler_jobs 
    WHERE job_name = 'ORACLE_APEX_MAIL_QUEUE';
    
    再查看程序定义是否指向正确的APEX邮件存储过程:
    SELECT program_name, action FROM dba_scheduler_programs 
    WHERE program_name = '<上述查询到的程序名>';
    
    正常情况下,action应为APEX_MAIL.SEND_QUEUE;。

3. Windows Server环境特定排查

  • 检查Oracle调度器服务状态:
    在Windows服务列表中找到OracleScheduler<ORACLE_SID>服务,确认其处于运行中状态,若未启动则手动启动并设置为自动启动。
  • 验证Oracle服务账户权限:
    确保Oracle数据库服务运行的账户拥有足够操作系统权限,包括访问临时目录、执行PL/SQL程序的权限,避免因Windows权限限制导致作业执行失败。
  • 检查UTL_FILE_DIR配置:
    SELECT value FROM v$parameter WHERE name = 'utl_file_dir';
    
    确认配置的目录存在且可被Oracle服务账户读写,APEX邮件发送依赖该组件完成附件等操作。

4. 重建APEX邮件调度作业

  • 禁用并删除原有故障作业:
    EXEC DBMS_SCHEDULER.DISABLE('APEX_200200.ORACLE_APEX_MAIL_QUEUE');
    EXEC DBMS_SCHEDULER.DROP_JOB('APEX_200200.ORACLE_APEX_MAIL_QUEUE');
    
  • 重新初始化邮件调度作业:
    执行APEX自带的初始化脚本重建作业:
    EXEC APEX_200200.WWV_FLOW_MAIL_ADMIN.INIT_SCHEDULER_JOB;
    
  • 手动触发作业测试:
    EXEC DBMS_SCHEDULER.RUN_JOB('APEX_200200.ORACLE_APEX_MAIL_QUEUE', FALSE);
    
    执行后检查邮件队列是否被正常处理,同时查看是否有新的报错信息。

5. 检查APEX组件完整性

  • 确认APEX组件状态:
    SELECT component_name, status FROM dba_registry WHERE comp_id = 'APEX';
    
    若状态为INVALID,重新编译APEX schema对象:
    EXEC DBMS_UTILITY.COMPILE_SCHEMA('APEX_200200');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:35:22