如何使用Oracle的DBMS Scheduler跟踪正在运行的作业状态?

4

Oracle的调度程序是否支持这种功能?我只想跟踪它当前正在执行的位置,当作业运行时获取反馈。

dbms_scheduler.create_job(
    job_name => 'hello_oracle_scheduler',
    job_type => 'PLSQL_BLOCK',
    job_action => 'BEGIN DBMS_OUTPUT.PUT_LINE('' ''); DBMS_OUTPUT.PUT_LINE(''Hello world of scheduler. Time to execute scheduled jobs!!!''); END;',
    number_of_arguments => 0
2个回答

7

为了跟踪你的JOBs,最好使用表格并对其进行插入/更新。在你拥有控制台的奇怪情况下,DMBS_OUTPUT包是有意义的。


表格,这通常是/通常是这样做的吗?从来没有想过要这么麻烦。所以即使在sqlplus中也不可能实现吗? - help
1
您可能希望通过使用匿名事务指示符的存储过程写入日志表,以便在作业本身失败并回滚时捕获结果。 - Shannon Severance
1
@help: 你可以在SQL Plus中调用dbms_scheduler.create_job,但是该作业将在服务器上独立于创建作业的SQL Plus会话运行。 - Shannon Severance

3
我建议使用Pablo/Shannon的方法,通过带有pragma autonomous_transaction选项的过程进行表格插入。然而,另一个选择是如果只是一个快速和脏的需求,可以使用UTL_MAIL(或者在9i或更低版本上使用UTL_SMTP)向自己发送电子邮件。

困惑于utl_mail/utl_smtp。如果我不知道主机怎么办? - help
如果您不知道自己的邮件服务器,那么发送邮件会变得相当困难。:)我想您可以从电子邮件客户端设置中查找它,但这绝对不能保证数据库服务器能够与该邮件服务器通信。插入表可能是您最好的选择。 - Craig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接