精华内容
下载资源
问答
  • 1、创建任务执行的存储过程,如名称为...在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1、创建任务执行的存储过程,如名称为YxtestJob,向测试...
    • 1、创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据
    • 2、定时器对应的DBMS_Jobs文件夹,右键新建(new)
    • 3、创建任务
    • 注:job的定时执行和时间间隔说明
    • 查看任务

    在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法:

    1、创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据

    create or replace procedure YxtestJob is
    begin
      insert into A8(A1,name) values(sysdate,'test');
    
    end;

    2、定时器对应的DBMS_Jobs文件夹,右键新建(new)

    3、创建任务

    (1)、在what值中填写待执行的存储过程,多个可以,隔开

    (2)、在间隔中填写执行时间策略;(具体写法见下述备注)

     

    注:job的定时执行和时间间隔说明

     

    间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
    (1).每分钟执行
    Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

    每小时执行

    Interval => TRUNC(sysdate,'hh') + 1/ (24)

    (2).每天定时执行
    例如:每天的凌晨1点执行
    Interval => TRUNC(sysdate+ 1)  +1/ (24)

    (3).每周定时执行
    例如:每周一凌晨1点执行
    Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

    (4).每月定时执行
    例如:每月1日凌晨1点执行
    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

    (5).每季度定时执行
    例如每季度的第一天凌晨1点执行
    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

    (6).每半年定时执行
    例如:每年7月1日和1月1日凌晨1点
    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

    (7).每年定时执行
    例如:每年1月1日凌晨1点执行
    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

    查看任务

    如果想查看一些脚本,处理通过打开文件夹的方式,也可以使用更方便的sql语句进行查看。

     

    SELECT * FROM dba_jobs;
    

    注意,如果next_date是4000-1-1表示这个脚本已经是停止状态  

     

    转载于:https://www.cnblogs.com/tanlei-sxs/p/10001622.html

    展开全文
  • oracle定时任务

    2015-01-19 10:09:42
    plsql下新建一个sql窗口就可以执行的oracle定时任务
  • 1、创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 create or replace procedure YxtestJob is begin insert into ztest(name,createdate) values('test',sysdate); end; 2、定时器对应的DBMS_...

    1、创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据

    create or replace procedure YxtestJob is
    begin
      insert into ztest(name,createdate)
      values('test',sysdate);
    
    end;
    

    2、定时器对应的DBMS_Jobs文件夹,右键新建(new)
    在这里插入图片描述
    3、创建任务

    (1)、在what值中填写待执行的存储过程,多个可以,隔开

    (2)、在间隔中填写执行时间策略;(具体写法见下述备注)

    在这里插入图片描述
    注:job的定时执行和时间间隔说明

    间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
    (1).每分钟执行
    Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60)

    每小时执行

    Interval => TRUNC(sysdate,‘hh’) + 1/ (24)

    (2).每天定时执行
    例如:每天的凌晨1点执行
    Interval => TRUNC(sysdate+ 1) +1/ (24)

    (3).每周定时执行
    例如:每周一凌晨1点执行
    Interval => TRUNC(next_day(sysdate,‘星期一’))+1/24

    (4).每月定时执行
    例如:每月1日凌晨1点执行
    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

    (5).每季度定时执行
    例如每季度的第一天凌晨1点执行
    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q’) + 1/24

    (6).每半年定时执行
    例如:每年7月1日和1月1日凌晨1点
    Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+1/24

    (7).每年定时执行
    例如:每年1月1日凌晨1点执行
    Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+1/24

    TRUNC(LAST_DAY(SYSDATE))+5+2/24;这句话的意思是每个月的5号的凌晨两点;

    例子如下:
    1、每分钟执行
    Interval => TRUNC(sysdate, ‘mi’)+1/(24*60)
    2、每天定时执行
    例如:每天的凌晨2点执行
    Interval => TRUNC(sysdate)+1+2/(24)
    3、每周定时执行
    例如:每周一凌晨2点执行
    Interval => TRUNC(next_day(sysdate, 2))+2/24 --星期一,一周的第二天
    4、每月定时执行
    例如:每月1日凌晨2点执行
    Interval => TRUNC(LAST_DAY(SYSDATE))+1+2/24
    5、每季度定时执行
    例如每季度的第一天凌晨2点执行
    Interval => TRUNC(ADD_MONTH(SYSDATE), 3),‘Q’)+2/24
    6、每半年定时执行
    例如:每年7月1日和1月1日凌晨2点
    Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+2/24
    7、每年定时执行
    例如:每年1月1日凌晨2点执行
    Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+2/24

    4.查看任务

    如果想查看一些脚本,处理通过打开文件夹的方式,也可以使用更方便的sql语句进行查看。

    SELECT * FROM dba_jobs;
    

    注意,如果next_date是4000-1-1表示这个脚本已经是停止状态。
    在这里插入图片描述
    (1).查看DBMS_Jobs脚本是否死掉

    select job, next_date, next_sec, failures, broken from user_jobs;
    

    select job,last_date,last_sec,broken,failures,interval, what from dba_jobs
    在这里插入图片描述
    说明

    JoB: 任务号。

    next_date:job下次执行的时间;

    next_sec:下次执行时间时分秒;

    FAILURES :错误次数,次数累计到16则中断,如果中间有执行成功的情况,则重置为0;
    BROKEN : 中断标记 ,‘N正常、Y中断’ ;



    ===============================================================================
    简单测试job的创建过程案例:

    1,先创建一张JOB_TEST表,字段为a 日期格式

    SQL> create table JOB_TEST(a date);

    Table created

    SQL> commit;

    Commit complete

    2,创建一个存储过程 bb 作用是往pig表中插入数据

    SQL> create or replace procedure JOB_PRO_TEST as

    2 begin

    3 insert into JOB_TEST values(sysdate);

    4 end;

    5 /

    Procedure created

    3,创建一个job,名称为job2010 ;作用是每分钟(60×24=1440)执行一次存储过程JOB_PRO_TEST。

    SQL> variable job2010 number;

    SQL> begin

    2 dbms_job.submit(:job2010,‘JOB_PRO_TEST;’,sysdate,‘sysdate+1/1440’);

    3 end;

    4 /

    注意:这里系统自动生成job id 为41

    PL/SQL procedure successfully completed

    job2010


    41

    4,运行job2010

    SQL> begin

    2 dbms_job.run(:job2010);

    3 end;

    4 /

    PL/SQL procedure successfully completed

    job2010


    41

    5,删除job2010

    SQL> begin

    2 dbms_job.remove(:job2010);

    3 end;

    4 /

    6,查询jobs的相关视图

    select job,last_date,last_sec,broken,failures,interval, what from dba_jobs

    详解 dba_jobs中几个比较重要的字段

    job: 指的是job的id号。比如上面的 41

    failures:job执行的时候失败次数,如果超过了15次,那么broken列将被标为Y,以后就不会运行该job了

    broken:默认为N,如果为Y,意味着不再执行该job!

    interval:执行job的间隔时间。

    what:该job的实际工作。

    二:job 的相关知识:

    1,DBA_JOBS

    DBA_JOBS

    ===========================================

    字段(列) 类型 描述

    JOB NUMBER 任务的唯一标示号

    LOG_USER VARCHAR2(30) 提交任务的用户

    PRIV_USER VARCHAR2(30) 赋予任务权限的用户

    SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式

    LAST_DATE DATE 最后一次成功运行任务的时间

    LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒

    THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为null

    THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒

    NEXT_DATE DATE 下一次定时运行任务的时间

    NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒

    TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒

    BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行

    INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式

    FAILURES NUMBER 任务运行连续没有成功的次数

    WHAT VARCHAR2(2000) 执行任务的PL/SQL块

    CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符

    CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙

    CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙

    NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置

    MISC_ENV RAW(32) 任务运行的其他一些会话参数

    展开全文
  • 1、创建定时向表中插入数据的存储过程,名为testJob。 CREATE OR REPLACE PROCEDURE "testJob" AS BEGIN EXECUTE IMMEDIATE 'INSERT INTO TABLE_HIS SELECT * FROM TABLE_AI'; COMMIT; END; 2、...

    1、创建定时向表中插入数据的存储过程,名为testJob。

    CREATE OR REPLACE
    PROCEDURE "testJob" AS
    BEGIN
    	EXECUTE IMMEDIATE 'INSERT INTO TABLE_HIS SELECT * FROM TABLE_AI';
    	COMMIT;
    END;

    2、使用plsql找到定时器对应的DBMS_Jobs文件夹,右键new。

    3、设置定时任务

    (1)、在what值中填写待执行的存储过程,可以多个,用逗号(,)隔开。

    (2)、在间隔中填写执行时间策略。具体如下:

    附:定时执行时间间隔说明

     间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

    (1)、每分钟执行
    Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

    每小时执行

    Interval => TRUNC(sysdate,'hh') + 1/ (24)

    (2)、每天定时执行
    例如:每天的凌晨1点执行
    Interval => TRUNC(sysdate+ 1)  +1/ (24)

    (3)、每周定时执行
    例如:每周一凌晨1点执行
    Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

    (4)、每月定时执行
    例如:每月1日凌晨1点执行
    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

    (5)、每季度定时执行
    例如每季度的第一天凌晨1点执行
    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

    (6)、每半年定时执行
    例如:每年7月1日和1月1日凌晨1点
    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

    (7)、每年定时执行
    例如:每年1月1日凌晨1点执行
    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

    展开全文
  • Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER 来替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB 提供了更强大的功能和更灵活的机制 管理,但DBMS_JOB 包的使用相对比较简单,也基本...
  • 2、定义一个定时器(在plsql里操作) a、首先选择当前用户(My objects) 否则后面会报错“必须声明标识符” b、右键DBMS_Jobs,选择new,打开右侧界面 c、what值填写存储过程的名字,间隔为一分钟执行一次(想...
    1、定义一个存储过程(这是最简单的形式,复杂的形式有输入输出参数。详见: https://www.cnblogs.com/Zeros/p/8081080.html
    CREATE OR REPLACE PROCEDURE timedTask iS  -- timedTask 为存储过程的名字
      BEGIN
        --开始写sql语句(根据自己的需要去写)
        DELETE test_table2;
        INSERT INTO Test_table2 SELECT * FROM Test_table1;
        --最后记得提交
        COMMIT;
      END;

    1.2测试定义的存储过程

    declare
      i integer;
    begin
      timedTask;
    end;

    2、定义一个定时器(在plsql里操作

        a、首先选择当前用户(My objects)  否则后面会报错“必须声明标识符”
        b、右键DBMS_Jobs,选择new,打开右侧界面
        c、what值填写存储过程的名字,间隔为一分钟执行一次(想设置其他时间 详见下面的补充)
        d、只需填写这两项,点击应用,即可在DBMS_Jobs里面看到新建的定时器(名字为下图 作业的值)
     
     
    2、定义一个定时器( sql语句操作,但是没有实际操作,不知道是否能成功
    declare
    jobno number;
    begin dbms_job.submit(
      jobno,--定时器ID,系统自动获得
      'PRC_INSERT;', --what执行的过程名
       sysdate,--next_date,定时器开始执行的时间,这样写表示立即执行
      'sysdate + 15/1440'--interval,设置定时器执行的频率,这样写每隔15分钟执行一次
    );
    commit;
    end;

     

    3、定时器操作 (括号里的数字63,62 为 定时器的ID
     
    3.1、关闭一个定时器
    begin
    DBMS_JOB.BROKEN(63,TRUE); 
    COMMIT;
    end;
    
    3.2、开启一个定时器
    begin
    DBMS_JOB.BROKEN(63,false);
    COMMIT;
    end;
    
    3.3、查询定义的定时器
    select job, what, next_date, next_sec, sysdate, failures,  broken,interval from user_jobs
    
    3.4、修改定时器
    begin
      dbms_job.change(62 ,'MY_JOP;', sysdate,'sysdate+2/(24*60)' );
      commit;
    end;
    
    begin
      dbms_job.change(62 ,'MY_JOP;', to_date('2011-08-01 22:00:00', 'yyyy-mm-dd hh24:mi:ss'),'sysdate+1');
      commit;
    end;
    
    3.5、删除定时器
    begin
    dbms_job.remove(41);
    commit;
    end;

     

    补充: (转载)
    间隔/interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
    (1).每分钟执行
    Interval => TRUNC(sysdate,'mi') + 1/ (24*60)
    每小时执行

     

    Interval => TRUNC(sysdate,'hh') + 1/ (24)
     
    (2).每天定时执行
    例如:每天的凌晨1点执行
    Interval => TRUNC(sysdate+ 1)  +1/ (24)
     
    (3).每周定时执行
    例如:每周一凌晨1点执行
    Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
     
    (4).每月定时执行
    例如:每月1日凌晨1点执行
    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
     
    (5).每季度定时执行
    例如每季度的第一天凌晨1点执行
    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
     
    (6).每半年定时执行
    例如:每年7月1日和1月1日凌晨1点
    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
     
    (7).每年定时执行
    例如:每年1月1日凌晨1点执行
    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24
    展开全文
  • 创建Oracle定时任务

    千次阅读 2019-05-24 10:08:42
    PLSQL创建Oracle定时任务 用语句创建 1、创建任务执行的存储过程,如名称为testJob,向测试表中插入数据,如文章开头,此处省略。 2、创建一个 定时任务 job declare job number; BEGIN DBMS_JOB.SUBMIT( ...
  • ORACLE定时任务没有执行原因

    万次阅读 2018-04-17 08:49:08
    ORACLE定时任务没有执行原因这个问题研究了挺长时间,从最开始写ORACLE存储过程 create or replace procedure ...写定时任务 dbms_job.submit(...)执行定时任务 dbms_job.run(job num)如果以上三部分都没有报错,可...
  • 在使用oracle最匹配的工具plsqldeveloper的时候,如果用plsqldeveloper创建定时器呢?下面我简单介绍使用工具创建定时器的方法:  1.定时器对应的DBMS_Jobs文件夹,右键新建(new)    2.(1)、在what值中填写待...
  • PLSQL定时任务创建(Oracle数据库dbms_job使用)

    万次阅读 多人点赞 2018-08-20 21:11:57
    PLSQL定时任务创建(Oracle数据库中dbms_job使用) 通过本文将学习到 如何用PLSQL在中创建一个JOB 查看JOB 操作JOB 时间的判断 1、前言  2018/8/20,今天我们邮件系统出现了问题 ,无法正常的将待发邮件发出...
  • 1、首先创建一张表 该表用来执行插入数据。 create table getSysDate(test date); 2、创建存储过程以插入数据。 create or replace procedure insertSysDate as ...3、创建job设置定时 declare jo...
  • 在常规创建oracle任务时,可以选择两种方法:一种是直接利用plsql这种可视化工具创建定时任务,另一种是利用sql语句来创建任务。下面将演示第一种方法。 2.创建过程: 定时任务也称为事件,创建一个事件时有四个参数...
  • 创建Oracle定时任务及其各项操作

    千次阅读 2018-11-09 11:42:22
    一、PLSQL 创建Oracle定时任务 1、创建任务执行的存储过程,如名称为testJob,向测试表中插入数据 // 创建一个sequence对象,提供自增长的序列号 create sequence seq_createId increment by 1 start with 1 ...
  • plsql删除定时任务

    2020-05-27 12:14:29
    oracle删除定时任务时用下列语句时竟然报错 exec dbms_job.remove(定时任务id); 可谓巨坑无比 在网上未发现出现原因,自我感觉应该是plsql对“exec dbms_job.remove(定时任务id)”整体或某段不识别导致 后来运用...
  • / 三、查看任务状态 select * from DBA_JOBS 不自动执行定时任务的解决办法 SHOW PARAMETER JOB; --如果为0的话,肯定不执行 ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 1000; --设置JOB_QUEUE_PROCESSES的值必须...
  • oracle创建定时任务

    2019-08-06 11:42:52
    定时任务,dbms_job调用存储过程创建表,需要显示授权,存储过程定义为authid current_user也不行,而dbms_scheduler是不需要显示授权的,这点来说后者更方便使用。另外,dbms_scheduler提供了job运行日志记录视图,...
  • Oracle定时任务执行存储过程带参数

    千次阅读 2018-06-14 15:58:24
    定时任务: ----功能说明:每日凌晨0点定时执行存储过程  declare job_use_daily number;  begin  dbms_job.submit(job_use_daily,'declare retCode number; retMsg varchar2(200); begin pro_test ...
  • ORACLE定时执行Job任务

    万次阅读 2018-07-23 12:09:44
    因为是统计周月数据,便想到了数据库定时Job任务创建。 在百度上,找到了一篇好文章,跟大家分享:http://langgufu.iteye.com/blog/1179235 另一篇文章是关于ORACLE时间间隔书写:...
  • 使用plsql创建定时任务并执行

    千次阅读 2018-07-14 01:07:00
    在使用plsql创建定时任务之前,我们有必要先了解一下oracle中的job定时任务的一些内容。 1)、 查询oracle中的job oracle查看哪个存储过程对应的哪个定时器 select * from dba_jobs t where upper(t.what)...
  • 1、创建定时向表中插入数据的存储过程,名为testJob1 数据库脚本如下: CREATE OR REPLACE PROCEDURE "testJob" AS ...3、设置定时任务 (1)在what值中填写待执行的存储过程,可以多个,用分号(;)隔开。 (2)在间

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 931
精华内容 372
关键字:

oracle定时任务plsql