zoukankan      html  css  js  c++  java
  • oracle定制定时执行任务

    oracle定制定时执行任务

    主要通过oracle数据库的job来定制一个简单的定时执行任务(eg:定制每隔一分钟向一个表中插入语句)

    oacle定时任务的缘由:项目中要在固定的时间,把一个数据库中某些表的数据同步到另外一个数据库。把同步的脚本放在一个存储过程中。然后在固定的时间去执行这个存储过程就可以了。

    注意:以下所有的操作都是在system用户下执行。采用pl/sql做的客户端登录。

    (1)新建一个表,命名为test,建表语句如下:

    create table system.test(

    id number(2) primary key,

    btime date

    )

    (2)新建一个存储过程(在sql窗口下执行),命名为test_proc,存储过程的语句如下:

    create or replace procedure test_proc is

    begin

      insert into system.test(id,btime) values(nvl((select max(id) from system.test)+1,0),sysdate);

    commit;

    exception

     when others then

      dbms_output.put_line('Exception happened,data was rollback');

    rollback;

    end;

    (3)定制定时执行任务

    假设我们要每隔一分钟向表test中插入一条记录,我们只需要每隔一分钟执行一次存储过程test_proc即可。

    在pl/sql的command window输入一下语句:

    variable job_num number;

    begin

      dbms_job.submit(:job_num,'test_proc;',sysdate,'sysdate+1/24/60');

    commit;

    end;

    /

    (4)查看执行结果

      a.查看新增的job是否成功

      通过查看dba_jobs表中的what字段可以看到最后一条记录即时我们刚新建的定时任务;

      

      select * from dba_jobs;

      b.查看test表是否插入了数据

      select * from test;

    (5)如何删除一个job

      在pl/sql的command window执行一下语句:

      exec dbms_job.remove(81);

      说明:这里的数字81是对应dba_jobs表中当前要删除的job记录所在行的job字段的值

    每天运行一次 'SYSDATE+1'
    每小时运行一次 'SYSDATE+1/24'
    每10分钟运行一次 'SYSDATE+10/(60*24)'
    每30秒运行一次 'SYSDATE+30/(60*24*60)'
    每隔一星期运行一次 'SYSDATE+7'
  • 相关阅读:
    注册系统
    android登录界面
    android作业 购物界面
    第六周jsp作业
    JSP第四周
    JSP第二次作业
    JSP第一次作业
    第一周软件测试
    第九次安卓
    购物菜单
  • 原文地址:https://www.cnblogs.com/quxiaojie/p/4184103.html
Copyright © 2011-2022 走看看