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点能调用上述的存储过程,请高手帮我写一下定时任务
谢谢,顺便告诉一下我怎么执行定时任务

解决方案 »

  1.   


    --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;
    /
      

  2.   

    --在sqlplus中或pl/sql developer命令窗口执行
    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; 
    /
      

  3.   

    上面写成每2天了,改为3就可以了,
    但注意,一定要commit;
      

  4.   

    这个语句在哪里执行呢,唉,我在SQL窗口中执行了你的那个语句,是无效的语句,能具体给我讲讲么
      

  5.   

    sql_t VARCHAR2(5000);declare
    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;