`
yi4521870
  • 浏览: 11753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • sql
阅读更多
一.查看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定时任务

    通过熟练掌握这些知识点,你可以在PL/SQL Developer中高效地管理和执行Oracle定时任务,从而提升数据库维护的自动化程度和工作效率。记得根据实际需求调整任务参数,确保任务执行的准确性和可靠性。

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

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

    oracle中的job的用法

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

    oracle中JOB总结

    SNP通过周期性检查数据字典中的JOB队列来确定是否有作业需要运行。这个周期的间隔时间由初始化参数`job_queue_interval`设定。该参数应根据实际环境中的JOB需求进行调整,避免设置得过大导致JOB无法及时执行,或过小...

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

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

    Oracle中job的实例

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

    DBMS_JOB包创建ORACLE定时任务

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

    oracleJob创建脚本

    除了基本的创建Job外,Oracle还提供了一些高级特性来增强Job的功能性: 1. **条件执行**:可以通过在`what`参数中嵌入条件判断语句来实现某些复杂的逻辑。 2. **错误处理**:利用异常处理机制来捕捉并处理Job执行...

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

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

    oracle定时任务.txt

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

    oracle定时导出

    通过定时导出,可以实现数据的周期性保存,为数据恢复提供有力支持,同时也便于数据迁移、数据分析等后续工作。 ### 实现Oracle定时导出的方法 #### 1. 使用Oracle Enterprise Manager (OEM) Oracle Enterprise ...

    创建oracle job

    在Oracle数据库管理中,创建Job是一项重要的功能,可以帮助用户自动化执行一些周期性的任务,比如定期备份数据、更新统计信息等。本文将详细介绍如何在Oracle环境中创建Job,并通过具体的示例来解释各个步骤。 ####...

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

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

    ORACLE定时更新数据及告警

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

    oracle job停止

    在Oracle数据库管理中,有时需要使用`JOB`机制来执行周期性或一次性任务。然而,在某些情况下,可能需要临时或永久地停止这些`JOB`。本文将详细介绍如何有效地停止Oracle中的`JOB`,并探讨不推荐使用`JOB`的一些原因...

    Oracle定时任务详解.pdf

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

    oracle调度程序

    一个Job可以被设置为周期性执行,也可以是一次性的。 2. **Program(程序)**:Program是用来执行特定操作的实体,它可以是PL/SQL块、外部过程或其他类型的可执行程序。每个Program都必须与至少一个Job关联。 3. *...

    ORACLE_JOB_.docx

    Oracle Job 是一种在 Oracle 数据库中用于自动化任务执行的机制,尤其适合于定期维护和后台处理。`DBMS_JOB` 是一个系统包,提供了一系列的子程序,允许用户创建、修改、删除和管理作业(Jobs),这些作业可以在指定...

    Oracle 执行计划与查询优化

    Oracle 执行计划是数据库管理系统为了高效执行SQL查询而设计的一种策略。...在实际工作中,可以使用EXPLAIN PLAN或SQL Trace等工具来查看和分析执行计划,进一步理解数据库的执行逻辑,进而优化SQL查询。

Global site tag (gtag.js) - Google Analytics