Oracle定时任务与存储过程

xiaoxiao2021-02-28  139

最简单的一个Oracle定时任务 一、在PLSQL中创建表: create table HWQY.TEST ( CARNO     VARCHAR2(30), CARINFOID NUMBER ) 二、在PLSQL中创建存储过程: create or replace PRocedure pro_test AS carinfo_id number; BEGIN --select s_CarInfoID.nextval into carinfo_id --from dual; insert into test(test.carno,test.carinfoid) values(carinfo_id,'123'); commit; end pro_test; 三、在SQL命令窗口中启动任务: 在SQL>后执行: VARIABLE jobno number; begin DBMS_JOB.SUBMIT(:jobno,     'pro_test;',     SYSDATE,'sysdate+1/24/12');         commit;     end;     /     declare job1 number;         begin            dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');     end;   提交后提示: PL/SQL procedure successfully completed jobno --------- 1 四、跟踪任务的情况(查看任务队列): SQL> select job,next_date,next_sec,failures,broken from user_jobs;        JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN ---------- ----------- ---------------- ---------- ------          1 2008-2-22 ?01:00:00                  0 N 说明有一个任务存在了。 执行select * from test t查看定时任务的结果。可以看出定时任务是正常执行了的。 五、停止已经启动的定时任务: 先执行select job,next_date,next_sec,failures,broken from user_jobs; 以查看定时任务的job号。 在SQL>中执行下面的语句停止一个已经启动的定时任务: begin dbms_job.remove(1); commit; end; / 表示停止job为1的任务。 执行后显示如下: PL/SQL procedure successfully completed 六、查看进程数: show parameter job_queue_processes; 必须>0,否则执行下面的命令修改: alter system set job_queue_processes=5; 七、再创建一个任务(每5分钟执行一次): variable jobno number; begin dbms_job.submit(:jobno, 'pro_test;', sysdate,'sysdate+1/24/12'); commit; end; / 建立一个定时任务后,在PLSQL中查看JOB,它的sql语句类似的是如下: begin sys.dbms_job.submit(job => :jobno,                       what => 'pro_test;',                       next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'),                       interval => 'sysdate+1/24/12'); commit; end; / 所以,创建一个任务的完整的格式是: variable jobno number; begin sys.dbms_job.submit(job => :jobno,                       what => 'pro_test;',                       next_date => to_date('05-05-2017 14:36:26', 'dd-mm-yyyy hh24:mi:ss'),                       interval => 'sysdate+1/24/12'); commit; end; / --系统会自动分配一个任务号jobno。 八、 执行select job,next_date,next_sec,failures,broken from user_jobs; 结果:    JOB NEXT_DATE NEXT_SEC FAILURES BROKEN 1 1 2008-2-22 AM 01:00:00 01:00:00 0 N 2 2 2008-2-21 PM 05:42:45 17:42:45 0 N 3 3 2008-2-21 PM 05:42:45 17:42:45 0 N
转载请注明原文地址: https://www.6miu.com/read-27090.html

最新回复(0)