如何在Oracle自治数据库中调度SQL+Python+OML4PY代码执行?
针对ADB上SQL+Python+OML4PY ETL脚本每日调度的最佳方案
方案一:OML Notebook 内置调度(直接适配已有代码)
你已经完成Notebook代码编写,这个方案最直接落地,操作步骤如下:
- 打开目标OML Notebook,点击右上角的调度图标(时钟样式)
- 在配置面板设置执行频率为每日,指定具体执行时间点
- 选择对应Python环境(需包含OML4PY依赖),确认作业拥有操作目标ADB表的权限
- 保存调度任务,系统会按设定时间后台自动执行Notebook代码
注意事项:
- 调度执行不占用前端会话,可在OML控制台的任务调度模块查看日志、失败告警
- 这是OML生态内的官方推荐轻量方案,适合快速部署已调试完成的Notebook代码
方案二:ADB原生数据库调度作业(生产级场景首选)
如果ETL逻辑复杂、需和ADB原生能力深度集成,可使用DBMS_SCHEDULER包实现调度,步骤如下:
- 将Notebook中的Python+OML4PY代码封装为OML脚本(在OML控制台脚本库中创建,复用现有代码)
- 用PL/SQL创建定时作业,示例代码:
BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'DAILY_ETL_JOB', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN OML_SCRIPT.RUN_SCRIPT(''你的OML脚本名称''); END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY; BYHOUR=2; BYMINUTE=0;', -- 每日凌晨2点执行 enabled => TRUE, comments => '每日执行SQL+Python+OML4PY ETL作业' ); END; /
- 通过
USER_SCHEDULER_JOBS、USER_SCHEDULER_JOB_LOG等视图监控作业状态与执行日志
核心优势:
- 基于ADB原生调度能力,稳定性更强,适配生产级核心ETL任务
- 可与数据库备份、统计信息收集等其他作业统一管理
- 支持灵活调度规则(如节假日排除、复杂周期设置)
方案选择建议
- 若代码已在Notebook调试完成、ETL逻辑简单,优先用OML Notebook调度,配置快、易维护,符合OML使用流程
- 若为生产环境核心任务,需精细监控、权限控制或联动其他数据库作业,选择DBMS_SCHEDULER调度OML脚本,更贴合企业级生产实践
内容的提问来源于stack exchange,提问作者Joe Hahn
相关产品推荐
相关产品推荐

