zoukankan      html  css  js  c++  java
  • 最简单的一个Oracle定时任务【转】

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

    说明有一个任务存在了。
    执行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('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

    以上过程全部在Oracle817下通过测试。

    http://www.th7.cn/Article/sj/ora/200911/20091112201112_2.html

  • 相关阅读:
    js 将u003C这一类东西转换为标签
    git使用
    js_03 面向对象
    初级算法 数组
    python 用execjs执行js代码
    js_02 函数
    递归
    01 .linux常用命令
    08. 脱缰的野马 crawlspider
    SPACES:“抽取-生成”式长文本摘要(法研杯总结)
  • 原文地址:https://www.cnblogs.com/Godblessyou/p/2160448.html
Copyright © 2011-2022 走看看