最简单的一个Oracle定时任务 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    最简单的一个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;

    /

    提交后提示:

    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

    说明有一个任务存在了,

最简单的一个Oracle定时任务

    执行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的任务,

电脑资料

最简单的一个Oracle定时任务》(https://www.unjs.com)。

    执行后显示如下:

    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('21-02-2008 17:37: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

最新文章