`

Oracle定时任务详解

阅读更多

常要oracle数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作,这时需要用到一个函数dbms_job.submit,来完成Oracle定时器Job时间的处理上。

    使用dbms_job.submit这个函数,我们只需要考虑两个事情:安排某一任务,和定制一个执行任务的时间点。但最重要也是最棘手的事情,我认为还是确定一个执行任务的时间点。时间点确定了,其他的事情就好办了。下面是函数dbms_job.submit使用方法:

定义格式 写道
dbms_job.submit( job out binary_integer, 
what       in   archar2, 
next_date     in   date, 
interval     in   varchar2, 
no_parse     in   boolean)

  其中: 
●job:输出变量,是此任务在任务队列中的编号; 
●what:执行的任务的名称及其输入参数; 
●next_date:任务执行的时间; 
●interval:任务执行的时间间隔。 
其中Interval这个值是决定Job何时,被重新执行的关键;当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。如何更好地确定执行时间的间隔需要我们掌握一个函数TRUNC。 

1.TRUNC(for dates) 
TRUNC函数为指定元素而截去的日期值。 
其具体的语法格式如下: 
TRUNC(date[,fmt]) 
其中: 
date 一个日期值 
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去 
下面是该函数的使用情况: 
1)按年截尾 
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'yyyy')  from dual 
----------------------------------------------------------- 
2008-1-1 
2)按月截尾 
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mm')  from dual 
-------------------------------------------------------- 
2008-3-1 
3)按日截尾 
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'dd')  from dual 
---------------------------------------------------------------------- 
2008-3-1 
4)按时截尾 
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'hh')  from dual 
---------------------------------------------------------------------- 
2008-3-1 8:00:00 
5)按分截尾 
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mi')  from dual 
---------------------------------------------------------------------- 
2008-3-1 8:23:00 



2.确定执行时间间隔 
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_MONTHS(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 



3.实例 
这里提供了一个简单的例子,主要是完成在每一个时间间隔内向一个表中插入一条记录 
  1)创建测试表 

创建测试表 写道

SQL> create table test(id number,cur_time date); 
表已创建。 
----建sequence 
CREATE SEQUENCE test_sequence 
INCREMENT BY 1   -- 每次加几个 
START WITH 1    -- 从1开始计数 
NOMAXVALUE    -- 不设置最大值 
NOCYCLE      -- 一直累加,不循环 
CACHE 10 ;

 

建触发器代码为:

创建触发器 写道
create or replace trigger tri_test_id 
before insert on test --test 是表名 
for each row 
declare 
nextid number; 
begin 
IF :new.id IS NULLor :new.id=0 THEN --id是列名 
select test_sequence.nextval --SEQ_ID正是刚才创建的 
into nextid 
from sys.dual; 
:new.id:=nextid; 
end if; 
end tri_test_id; 

 

2)创建一个自定义过程 

创建存储过程 写道

SQL> create or replace procedure proc_test as 
2 begin 
3 insert into test(cur_time) values(sysdate); 
4 end; 
5 / 

 

3)创建JOB 

创建job 写道
SQL> declare job1 number; 
begin 
dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次 
end;
分享到:
评论

相关推荐

    oracle定时任务详解

    ### Oracle 定时任务详解 #### 一、Oracle 定时任务概述 Oracle数据库中的定时任务(也称为作业或job)是Oracle系统中一个非常重要的子系统,它可以帮助用户自动执行一些常规性的任务,比如备份数据库、清理日志等...

    Oracle定时任务详解.pdf

    Oracle定时任务详解主要涉及到Oracle数据库中的DBMS_JOB包,这是一个用于在数据库级别执行定时任务的工具,特别适合处理大量表级别的操作,以提高效率并减少系统级别的编程工作和潜在错误。Oracle的作业队列管理器...

    Oracle定时任务详解.docx

    Oracle定时任务,通常被称为DBMS_JOB,是一种在Oracle数据库中实现定时执行任务的机制。它允许用户安排PL/SQL代码块在预设的时间点或按照特定的间隔执行,无需依赖操作系统级别的定时任务如Windows的任务计划程序或...

    oracle的定时任务

    ### Oracle的定时任务详解 #### 一、Oracle定时任务概述 Oracle定时任务是数据库管理系统中的一个强大特性,允许用户在预设的时间点自动执行特定的数据库操作,如数据备份、数据清洗、报告生成等。这一功能主要...

    DBMS_JOB包创建ORACLE定时任务

    ### DBMS_JOB包创建Oracle定时任务详解 在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,...

    oracle定时备份详解

    2. 编写定时任务:在定时备份文档.doc中,你可以找到如何配置定时任务的详细步骤。例如,在Windows中,打开任务计划程序,创建新任务,设置触发器为每天特定时间执行LogicBackup.bat,同时指定适当的权限。 3. 测试...

    oracle 定时导出脚本

    ### Oracle定时导出脚本详解 #### 一、Oracle定时导出脚本基本结构与功能说明 在Linux环境下,为了实现Oracle数据库的自动化备份管理,通常会借助于shell脚本来完成定时导出任务。以下是一个典型的Oracle定时导出...

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

    #### 三、创建Oracle定时任务步骤详解 ##### 1. 连接Oracle数据库 - **启动Oracle SQL Developer**:首先,打开Oracle SQL Developer应用程序。 - **建立数据库连接**: - 在主界面左侧的“Connections”窗口中...

    oracle存储过程+日期+定时任务Job

    ### Oracle 存储过程 + 日期 + 定时任务 Job #### 一、概述 在 Oracle 数据库中,存储过程是一种可编程的对象,用于执行特定的任务。存储过程可以在数据库服务器上运行,从而提高应用程序的性能并减少网络流量。...

    oracle定时备份脚本(实例)

    ### Oracle定时备份脚本知识点详解 #### 一、Oracle数据库定时备份原理与脚本实现 在Oracle数据库管理中,为了确保数据的安全性和可用性,定期进行数据备份是必不可少的操作之一。通过编写定时备份脚本,可以自动...

    oracle定时执行存储过程.pdf

    ### Oracle定时执行存储过程知识点详解 #### 一、概述 在Oracle数据库中,定时执行存储过程是一项非常实用的功能,尤其适用于需要定期执行的任务,比如数据备份、数据清理、统计汇总等场景。通过设置定时任务,可以...

    linux定时任务详解.docx

    ### Linux CentOS 7 下用户定时任务详解 #### 一、定时任务基础知识 在 Linux 系统中,定时任务是极其重要的功能之一,它允许用户在指定的时间自动执行一系列任务,如备份数据、清理日志等。Linux 提供了多种方式...

    oracle导出导入定时

    2. Oracle的DBMS_SCHEDULER:在数据库级别设置定时任务,直接调用PL/SQL存储过程执行导出导入。 五、最佳实践 - 定期备份:根据业务需求,设定合理的备份频率,如每天、每周等。 - 安全存储:导出文件应存储在安全...

    linux下为oracle做定时备份的操作

    在Linux环境下,可以利用Cron(定时任务计划程序)结合shell脚本来实现Oracle数据库的自动化备份。 #### 关键知识点详解 ##### 1. 使用Shell脚本进行Oracle备份 在Linux环境中,Shell脚本是非常实用的工具,可以...

    xxl-job-2.4.0定时任务框架Oracle版本

    **XXL-JOB定时任务框架Oracle版本详解** XXL-JOB是一个分布式任务调度平台,它提供了简单易用的API和Web界面,使得开发者能够轻松地实现任务的分布式调度。XXL-JOB 2.4.0是该框架的一个重要版本,针对Oracle数据库...

    oracle数据库定时任务dbms_job的用法详解

    Oracle数据库中的DBMS_JOB包是用于创建和管理定时任务的重要工具,它允许用户安排数据库执行特定的PL/SQL过程或存储过程。这个包提供了一系列的子程序,用于创建、修改、启动、停止以及监控数据库作业。下面将详细...

    oracle job使用详解

    Oracle Job 的使用对于实现定时任务、批处理操作和维护工作至关重要。以下是对 Oracle Job 使用的详细解释: 1. **创建 Job**: 创建 Job 可以通过 `DBMS_JOB.SUBMIT` 存储过程完成。例如,在提供的代码中,创建了...

    Oracle定时计划.docx

    3. **配置定时任务**: - 打开“任务计划程序”(可通过开始菜单搜索)。 - 点击“任务计划程序库”,右键选择“新建文件夹”,命名该文件夹。 - 在新创建的文件夹内右键选择“创建基本任务”。 - 按照向导提示...

    Linux下定时自动执行Oracle_SQL

    3. **设置Crontab定时任务**:最后,通过编辑用户的Crontab配置文件,定义定时任务的执行频率。在配置文件中,除了指定执行Shell脚本的时间外,还需要设置Oracle环境变量,以确保脚本能正确连接到Oracle数据库服务器...

Global site tag (gtag.js) - Google Analytics