`

oracle定时器简单操作

阅读更多

首先创建一张测试表:

create table JOBTEST ( ID VARCHAR2(50) primary key, NAME VARCHAR2(20), AGE NUMBER(3) )

 然后写好定时器要调用的存储过程:

create or replace procedure myprocedure is begin insert into jobtest values(to_char(sysdate,'yyyy-MM-dd hh:mm:ss'),'july',22); commit; end;

 

接下来就要建立定时器了:

var myjob number; begin dbms_job.submit(:myjob,'myprocedure;',sysdate,'sysdate+1/24/60/60'); end; 

  

最后启动定时器:

begin dbms_job.run(:myjob); end; 

 

 启动之后,该定时器(理论上)会一秒钟想数据表jobtest中插入一条记录。但是事实上每隔大概五秒才执行一次(原因未知)。

如果建立以上sql语句之后,定时器并未运行,请一dba角色运行select * from v$parameter t where t.name like 'job%';看value的值是多少,如果等于0,则将它设置为大于0的值即可:

可以在C:\oracle\admin\july\pfile\init.ora文件中修改但需要重启动数据库 (july指的是实例名):
  job_queue_interval =   10  
  job_queue_processes =  4;
  如果不想重启动数据库  
  ALTER SYSTEM SET job_queue_processes=5;

查看定时器:以dba角色登录执行select   *   from   dba_jobs;或者当前用户select * from user_jobs;
 删除定时器 begin dbms_job.remove(jobno);    end;    commit;jobno 为 job查询列表中的编号,删除后必须提交事务才能彻底删除。也可以以dba登录后从dba_jobs表中删除。

偶尔一些定时器执行时间很长,在其执行期间要将其停止,必须将其进程kill,然后等待其释放资源,相关语句:

select * from V$session t order by t.USERNAME,t.SID; 
select sid,serial#,username,program,machine,status from v$session; select * from v$access t where t.OWNER='july'; 
alter system kill session 'x,y';

 

 

定时器的参数说明:

myjob参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作;

what参数是将被执行的PL/SQL代码块,这里指的是一个存储过程,注意名字后面的分号;

next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值;

interval参数何时这个工作将被重执行。

关于interval的设置,参考以下几个例子:

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、 每半年定时执行

例如:每年71日和11日凌晨2

Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定时执行

例如:每年11日凌晨2点执行

Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24

分享到:
评论
2 楼 痛苦的人 2012-08-14  
  对我太有帮助了。
1 楼 dongbiying 2012-04-17  

相关推荐

    oracle ebs开发文档

    这部分介绍了如何在 Oracle 中使用定时器来定期执行任务,这对于需要定期运行的报表、备份等操作非常有用。 **4.3 Over 分析查询** 这部分讲解了 OVER 子句在分析查询中的使用,用于计算窗口函数(如 RANK、ROW_...

    使用PL/SQL Developer图形界面轻松实现oracle定期计划任务

    在Oracle数据库管理中,定期执行任务是不可或缺的一部分,这通常涉及到数据库维护、数据清理、备份等操作。PL/SQL Developer是一款强大的Oracle开发工具,它提供了一个直观的图形用户界面(GUI),使得设置定期计划...

    Oracle的故障诊断及分析方法

    如果发现Job未按预期执行,进一步的诊断可能需要查看相关的定时器(如v$timer、Linux timer),检查作业的调度逻辑是否正确,以及相关的操作系统资源是否正常。 此外,对于复杂的故障,可能还需要结合操作系统层面...

    Oracle EBS 开发笔记

    - **Oracle定时器**:用于定期执行任务的工具。 - **Over分析查询**:进行数据分析时常用的查询技巧。 - **Oracle层次树查询**:用于处理层次结构数据。 - **Mergeinto应用**:执行插入或更新操作。 - **...

    oracle性能优化(简单版)[文].pdf

    这个查询会排除一些不相关的等待事件,如定时器、消息传递等,并只关注对性能影响较大的事件。 同样,Oracle 10g的查询也类似,只是可能需要排除不同的等待事件。通过这种方式,我们可以快速定位到主要的性能问题,...

    ORACLE EBS 开发基础

    Oracle定时器** - 定时器可用于执行定期任务,如备份数据库、发送提醒邮件等。 **6. Over分析查询** - OVER子句用于执行窗口函数,如计算连续排名、累计总和等。 **7. Oracle层次树查询** - 使用CONNECT BY和...

    Oracle-ERP开发笔记

    Oracle定时器** - 定时器可以定期执行任务,适用于需要定期维护的任务。 **5. Over分析查询** - OVER子句用于进行分析查询,如计算累计和、排名等。 **6. Oracle层次树查询** - 层次树查询用于处理具有层次结构的...

    c#在odb.net下实现数据库从mysql->oracle迁移

    1. **C#数据访问库**:使用ADO.NET(如System.Data.SqlClient和Oracle.ManagedDataAccess.Client)来处理数据库连接和数据操作。 2. **ODBC连接**:使用System.Data.Odbc类来配置和建立ODBC连接。 3. **数据迁移...

    Legato备份Oracle数据库rman脚本

    RMAN还支持自动备份策略、备份到磁带、网络文件系统(NFS)、以及数据库的恢复操作。通过RMAN,我们可以创建详细的备份脚本来确保数据的安全性和可恢复性。 二、Legato与RMAN结合 Legato备份软件可以与RMAN无缝集成,...

    delphi 简单编写PING操作

    这个主题聚焦于如何在Delphi中实现简单的PING操作,这通常涉及到网络通信和系统编程。PING是网络诊断工具,它使用ICMP协议来检查网络连接的可达性和延迟。下面我们将深入探讨这一话题。 首先,我们需要理解PING的...

    kettle执行转换每一行数据

    如果目标是处理表中的每一行数据,查询可以是简单的`SELECT * FROM 表名`,这将获取表中的所有记录。 3. **数据转换**:在“表输入”步骤之后,我们可以添加各种转换步骤,如“过滤行”、“字段到值”、“聚合”等...

    定时关机功能

    当定时器到期时,系统会触发一个事件,我们可以捕获这个事件来执行相应的操作,如关闭计算机。 在Visual Studio 2010中,我们可以选择使用C++或C#等语言进行开发。这里假设我们选择C#,因为它的语法简洁,且.NET ...

    pharmacy-Management-System:C#和Oracle sql的药房管理系统

    这依赖于C#的定时器功能和Oracle SQL的实时查询能力。 5. 数据备份与恢复:利用Oracle SQL的数据备份工具,定期对系统数据进行备份,以防止数据丢失。C#可以编写脚本自动化这一过程。 五、系统安全与优化 为确保...

    Activiti6 中文 用户指南 操作手册 开发API

    - **数据库设置**:配置数据库以存储流程实例和相关数据,通常使用MySQL、Oracle等关系型数据库。 - **包含Activiti jar及其依赖项**:在项目中添加Activiti的jar包和相关依赖库。 - **下一步**:创建第一个流程...

    VB实用编程百例(控制硬件施设,操作文件,网路等)

    6. **数据库访问**:VB可以轻松连接到各种数据库,如Access、SQL Server、Oracle等,通过ADO(ActiveX Data Objects)组件进行数据的查询、添加、修改和删除操作。同时,VB支持DAO(Data Access Objects)和ODBC...

    精易模块-3.3.zip

    精易模块是易语言用户社区开发的第三方组件,为程序员提供了更多的函数和类,使得在易语言中进行复杂任务的处理变得更加简单。 精易模块_3.33.e是这个压缩包中的核心文件,它包含了一系列预编译好的易语言模块,...

    Delphi简单的数据自动备份系统..rar

    这些组件允许程序与各种数据库管理系统(如MySQL、SQL Server、Oracle等)进行交互,实现数据的读取、写入和备份操作。 2. **数据库操作**:备份系统可能会涉及SQL查询,包括SELECT用于获取数据,INSERT用于将数据...

Global site tag (gtag.js) - Google Analytics