Oracle 如何在pl/sql包中定义dbms_调度程序。创建_作业?
其想法是创建一个计划作业,该作业将运行一个包,该包将删除超过6个月的分区 问题是如何在PL/SQLDeveloper中创建另一个包,其中包含dbms_调度程序作业Oracle 如何在pl/sql包中定义dbms_调度程序。创建_作业?,oracle,plsql,plsqldeveloper,dbms-scheduler,plsql-package,Oracle,Plsql,Plsqldeveloper,Dbms Scheduler,Plsql Package,其想法是创建一个计划作业,该作业将运行一个包,该包将删除超过6个月的分区 问题是如何在PL/SQLDeveloper中创建另一个包,其中包含dbms_调度程序作业 非常感谢您的帮助。为什么要在包中添加作业?无论如何,您可以将此添加到您的包中 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'delete_partition', job_type => 'STORED_PROCEDURE
非常感谢您的帮助。为什么要在包中添加作业?无论如何,您可以将此添加到您的包中
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'delete_partition',
job_type => 'STORED_PROCEDURE',
start_date => '28-APR-08 07.00.00 PM Australia/Sydney',
repeat_interval => 'FREQ=MONTHLY;INTERVAL=1', /* every month */
end_date => '20-NOV-08 07.00.00 PM Australia/Sydney',
comments => 'Running on the 17th of every month');
END;
/
你为什么要那样做?您将有一个调度作业,该作业调用一个过程,该过程创建一个作业,该作业调用一个。。。等。这是作业,程序已安排,它将每月运行。仅此而已,不是吗?
'28-APR-08 07.00.00 PM Australia/Sydney'
是一个字符串,而不是日期或时间戳。使用时间戳'2018-04-28 07:00:00澳大利亚/悉尼'
或到时间戳。而且end\u date
应该是NULL
我假设你不知道作业在某个时间停止了什么。好吧,让我给你一点关于我在这里尝试做什么的上下文。所以,我们的目标是清除20个分区表中早于6个月的日志数据。我现在通过处理一个表开始这项工作,所以我创建了一个PurgePackage,其中包括一个过程,该过程处理删除6个月前分区的for循环。因此,我现在想创建一个计划作业,每天运行PurgePackage。这就是为什么我说我希望这个shceduler单独保存,而不是将它添加到PurgePackage中。希望这有助于您现在了解更多。
-- Run a job immediately. If use_current_session is TRUE the job is run in the
-- user's current session. If use_current_session is FALSE the job is run in the
-- background by a dedicated job slave.
BEGIN
DBMS_SCHEDULER.RUN_JOB(
JOB_NAME => 'delete_partition',
USE_CURRENT_SESSION => FALSE);
END;
/