如何使用dbms_scheduler计划在特定时间运行的工作

时间:2012-12-24 03:49:28

标签: oracle oracle10g oracle11g advanced-queuing dbms-scheduler

我不清楚这一点,在DBMS_SCHEDULER中我们有CREATE_PROGRAM CREATE_JOB CREATE_SCHEDULE等,在阅读oracle doc之后仍然不清楚要使用什么,在Oracle方面,我将使用DBMS_SCHEDULER在其中插入新消息在适当的时候排队,我计划创建调度程序以在特定时间执行它,然后创建程序来执行我的PL / SQL块,这将把消息排入队列中或者不使用CREATE_SCHEDULE和CREATE_PROGRAM,CREATE_JOB执行这两个作业,哪个用?请指导我,我是否正确,如果没有,请指正。

三江源

1 个答案:

答案 0 :(得分:5)

create_job是安排通话的基本电话。您不必创建命名程序或计划来执行此操作。如果你有几个想要使用这个调用的作业,那么创建一个命名的程序/日程表是有用的。您只需引用指定的程序计划,而不是让每个作业都保存该副本。

e.g。如果你有5个工作想要调用你的包MYPKG.ENTRY_PROG(param)并且每个工作只使用不同的参数值,我会说你想用create_program来定义那个pl / sql调用然后{{1引用该程序名称+设置选择的参数值。这样,如果您想稍后重命名API,您不必更改五个单独的作业来执行此操作。

如果您的工作只是一个调用其他工作不会调用的例程的独立工作,那么您不必使用create_job / create_program,只需使用{{1直接。

我使用create_schedule的一个示例是调用测试工具。我的测试工具包被称为create_job所以我定义了一些工作,这些工作将各种API排入,以便在上午9点,下午12点和下午5点运行。而不是单独定义每个作业调用我只是调用create_program,如:

pkg_test_harness.queue_tests(p_set_name in varchar2)

然后定义每个“作业”指向程序。

create_program

我没有创建命名的时间表,因为这些时间表对于单个作业是唯一的。