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. 解决Windows 8系统假死的方法

    大部分半卡死的现象是因为Dynamic Tick的一个Bug.Dynamic Tick是NT 6.2内核的一个新功能(其实Linux早就有了),原理的话大概是在空闲的时候把CPU完全暂停,来节省电量. ...

  2. 传统模式下WebService与WebAPI的相同与不同

    1.WebService是利用HTTP管道实现了RPC的一种规范形式,放弃了对HTTP原生特征与语义的完备支持:而WebAPI是要保留HTTP原生特征与语义的同时实现RPC,但WebAPI的实现风格可 ...

  3. v0lt CTF安全工具包

    0×00 v0lt v0lt是一个我尝试重组每一个我使用过的/现在在使用的/将来要用的用python开发的安全领域CTF工具.实践任务可能会采用bash脚本来解决,但我认为Python更具有灵活性,这 ...

  4. Adaptive Code Via C#读书笔记

    原书链接: http://www.amazon.com/Adaptive-Code-via-principles-Developer-ebook/dp/B00OCLLYTY/ref=dp_kinw_s ...

  5. php.ini配置解析

    为了让PHP读取这个文件,它必须被命名为'php.ini'. PHP 查找配置文件次序:当前工作目录:环境变量PHPRC  ; 指明的路径:编译时指定的路径.  ; 在windows下,编译时的路径是 ...

  6. XAML中的特殊符号几空白字符处理

    阅读目录 介绍 详细 处理 Demo下载 介绍 XAML标记语言是基于xml的,所以很多xml中的特殊符号在XAML也是需要处理的. 详细 (取自msdn) 字符 Entity 注释 &(“a ...

  7. 使用For XML PATH 会影响Cross Apply 返回

    昨天在写语句的时候,遇到了一个现象,其实就是使用 Cross Apply做一个拼接字符串的而已.比如 CREATE TABLE GoodsCatalog (ID INT, Name )) CREATE ...

  8. MySQL 命令行工具之 mysqldump 深入研究

    mysqldump 是MySQL的一个命令行工具,用于逻辑备份.可以将数据库和表的结构,以及表中的数据分别导出成:create database, create table, insert into的 ...

  9. MemSQL分布式架构介绍(一)

    最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...

  10. PostgreSQL-安装9.2

    一.环境 VM虚拟机 NAME="Ubuntu" VERSION="12.04.4 LTS, Precise Pangolin" 二.过程  1.安装make ...