【问题标题】:How can I track the status of my running job using Oracle's DBMS Scheduler?如何使用 Oracle DBMS_Scheduler 跟踪正在运行的作业的状态?
【发布时间】:2011-09-09 14:52:38
【问题描述】:

这可以通过 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

【问题讨论】:

    标签: oracle dbms-scheduler


    【解决方案1】:

    您最好使用表并在其上插入/更新来跟踪您的作业。 DMBS_OUTPUT 包在你有控制台的奇怪情况下是有意义的。

    【讨论】:

    • 表,它通常/通常是怎么做的?从来没有想过要走到那一步。所以即使在 sqlplus 中这也不可能?
    • 您可能希望通过带有匿名事务编译指示的存储过程写入日志表以捕获结果,即使作业本身失败并回滚。
    • @help:您从 SQL Plus 调用 dbms_scheduler.create_job,但该作业在没有 SQL Plus 的服务器上运行,与创建作业的 SQL Plus 会话分开。
    【解决方案2】:

    我建议使用 Pablo / Shannon 的表插入方法,该方法通过带有 pragma automatic_transaction 选项的 proc 进行。但是,如果这只是一个快速而肮脏的需要,另一种选择是使用 UTL_MAIL(或 UTL_SMTP,如果在 9i 或更低版本上)向自己发送电子邮件。

    【讨论】:

    • 对 utl_mail/utl_smtp 感到困惑。如果我不认识主人怎么办
    • 如果您不知道您的邮件服务器,那将使得发送邮件相当困难。 :) 我想您可以从您的电子邮件客户端设置中查找它,但这绝对不能保证数据库服务器可以与该邮件服务器通信。表格插入可能是您的最佳选择。
    猜你喜欢
    • 2018-02-17
    • 2021-10-31
    • 2016-10-09
    • 2014-04-28
    • 2018-02-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    相关资源
    最近更新 更多