oracle定时执行sql,以及不自动执行定时任务的解决办法

一、创建存储过程
 

CREATE OR REPLACE PROCEDURE test_proc  IS    --test_proc存储过程名称
 BEGIN
   delete from xxx t where rownum < 100;    --需要执行的sql语句
   COMMIT;
 EXCEPTION
   WHEN OTHERS THEN
     DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback');
     ROLLBACK;
END;

二、定制定时执行任务(在PL/SQL中使用“命令窗口”,每5分钟执行一次),"切记要提交事务""切记要提交事务""切记要提交事务"

var job_num number;
begin
   dbms_job.submit(:job_num,'test_proc;',SYSDATE,'sysdate+5/24/60');
end;
/

三、查看任务状态
 

select * from DBA_JOBS

 


不自动执行定时任务的解决办法

SHOW PARAMETER JOB;		--如果为0的话,肯定不执行
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 1000;	--设置JOB_QUEUE_PROCESSES的值必须大于所执行任务的id
exec dbms_ijob.set_enabled(true);		--最后一招,未验证过。

执行以上命令后,观察"NEXT_DATE"字段值,如有变化则说明已开始自动执行任务。


 


版权声明:本文为sy_litao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。