首先创建一张测试表:
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、 每半年定时执行
例如:每年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
分享到:
相关推荐
这部分介绍了如何在 Oracle 中使用定时器来定期执行任务,这对于需要定期运行的报表、备份等操作非常有用。 **4.3 Over 分析查询** 这部分讲解了 OVER 子句在分析查询中的使用,用于计算窗口函数(如 RANK、ROW_...
在Oracle数据库管理中,定期执行任务是不可或缺的一部分,这通常涉及到数据库维护、数据清理、备份等操作。PL/SQL Developer是一款强大的Oracle开发工具,它提供了一个直观的图形用户界面(GUI),使得设置定期计划...
如果发现Job未按预期执行,进一步的诊断可能需要查看相关的定时器(如v$timer、Linux timer),检查作业的调度逻辑是否正确,以及相关的操作系统资源是否正常。 此外,对于复杂的故障,可能还需要结合操作系统层面...
- **Oracle定时器**:用于定期执行任务的工具。 - **Over分析查询**:进行数据分析时常用的查询技巧。 - **Oracle层次树查询**:用于处理层次结构数据。 - **Mergeinto应用**:执行插入或更新操作。 - **...
这个查询会排除一些不相关的等待事件,如定时器、消息传递等,并只关注对性能影响较大的事件。 同样,Oracle 10g的查询也类似,只是可能需要排除不同的等待事件。通过这种方式,我们可以快速定位到主要的性能问题,...
Oracle定时器** - 定时器可用于执行定期任务,如备份数据库、发送提醒邮件等。 **6. Over分析查询** - OVER子句用于执行窗口函数,如计算连续排名、累计总和等。 **7. Oracle层次树查询** - 使用CONNECT BY和...
Oracle定时器** - 定时器可以定期执行任务,适用于需要定期维护的任务。 **5. Over分析查询** - OVER子句用于进行分析查询,如计算累计和、排名等。 **6. Oracle层次树查询** - 层次树查询用于处理具有层次结构的...
1. **C#数据访问库**:使用ADO.NET(如System.Data.SqlClient和Oracle.ManagedDataAccess.Client)来处理数据库连接和数据操作。 2. **ODBC连接**:使用System.Data.Odbc类来配置和建立ODBC连接。 3. **数据迁移...
RMAN还支持自动备份策略、备份到磁带、网络文件系统(NFS)、以及数据库的恢复操作。通过RMAN,我们可以创建详细的备份脚本来确保数据的安全性和可恢复性。 二、Legato与RMAN结合 Legato备份软件可以与RMAN无缝集成,...
这个主题聚焦于如何在Delphi中实现简单的PING操作,这通常涉及到网络通信和系统编程。PING是网络诊断工具,它使用ICMP协议来检查网络连接的可达性和延迟。下面我们将深入探讨这一话题。 首先,我们需要理解PING的...
如果目标是处理表中的每一行数据,查询可以是简单的`SELECT * FROM 表名`,这将获取表中的所有记录。 3. **数据转换**:在“表输入”步骤之后,我们可以添加各种转换步骤,如“过滤行”、“字段到值”、“聚合”等...
当定时器到期时,系统会触发一个事件,我们可以捕获这个事件来执行相应的操作,如关闭计算机。 在Visual Studio 2010中,我们可以选择使用C++或C#等语言进行开发。这里假设我们选择C#,因为它的语法简洁,且.NET ...
这依赖于C#的定时器功能和Oracle SQL的实时查询能力。 5. 数据备份与恢复:利用Oracle SQL的数据备份工具,定期对系统数据进行备份,以防止数据丢失。C#可以编写脚本自动化这一过程。 五、系统安全与优化 为确保...
- **数据库设置**:配置数据库以存储流程实例和相关数据,通常使用MySQL、Oracle等关系型数据库。 - **包含Activiti jar及其依赖项**:在项目中添加Activiti的jar包和相关依赖库。 - **下一步**:创建第一个流程...
6. **数据库访问**:VB可以轻松连接到各种数据库,如Access、SQL Server、Oracle等,通过ADO(ActiveX Data Objects)组件进行数据的查询、添加、修改和删除操作。同时,VB支持DAO(Data Access Objects)和ODBC...
精易模块是易语言用户社区开发的第三方组件,为程序员提供了更多的函数和类,使得在易语言中进行复杂任务的处理变得更加简单。 精易模块_3.33.e是这个压缩包中的核心文件,它包含了一系列预编译好的易语言模块,...
这些组件允许程序与各种数据库管理系统(如MySQL、SQL Server、Oracle等)进行交互,实现数据的读取、写入和备份操作。 2. **数据库操作**:备份系统可能会涉及SQL查询,包括SELECT用于获取数据,INSERT用于将数据...