oracle job入门【原】
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_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;
总结:
10g开始的新版DBMS_SCHEDULER.CREATE_JOB(...) 比 旧版DBMS_JOB.SUBMIT(...)强大灵活又易理解太多,如果不是版本太旧的原因,一定要用新版去管理job
oracle job入门【原】的更多相关文章
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- [转]oracle学习入门系列之五内存结构、数据库结构、进程
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
- oracle数据库入门
oracle 数据库入门. 1.数据 2.数据存储的地方:变量 数组 容器 (内存中),文件,数据库(文件) 3.数据库系统:sqlserver 2000 2005 2008 mysql 5 ...
- Oracle EBS 入门
Oracle EBS 入门Oracle EBS全称是Oracle 电子商务套件(E-Business Suit),是在原来Application(ERP)基础上的扩展,包含ERP(企业资源计划管理). ...
- Oracle从入门到精通----学习笔记
书名:<Oracle从入门到精通:视频实战版>秦靖.刘存勇等编著 第4章 SQL基础 1.SQL语言分类 数据定义语言 --- DDL,Data Definition Language 数 ...
- 《Oracle 11g 入门到精通.明日科技.pdf》学习笔记
本博文整理者:刘军 本博文出自于: <Oracle 11g 入门到精通>一书 声明:1:转载请标注出处.本文不得作为商业活动.本人不负法律责任.违法者自负一切法律责任. ————————— ...
- 【oracle】入门学习(一)
一直想学oracle但都没有下定决心.这次借了书,一定要学好oracle. 目前学习 <Oracle从入门到精通> 明日科技 的Oracle 11g 版本 关系型数据库的基本理论 数据模型 ...
- Oracle从入门到精通 限定查询和排序查询的问题
视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 知识点 SQL语句的执行顺序 限定符号的使用. 具体内容: 如果想要对所选择的数据进行控制,就可以使 ...
- Oracle编程入门经典 第12章 事务处理和并发控制
目录 12.1 什么是事务处理... 1 12.2 事务处理控制语句... 1 12.2.1 COMMIT处理... 2 12.2.2 RO ...
随机推荐
- 同步或者重构Activiti Identify用户数据的多种方案比较
http://www.kafeitu.me/activiti/2012/04/23/synchronize-or-redesign-user-and-role-for-activiti.html 如何 ...
- [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html
Nginx安装及配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP ...
- C++的内存分区
C++的内存划分为栈区.堆区.全局区/静态区.字符串常量和代码区. 栈区 由系统进行内存的管理. 主要存放函数的参数以及局部变量.在函数完成执行,系统自行释放栈区内存,不需要用户管理.整个程序的栈区的 ...
- Jquery 组 checkbox全选按钮
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- OneZero产品视频
产品视频地址:http://v.youku.com/v_show/id_XMTU1MDMwOTk2OA==.html
- 通过几个例子看sed的模式空间与保持空间
SED之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“暂存缓冲区(holdingspace)这2个空间的使 ...
- 配置自己的Maven方式并使用Maven 运行项目Idea的maven的项目
(1) 当安装了 maven之后,需要导入项目代码,然后编译执行: 打开Idea ==>然后点击小扳手==>在搜索框中输入maven==>然后找到 Maven home direct ...
- delphi 导出到excel的第1种方法
第一种方法delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):bo ...
- HDU-1686-KMP-水题
纯KMP #include <cstdio> #include <algorithm> #include <cstring> #include <ctype. ...
- java访问权限表
private(私有的) 默认的(什么都不写) protected(受保护的) public(公共的 ) 同一个类中 yes yes yes yes 同一个包中不同类之间 no yes yes ...