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下通过测试。

  • 相关阅读:
    【每日一具3】推荐一个4K、蓝光、3D高清影视下载站,影视资源丰富 发烧友必备
    Python对程序中异常进行处理
    通过一个简单的例子,了解 Cypress 的运行原理
    ABAP 标准培训教程 BC400 学习教程之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍
    如何安装最新版本的 SAP ABAP Development Tool ( ADT ) 2021年度更新
    ABAP R3 时代著名的 SFLIGHT 航班模型测试数据,到了S/4HANA时代的进化版
    SAP Fiori Elements 应用的 i18n 语法使用方式
    SAP Fiori Elements List Report 里的表格类型(tableType)是如何决定出来的
    使用 XSLT 给 SAP PI 增加 CDATA
    SAP Fiori Elements 学习笔记
  • 原文地址:https://www.cnblogs.com/jason-liu-blogs/p/3295876.html
Copyright © 2011-2022 走看看