• 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 Permission中英对照
    常用vi命令——鸟哥的私房菜
    转载 Android拍照、录像、录音代码范例
    转载 Android ListView滚动提示等待框
    Android ViewFlipper装载baseAdapter
    转载 Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    转载 Android解决通过Intent调用系统拍照程序,返回图片太小的问题
    垂直输出字符串数组
    Yahoo!网站性能最佳体验的34条黄金守则__JavaScript和CSS
    将16进制转换成10进制
  • 原文地址:https://www.cnblogs.com/quxiaojie/p/4184103.html
Copyright © 2020-2023  润新知