`
csywuming
  • 浏览: 15055 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

oracle中使用job来周期性的定时执行任务

阅读更多

一.查看oracle数据库中的job
select job,what from user_jobs;

二.删除oracle中的job
execute dbms_job.remove(jobID);
注:jobID即"select job,what from user_jobs"中查询出来的job值。

三.创建job,即DBMS_Jobs 

1.下面给出一个样例:

SQL> create table a(a date);
Table created
//创建一个过程procedure
SQL> create or replace procedure test as
  2  begin
  3  insert into a values(sysdate);
  4  end;
  5  /
Procedure created
//提交作业
SQL> declare
  2  job1 number;   //定义一个数字型变量
  3  begin
  4  dbms_job.submit(job1,'test;',sysdate,'sysdate+1/1440');  //按分钟算一天1440分钟。该语句表示从当前时间开始执行,每隔一分钟执行一次,其中sysdate表示系统当前时间。
  5  end;
  6  /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
//运行作业
SQL> begin
  2  dbms_job.run(4);
  3  end;
  4  /
PL/SQL procedure successfully completed
//删除作业
SQL> begin
  2  dbms_job.remove(4);
  3  end;
  4  /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete

//job change//修改作业
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');

 

2.下面给出第二个样例:

create or replace procedure backup_table
as
v_year varchar2(20);
begin
select to_char(sysdate,'yyyy-mm') into v_year from dual;
insert into t_backup select * from t_table where to_char(C_WORKTIME,'yyyy-mm')=v_year;
commit;

exception
when others then
rollback;
end;
/


declare
  JOB_BACKUP number ;
begin
  dbms_job.submit(JOB_BACKUP,
                  'backup_table;',
                 
to_date('01-07-2012 02:00:00','dd-mm-yyyy hh24:mi:ss'),
                  'ADD_MONTHS(trunc(sysdate,''yyyy''),6)+2/24'
);
  commit;
end;
/

 

讲解:首先创建了一个backup_table的存储过程,该存储过程是将t_table中的c_worktime字段为当前月的数据备份到t_backup表中;然后创建了一个JOB_BACKUP,该JOB首次执行时间为01-07-2012 02:00:00,以后的每次执行时间为每隔半年执行一次。

四.job的定时执行和时间间隔

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

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

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定时任务

    首先,Oracle数据库使用DBMS_SCHEDULER包来创建和管理这些定时任务。DBMS_SCHEDULER是一组存储过程和函数,用于创建、修改和控制数据库作业的执行。它取代了早期版本的DBMS_JOB,提供了更强大的功能和灵活性。 1. *...

    job(oracle定时任务)界面管理工具

    3. **JOB SCHEDULE**: 定义任务的执行计划,可以是立即执行、周期性执行或按照特定日期和时间执行。例如,可以设置每天的特定时间运行数据备份作业。 4. **ENABLE/DISABLE**: 可以随时启用或禁用Job,以控制其执行...

    在Oracle中实现后台自动执行的定时操作

    在Oracle数据库中,JOB队列是一种用于调度后台任务的机制,允许用户定义一系列的作业,这些作业可以在指定的时间点或者周期性地执行。这一功能由数据库的系统守护进程SNP(System Notification Process)负责管理,...

    Talend Job - Windows 版本定时任务 简单操作 希望能帮助各位同是初学者的人们

    2. **使用Windows任务计划程序**:利用Windows内置的任务计划程序来安排定时任务的执行。 3. **测试**:在正式部署之前,务必对定时任务进行充分的测试,确保其能够按照预期正常运行。 #### 五、案例分析 假设我们...

    oracle定时任务.txt

    在Oracle数据库中,`DBMS_JOB`包提供了一种简单的方式来安排周期性或一次性的工作。以下将详细介绍如何使用`DBMS_JOB`来创建、运行和管理定时任务。 ##### 创建定时任务 ```sql -- 创建一个用于执行的任务过程 ...

    oracle中的job的用法

    Oracle中的Job主要用于数据库中任务的定时执行,具体来说是定时执行存储过程。使用Job可以让一些需要周期性处理的业务逻辑自动化运行,减少编程工作量,提升执行效率和程序稳定性。在Oracle中,Job的实现依赖于Job ...

    oracle 定时任务,使用存储过程更新数据

    Oracle数据库系统提供了强大的定时任务管理功能,这在企业级应用中极为重要,因为它们能够按照预设的时间间隔执行特定的任务,比如数据更新、备份、报表生成等。在本主题中,我们将深入探讨如何利用Oracle的存储过程...

    oracle中JOB总结

    Oracle中的JOB是一个重要的后台机制,用于自动化执行定时任务。这些任务可以是数据库维护、数据清理、备份或者其他任何基于时间的数据库操作。Oracle数据库利用SNP(Scheduler)进程来管理和执行这些JOB。 SNP...

    DBMS_JOB包创建ORACLE定时任务

    ### DBMS_JOB包创建Oracle...总之,`DBMS_JOB`包是Oracle数据库中非常强大的工具,用于自动化和调度周期性任务,通过灵活运用其提供的各种功能,可以有效地管理数据库中的定时作业,提高系统的运维效率和数据处理能力。

    oracle 定时导出脚本

    1. **Cron Job (crontab)**:通过crontab服务实现脚本的周期性执行。 - **使用权限与方式**:所有用户均可使用crontab服务。使用`crontab [-u user] file`或`crontab [-u user] { -l | -r | -e }`命令进行配置。 ...

    Oracle定时任务详解.pdf

    总的来说,Oracle的DBMS_JOB提供了一套完整的数据库级定时任务解决方案,使得在数据库内部执行周期性任务变得更加便捷和高效。正确配置和使用这些工具对于管理Oracle数据库的自动化任务至关重要。

    Oracle中job的实例

    这是设置Job周期性的关键参数。 #### 三、Interval参数详解 Interval参数决定了Job的执行频率。以下是一些常见的Interval写法及其解释: 1. **每分钟执行**: ```sql INTERVAL => TRUNC(SYSDATE,'MI') + 1/(24*...

    oracle定时任务机制及用法.docx

    总的来说,Oracle的定时任务机制通过`DBMS_JOB`包提供了一套强大的工具,允许用户灵活地安排和控制数据库中的周期性任务。理解并熟练掌握这些机制和用法,对于管理和维护Oracle数据库的自动化流程至关重要。

    清华大学最新推出的---Oracle自动执行任务

    在这个清华大学推出的教程中,很可能是针对Oracle数据库的计划任务功能进行了深入讲解,旨在帮助学习者掌握如何利用Oracle的定时任务特性来自动化日常维护工作。 Oracle数据库提供了几种不同的方式来实现自动执行...

    创建oracle数据库定时任务的操作.docx

    - **重复执行**:设置周期性任务,如每天、每周等。 - **自定义执行计划**:使用更高级的调度规则。 - **设置错误处理**:定义作业失败时的行为。 - **设置资源限制**:限制作业运行时占用的资源量。 - **保存并...

    如何在Oracle数据库中实现定时操作

    在Oracle数据库中实现定时操作是通过Oracle的任务队列管理器(Job Queue)来完成的,这一功能使得数据库管理员能够预定义任务并在特定时间点或周期性执行,避免了手动操作和潜在的用户不一致问题。Oracle数据库的...

    oracle定时导出

    本文将围绕“Oracle定时导出”这一主题,深入探讨如何设置与执行Oracle定时导出任务,以及这一过程中的关键参数和注意事项。 ### Oracle定时导出的意义 Oracle定时导出,指的是在预设的时间点自动进行数据库或表...

    oracle定时备份.pdf

    本文主要探讨了两种在Oracle环境中实现定时热备份的方法,一种是利用Oracle自身的Job Queue管理器,另一种是借助操作系统级别的定时执行命令,比如在Digital Unix 4.0F下使用的Crontab。 对于Oracle Job Queue管理...

    ORACLE定时更新数据及告警

    为了使上述存储过程能够按照预定的时间周期自动执行,我们需要使用Oracle提供的`DBMS_JOB`包来配置一个JOB任务。 ```sql BEGIN SYS.DBMS_JOB.SUBMIT( job => :job, what => 'BEGIN updatedateToNow; END;', ...

Global site tag (gtag.js) - Google Analytics