zoukankan      html  css  js  c++  java
  • oracle创建计划任务

    特别提示:
    oracle是执行完任务,才按照interval去计算下次执行时间!!!
    
    为精确每个5分钟执行一个任务,必须自己计算时间。
    如:trunc_minute(sysdate)+5/1440
    
    create or replace function trunc_minute(v_date date) return date as
    
    begin
          return to_number(trunc(to_char(v_date, 'mi')/5))*5/(24*60) + trunc(v_date, 'hh24');
    end;

    创建存储过程

    备注:默认在存储过程中是不允许执行truncate table tablename,所以要加

    execute   immediate 
    create or replace procedure truncate_table as
    begin
           execute   immediate 'truncate table test_STATUS';
    end;

    每天3点执行

    在pl/sql

    declare  
      jobno number;
    begin
    dbms_job.submit(job =>jobno,
                        what =>'truncate__table;',
                        next_date =>sysdate,
                        interval =>'trunc(sysdate + 1) + 3/24');
    end;

    sql plus

    variable jobno number;
    begin
    sys.dbms_job.submit(job => :jobno,
    what => 'change_date;',
    next_date => to_date('18-11-2013', 'dd-mm-yyyy'),
    interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行change_date过程一次
    commit; --必须有commit,如果没有是查不到该job的!!!
    end;

    variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/sql中的局部变量。

    查看job

    select * from user_jobs;--查看当前用户的调度任务
    select * from dba_jobs_running;--查看正在执行的调度任务
    select * from dba_jobs;--查看执行完的调度任务
    select * from all_jobs; -- 查看数据库系统所有任务

    常用时间设置

    1)如果想每天凌晨1 点执行,则此参数可设置为
    'trunc(sysdate)+25/24';
    (2)如果想每周一凌晨1 点执行,则此参数可设置为
    'trunc(next_day(sysdate,1))+25/24';
    (3)如果想每月1 号凌晨1 点执行,则此参数可设置为
    'trunc(last_day(sysdate))+25/24';
    (4)如果想每季度执行一次,则此参数可设置为
    'trunc(add_months(sysdate,3),'Q')+1/24';
    (5)如果想每半年执行一次,则此参数可设置为'add_months(trunc(sysdate,'yyyy'),6)+1/24';
    (6)如果想每年执行一次,则此参数可设置为'add_months(trunc(sysdate,'yyyy'),12)+1/24'。
    
    每天运行一次
    'SYSDATE + 1'
    每小时运行一次
    'SYSDATE + 1/24'
    每10分钟运行一次
    'SYSDATE + 10/(60*24)'
    每30秒运行一次
    'SYSDATE + 30/(60*24*60)'
    每隔一星期运行一次
    'SYSDATE + 7'
    每分钟
    dbms_job.submit(:v_job_no, 'insert into job_test values(sysdate);', sysdate,
    'sysdate+1/1440');

    备注:

    oracle定时执行job queue 的后台进程是SNP,要启动

    snp,首先看系统模式是否支持

    sql> alter system enable restricted session;

    sql> alter system disenable restricted session;

    利用上面的命令更改系统的会话方式为disenable restricted,为snp的启动创建条件.


    再有就是配置job queue的启动参数,snp的启动参数位于oracle的初始化文件中,
    job_queue_processes=10   (oracle10gde 默认值)
    job_queue_interval=N

    第一行定义snp进程的启动个数为10,正常范围是0-36,根据任务的多少,可以配置
    不同的数值.

    第二行定义系统每隔几秒唤醒该进程一次.缺省是60,正常范围是1-3600秒.事实上,该进程执行完

    当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。  
    如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效

    。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。


    查看job queue的详细信息,查询数据库字典 user_jobs

    eg:
     sql> select job,next_date,next_sec,broken from user_jobs;

  • 相关阅读:
    SAP MM 采购附加费计入物料成本之二
    SAP MM 采购附加费计入物料成本?
    SAP MM 作为采购附加费的运费为啥没能在收货的时候计入物料成本?
    SAP MM 外部采购流程里的Advanced Return Management
    SAP MM 外部采购流程里的如同鸡肋一样的Advanced Returns Management功能
    SAP MM Why is the freight not included in the material cost at the time of GR?
    SAP MM: Change of material moving average price after goods receipt and invoice verification posting for PO
    SAP 创建启用了ARM功能的采购订单,报错 Shipping processing is not selected to supplier 100057 in purchase org. 0002
    GIT·代码仓库默认分支更改
    .Net/C#·运行报错缺少XXX文件,但双击无法跳转缺少位置
  • 原文地址:https://www.cnblogs.com/linn/p/4317514.html
Copyright © 2011-2022 走看看