create or replace procedure Tablefx
as
sql_t VARCHAR2(5000);
begin
sql_t:=' analyze table tbl_trans_inter_data_ict compute statistics ';
sql_t:=sql_t || ' FOR TABLE';
sql_t:=sql_t || ' FOR ALL INDEXES';
sql_t:=sql_t || ' FOR ALL COLUMNS;';
execute immediate sql_t;
commit;
end ;
上述为表分析的存储过程,已经没有任何问题
小弟现在想创建一个定时任务,每3天半夜凌晨2点能调用上述的存储过程,请高手帮我写一下定时任务
谢谢,顺便告诉一下我怎么执行定时任务
as
sql_t VARCHAR2(5000);
begin
sql_t:=' analyze table tbl_trans_inter_data_ict compute statistics ';
sql_t:=sql_t || ' FOR TABLE';
sql_t:=sql_t || ' FOR ALL INDEXES';
sql_t:=sql_t || ' FOR ALL COLUMNS;';
execute immediate sql_t;
commit;
end ;
上述为表分析的存储过程,已经没有任何问题
小弟现在想创建一个定时任务,每3天半夜凌晨2点能调用上述的存储过程,请高手帮我写一下定时任务
谢谢,顺便告诉一下我怎么执行定时任务
--Oracle中job实现定时任务
--提交一个JOB
DECLARE
v_jobno NUMBER;
BEGIN
sys.dbms_job.submit(job => v_jobno,
what => ' begin Tablefx; end;', --调用过程
next_date => to_date('2010-09-30 02:00:00','yyyy-mm-dd hh24:mi:ss'), --明天凌晨2点
interval => 'sysdate+3') ; --每隔3天执行过程
END;
/
var job number;
BEGIN
DBMS_JOB.SUBMIT(
JOB => :JOB, /*自动生成JOB_ID*/
WHAT => 'Tablefx;', /*需要执行的过程或SQL语句*/
NEXT_DATE => trunc(sysdate+1)+1/12, /*初次执行时间*/
INTERVAL => 'TRUNC(SYSDATE+2)+1/12'); /*执行周期*/
COMMIT;
END;
/
但注意,一定要commit;
jobno number;
begin
dbms_job.submit(jobno,'Tablefx;',trunc(sysdate+1)+1/12,'trunc(sysdate+3)+1/12');
dbms_output.put_line(jobno);
commit;
end;