oracle job入门

准备工作

先做一张学生表Table

表STUDENT

create table STUDENT
(
id INTEGER,
name VARCHAR2(100),
age INTEGER,
crt_date DATE
)

准备一个存储过程Procedure

存过PROC_INSERT_STUDENT , 该存过一直往表里插数据,是为了方便观测job执行效果.

CREATE OR REPLACE PROCEDURE PROC_INSERT_STUDENT AS
ID INTEGER;--id
BEGIN
SELECT COUNT(*) INTO ID FROM STUDENT;--根据行数生成id
ID := ID + 1;-- id+1
INSERT INTO STUDENT VALUES (ID, 'bobo', 18, SYSDATE);--插表
DBMS_OUTPUT.PUT_LINE(ID);--打印
COMMIT;--
END;

开始设置配置job

oracle 10g开始引入了DBMS_SCHEDULE包,可以将job需要的各种资源模块化 ,  用于替代老旧的的DBMS_JOB包.

方式一: 新版 DBMS_SCHEDULER.CREATE_JOB(...) 强烈建议

--创建job,每周日的01:00:00执行存过STORED_PROCEDURE删除60天以前各表数据
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB(
--job名
JOB_NAME => 'JOB_INSERT_STUDENT',
--job类型:PLSQL_BLOCK , STORED_PROCEDURE , EXECUTABLE
JOB_TYPE => 'STORED_PROCEDURE',
--procedure名
JOB_ACTION => 'PROC_INSERT_STUDENT',
--开始时间
START_DATE => TO_DATE(NULL),
--频率(以下意为分钟一次,且在每分钟的01秒执行)
REPEAT_INTERVAL => 'Freq=Minutely;Interval=1;BySecond=01',
--结束时间
END_DATE => TO_DATE(NULL),
--job类
JOB_CLASS => 'DEFAULT_JOB_CLASS',
--创建后自动激活
ENABLED => TRUE,
--自动删除: 默认true,即当job执行完毕都到期是否直接删除job
AUTO_DROP => FALSE,
--注释
COMMENTS => 'job说明-插数据到STUDENT表');
END;
/

JOB_TYPE -job类型说明:

  • PLSQL_BLOCK : 用于执行oracle语句(这个不建议用)
  • STORED_PROCEDURE : 用于执行存过(建议使用,最常用)
  • EXECUTABLE : 用于执行某些程序脚本语句,如shell脚本.(偶尔)

这种方式创建的job 在plsql的 jobs窗口可以很方便的查看/编辑

dbms_scheduler介绍

oracle使用DBMS_SCHEDULER调度作业

方式二: 旧版 DBMS_JOB.SUBMIT(...) 不建议

该方式最令人讨厌的地方在于 "频率配置" 晦涩难懂反人类.

-- 声明job
DECLARE
myjob NUMBER;
BEGIN
DBMS_JOB.SUBMIT(myjob, -- 这个参数是out类型
'PROC_INSERT_STUDENT;',
SYSDATE,
'SYSDATE+60/(24*60*60)' ); -- 每60秒一次(即每分钟一次)
COMMIT;
DBMS_OUTPUT.PUT_LINE(myjob); -- 输出 被赋值的 myjob 变量值
END;

查看job

-- 查看刚建立的job id
SELECT * FROM SYS.USER_JOBS

管理job

-- 运行job
BEGIN
DBMS_JOB.RUN(173);
COMMIT;
END; -- 停止job
BEGIN
DBMS_JOB.BROKEN(173, TRUE);
COMMIT;
END; -- 删除job
DECLARE
BEGIN
DBMS_JOB.REMOVE(173);
COMMIT;
END;

特别声明,在设置每周频率的时候,中文环境要输"星期X",而英文环境要输"SUNDAY",如下

declare
job_id number;
begin
sys.dbms_job.submit(job_id, 'PROC_INSERT_STUDENT;', sysdate, 'NEXT_DAY(TRUNC(SYSDATE ), ''星期日'' ) + 12/24'); --马上运行,然后每分钟运行一次
end;

oracle job 使用

oracle job 定时执行 存储过程

总结:

10g开始的新版DBMS_SCHEDULER.CREATE_JOB(...) 比 旧版DBMS_JOB.SUBMIT(...)强大灵活又易理解太多,如果不是版本太旧的原因,一定要用新版去管理job

oracle job草稿的更多相关文章

  1. 数据库MySQL与Oracle的一些去O注意项

    一.oracle递归查询语句start with ...connect by prior ① 给你一张表,表里面有主键id,以及该项的父节点parent_id,查询出该表中所有的父子关系节点树? Or ...

  2. Oracle 10g实现存储过程异步调用

    DBMS_JOB是什么?DBMS_JOB是Oracle数据库提供的专家程序包的一个.主要用来在后台运行程序,是数据库中一个极好的工具. 可用于自动调整调度例程任务,例如分析数据表,执行一些归档操作,清 ...

  3. ORACLE使用CASE WHEN的方法

    先写草稿. 说下我的需求,ORACLE数据库有两个字段RECEIVER_MOBILE与RECEIVER_PHONE,同为联系方式.当RECEIVER_MOBILE为空的时候,需要用到RECEIVER_ ...

  4. jdbctemplate 调用oracle 有返回(会话型临时表数据的)结果的存储过程

    注:本文为博主 原创. jdbctemplate 调用oracle存储过程 事务 临时表  有返回结果 1:java 代码 本逻辑代码本是想把 java 代码里的list<Strign>类 ...

  5. sql server t-sql脚本转成oracle plsql

    将一份SQL SERVER数据库生成的T-SQL脚本,转成ORACLE的PL/SQL,其复杂繁琐程度,远远出乎我的意料. 这份SQL SERVER脚本,里面有表,有视图,还有存储过程,以及一些自定义函 ...

  6. mysql和oracle 关于多表join的区别

    http://stackoverflow.com/questions/10953143/join-performance-oracle-vs-mysql 翻译自上面的链接. Given a query ...

  7. Oracle分析函数入门

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

  8. 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. ...

  9. 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 服务器安装操 ...

随机推荐

  1. [转]配置mysql允许远程连接的方法

    配置mysql允许远程连接的方法 vim /etc/my.cnf注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1保存退出.mysq ...

  2. The error occurred while setting parameters--索引 3 超出范围 sqlserver2008

    这个问题不是jar包冲突,是表的问题,表里的ID设置成自动增加1,就可以了!

  3. Activity和Service是否是在同一个进程中运行。

    一般情况下,Activity和Service在同一个包名内,并且没有设定属性android:process=":remote",两者在同一个进程中. 因为一个进程只有一个UI线程, ...

  4. linux -小记(2)问题:yum 安装报错"Another app is currently holding the yum lock; waiting for it to exit... ...: yum Memory : 26 M RSS (868 MB VSZ) Started: Wed Oct 26 22:48:24 2016 - 0"

    yum 安装报错 "Another app is currently holding the yum lock; waiting for it to exit... The other ap ...

  5. js 操作COOKE备忘

    function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf( ...

  6. FreeMarker模板引擎

    现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...

  7. 两个二进制数多少个位(bit)不同

    class Solution { public: /** * 获得两个整形二进制表达位数不同的数量 * * @param m 整数m * @param n 整数n * @return 整型 */ in ...

  8. 命令查看java的class字节码文件、verbose、synchronize、javac、javap

    查看Java字节码 1 javac –verbose查看运行类是加载了那些jar文件 HelloWorld演示: public class Test { public static void main ...

  9. c++ 中__declspec 的用法

    __declspec ( extended-decl-modifier-seq )扩展修饰符:1:align(#)    用__declspec(align(#))精确控制用户自定数据的对齐方式 ,# ...

  10. Gocd持续部署利器

    http://www.go.cd/documentation/user/current http://www.go.cd/images/home-image1.png Gocd 是ThoughtWor ...