DBMS_SCHEDULER.create_program创建的运行对象

时间:2011-06-22 13:07:43

标签: database oracle

我在oracle中遇到了DBMS_SCHEDULER的问题。我有一个外部程序(驻留在运行oracle的服务器上的perl脚本),我希望根据某些条件从我的存储过程运行。所以我学到了可以通过创建DBMS_SCHEDULER.create_program来运行外部程序。所以我只做了那个。现在问题,我有一个在oracle中创建的程序对象,但是我无法执行这个对象。我一直在尝试这样的事情来运行此对象:

执行MY_PROGRAM_OBJECT;

但每次我这样做都是说对象MY_PROGRAM_OBJECT无效(仅供参考......我可以使用select * from ALL_OBJECTS看到这个对象)。现在我真诚地认为必须有其他方法来运行它。不幸的是,我似乎没有找到任何正式的文件。对于一个运行一个crated程序对象。现在你可以告诉我它是如何被执行的吗?是执行我必须创建另一个工作并从那里指出它,我没有看到任何理性。

P.S。我有DBMS_SCHEDULER的执行权限。 在这方面的所有帮助将不胜感激。

非常感谢,为了节省时间!

1 个答案:

答案 0 :(得分:1)

您应该创建一个使用您创建的程序的作业。类似的东西:

exec dbms_scheduler.create_job(
job_name=>'JOB_RUN_MY_PROGRAM',
program_name=>'PROG_RUN_MY_PROCEDURE',
schedule_name=>'INTERVAL_EVERY_DAY',
enabled=>true,
auto_drop=>false,
comments=>'This will run my scheduler program');

请注意,需要通过dbms_scheduler.create_schedule创建计划“INTERVAL_EVERY_DAY”。

要手动运行或停止,可以使用dbms_scheduler.run_job和dbms_scheduler.stop_job。使用dba_scheduler_jobs查看您刚才创建的作业的状态。

至于创建程序的基本原理,它们可以帮助您创建涉及工作链的更复杂的情况。您可以定义链步骤以指向程序并定义有关如何继续链的规则(按照定义的顺序同时或按顺序运行步骤)。