日期:2014-05-17  浏览次数:21305 次

如何使JOB每月执行一次?
如何使JOB每月执行一次?

------解决方案--------------------
以下是定期运行分析的例子:

variable job1 number;
variable v_char VARCHAR2(6);
begin

:v_char:=to_char(sysdate, 'yyyy ')||to_char(sysdate, 'mm ');
dbms_job.submit(:job1, 'begin
DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ' 'AA ' ',method_opt => ' 'FOR ALL COLUMNS SIZE REPEAT ' ',cascade => TRUE);
DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ' 'BB ' ',method_opt => ' 'FOR ALL COLUMNS SIZE REPEAT ' ',granularity=> ' 'ALL ' ',cascade => TRUE);
end ; ', trunc(sysdate+1, 'DD '), 'TRUNC(LAST_DAY(SYSDATE )+5) ');
commit;
end;
/
------解决方案--------------------
TRUNC(LAST_DAY(SYSDATE )+5)

在JOB里用这句来限定时间就行了
------解决方案--------------------
你要每个月的什么时候执行啊?
如下面的JOB,是从2007年9月1日的00:00:00执行第一次,然后每个月的第一天再执行一次

DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'BSWXWMS.CREATESTOREINFO; '
,next_date => to_date( '01-09-2007 00:00:00 ', 'dd/mm/yyyy hh24:mi:ss ')
,interval => TRUNC(LAST_DAY(SYSDATE)) + 1
,no_parse => TRUE
);
SYS.DBMS_OUTPUT.PUT_LINE( 'Job Number is: ' || to_char(x));
END;
/

commit;