oracle的job,实际上就是数据库内置的定时任务,类似代码中的Timer功能。下面是使用过程:

这里我们模拟一个场景:定时调用存储过程P_TEST_JOB 向表TEST_JOB_LOG中插入数据

表结构:

 create table TEST_JOB_LOG
(
rec_id NUMBER not null,
occr_time DATE
);
alter table TEST_JOB_LOG
add constraint PK_TEST_JOB primary key (REC_ID);

序列:

 create sequence SEQ_TEST_JOB_LOG
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 10;

存储过程:

 create or replace procedure P_TEST_JOB is
begin
insert into test_job_log(rec_id, occr_time) values(seq_test_job_log.nextval,sysdate);
commit;
end P_TEST_JOB;

上面只是准备工作,下面才是重点:(以下脚本全是pl/sql developer环境)

1、创建job

 declare
job_id number;
begin
sys.dbms_job.submit(job_id, 'P_TEST_JOB;', sysdate, 'sysdate+1/1440'); --马上运行,然后每分钟运行一次
sys.dbms_output.put_line(job_id); --输出job Id
end;

每个job创建后,都会对应一个唯一的数字,在pl/sql的output面板里,可以看到dbms_output.put_line输出的job id值。

2、查看job运行情况

 select * from dba_jobs; --需要dba权限
select * from dba_jobs_running; --需要dba权限
select * from all_jobs;
select * from user_jobs;

3、删除job

begin
dbms_job.remove(108); --108为具体的job ID,可以通过select * from user_jobs查询得到
end;

4、手动启动job

 begin
dbms_job.run(109);--运行指定Job
end;

最后,再给几个关于创建job的小例子:

a、带参数的存储过程调用

 declare
job_id number;
begin
sys.dbms_job.submit(job_id, 'P_JOB_XXX(sysdate-30,sysdate);', sysdate, 'trunc(sysdate+1)+(4*60)/(24*60)'); --每天早上4:00运行
sys.dbms_output.put_line(job_id); --输出job Id
end;

这里指定了P_JOB_CKG的传入参数为sysdate及sysdate-30,如果是字符串参数,需要加二个单引号,类似 'P_XXX(''参数值'');'

此外,单引号还可以用CHR(39)来代替,例如:

 DECLARE
JOB_ID NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(JOB_ID,
'P_JOB_XXX(TO_DATE(' || chr(39) ||
'2014-2-12 00:00:00' || chr(39) || ', ' || chr(39) ||
'YYYY-MM-DD HH24:MI:SS' || chr(39) || '),TO_DATE(' ||
chr(39) || '2014-2-12 23:59:59' || chr(39) || ', ' ||
chr(39) || 'YYYY-MM-DD HH24:MI:SS' || chr(39) ||
'));',
TO_DATE('2015-1-6 10:00:00', 'YYYY-MM-DD HH24:MI:SS'),
'SYSDATE+10/(60*24)'); --2015-01-06 10:00:00 开始执行,每10分钟执行一次
SYS.DBMS_OUTPUT.PUT_LINE(JOB_ID); --输出JOB ID
END;

中间那一串恶心的拼接,无非是要得到字符串:

P_JOB_XXX(TO_DATE('2014-2-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),TO_DATE('2014-2-12 23:59:59', 'YYYY-MM-DD HH24:MI:SS'));

b、关于指定时间的表达式示例

每天运行一次
    'SYSDATE + 1'

每小时运行一次
    'SYSDATE + 1/24'

每10分钟运行一次                 
    'SYSDATE + 10/(60*24)'

每30秒运行一次                    
    'SYSDATE + 30/(60*24*60)'

每隔一星期运行一次               
    'SYSDATE + 7'

每个月最后一天运行一次          
    'TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,1))) + 23/24'

每年1月1号零时                    
    'TRUNC(LAST_DAY(TO_DATE(EXTRACT(YEAR FROM SYSDATE)||'12'||'01','YYYY-MM-DD'))+1)'

每天午夜12点                       
    'TRUNC(SYSDATE + 1)'

每天早上8点30分                  
    'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

每星期二中午12点                 
    'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

每个月第一天的午夜12点        
    'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每个月最后一天的23点           
    'TRUNC (LAST_DAY (SYSDATE)) + 23 / 24'

每个季度最后一天的晚上11点  
    'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

每星期六和日早上6点10分      
    'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6*60+10)/(24*60)'

oracle: job使用的更多相关文章

  1. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  3. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  4. Oracle 的基本操作符

    != 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...

  5. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  6. 基于Oracle安装Zabbix

    软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...

  7. Oracle Database 12c Data Redaction介绍

    什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...

  8. 使用Oracle官方巡检工具ORAchk巡检数据库

    ORAchk概述 ORAchk是Oracle官方出品的Oracle产品健康检查工具,可以从MOS(My Oracle Support)网站上下载,免费使用.这个工具可以检查Oracle数据库,Gold ...

  9. 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断

    概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...

  10. 使用技术手段限制DBA的危险操作—Oracle Database Vault

    概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...

随机推荐

  1. yii2解决百度编辑器umeditor图片上传问题

    作者:白狼 出处:http://www.manks.top/article/yii2_umeditor_upload本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原 ...

  2. PHP数据的序列化/反序列化

    最近在接触一个叫做medoo的mysql框架,这个框架有一个特点,在insert/update时,如果你给进的数据是array的话会自动转成序列化字符串,说实话这个东西以前还没怎么接触过,索性去搜索了 ...

  3. JavaScript Patterns 7.1 Singleton

    7.1 Singleton The idea of the singleton pattern is to have only one instance of a specific class. Th ...

  4. MVC 多语言记录1 设置默认的ResourceType

    http://stackoverflow.com/questions/3260748/default-resource-for-data-annotations-in-asp-net-mvc Add ...

  5. python中列表、元组、字典内部功能介绍

    一.列表(list) 常用功能的介绍:

  6. SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  7. text-transform设置单词首字母大写

    text-transform 一.语法   text-transform 主要用于设置文本的大小写. text-transform有5个值,分别如下: none. 默认值. capitalize. 文 ...

  8. IE6-11使用location.href提交时的链接复制到firefox或chrome时出现乱码

    这是在开发国际机票查询页时碰到的一个问题,测试工程师在IE里执行查询操作,然后把查询的url赋值到firefox的地址栏,firefox打开后就变成乱码了. 1. IE浏览器,选择出发地,出发日期等后 ...

  9. windows下制作linux U盘启动盘或者安装优盘(转)

    windows下制作linux U盘启动盘或者安装优盘(转) Linux发行版排行榜:http://iso.linuxquestions.org/ [方案一]:UltraISO(不推荐,在Window ...

  10. ELF Format 笔记(四)—— 节(Section)

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件可以包含很多 section,所有的 section 都在 section header tab ...