- 浏览: 211060 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (196)
- Git (16)
- maven (8)
- Python (20)
- linux (14)
- java (30)
- spring (5)
- javascript (4)
- oracle (15)
- jquery (4)
- jbpm4.4 (4)
- ibatis (1)
- svn (1)
- sql server (1)
- sqoop (1)
- photoshop (2)
- 日常记录 (5)
- scala (1)
- IntelliJ IDEA (7)
- mysql (2)
- Hive (1)
- visual studio code (3)
- angularjs (5)
- nodejs (4)
- gradle (1)
- springboot (4)
- jakson (1)
- hibernate (2)
- 面试 (5)
- React (2)
- Kotlin (1)
- Netty (0)
- webstorm (2)
- spring cloud (4)
- redis (1)
- PowerDesigner (1)
- Vue (4)
- easyui (1)
- activiti (2)
- httpClient4.5 (2)
- logback (3)
- ngrinder (1)
- 分库分表 (1)
最新评论
-
严东军:
学习了,谢谢
摘录--DBMS_SCHEDULER -
zwllxs:
你知道你调的是谁的代码不?
jbpm4.4+ssh2 完整请假流程
Oracle 10g新增了scheduler的功能,功能比job强大的很多,Oracle官方也建议将job转移到scheduler 。
先解释一下基础概念,scheduler 包含了以下几个实体对象
Program -- 提供了scheduler 将要运行什么,包含program name,program type(PLSQL块、存储过程、外部程序),program action(具体的程序实体,比如说一个PLSQL块、或者是存储过程的名称、或者是外部程序的路径加名称) 。
Schedules -- 指定何时何种频率来运行job,可以被不同的job重复的利用。比如说我有两个job都要求在每天的凌晨4点运行,那么两个job可以同时指定相同的schedule。
Jobs -- 具体的作业的名称,依赖于那个program、schedule。也可以不指定program、schedule,而直接写入program、schedule的相应参数。
Chains -- 把一组program像一个单独的实体连接在一起,作为一个对象。Job可以指向Chains代替单一的program 。这样就能完成类似如下功能:运行A,然后运行B,当A、B都运行成功则运行C,否则运行D。
下面参考文档边看边做。
1.创建一张表 create table scheduler_test(id number,instime date);
2.创建一个存储过程,实现往表中插入资料。
create or replace procedure p_insSysdate as
id number;
begin
select count(*) into id from scheduler_test;
insert into scheduler_test values(id,sysdate);
commit;
end;
/
3.创建一个schedule,这个仅仅是一个时间上的安排,由DBMS_SCHEDULER.CREATE_JOB调用。这样就可以重用schedule,并且schedule在时间的安排上强大与原先的JOB 。语法如下:
BEGIN
SYS.DBMS_SCHEDULER.CREATE_SCHEDULE
(
schedule_name => 'SCOTT.EVERY_MINUTE'
,start_date => NULL
,repeat_interval => 'FREQ=MINUTELY'
,end_date => NULL
,comments => NULL
);
END;
/
以下给出部分repeat_interval的写法实例,以供参考
EVERY DAY 'FREQ=DAILY;INTERVAL=1'
EVERY MINUTE 'FREQ=MINUTELY;INTERVAL=1'
EVERY 4 HOURS ON THE HOUR 'FREQ=HOURLY;INTERVAL=4;BYMINUTE=0;BYSECOND=0'
1st DAY OF EVERY MONTH 'FREQ=DAILY;BYMONTHDAY=1'
WEEKDAYS AT 7am and 3pm 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15; BYMINUTE=0;BYSECOND=0'
4.创建DBMS_SCHEDULER.CREATE_PROGRAM,指定运行什么样的程序。
BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'SCOTT.PRG_INSSYSDATE'
,program_type => 'STORED_PROCEDURE'
,program_action => 'p_insSysdate'
,number_of_arguments => 0
,enabled => TRUE
,comments => NULL
);
END;
/
program_type有三类 'PLSQL_BLOCK','STORED_PROCEDURE','EXECUTABLE'分别表示program_action为PLSQL块、存储过程、外部操作系统程序。number_of_arguments表需要传入的参数个数,至于参数如何传入,以后再来研究。
5. 现在来创建一个JOB,并使用先前的schedule、program 。
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SCOTT.JOB_INSSYSDATE'
,schedule_name => 'SCOTT.EVERY_MINUTE'
,program_name => 'SCOTT.PRG_INSSYSDATE'
,comments => NULL
);
END;
/
DBMS_SCHEDULER.CREATE_JOB中有一个参数auto_drop,如果设置成TRUE,job执行完成或者job变成disabled则job自动被删除。如下三种情况job被认为是completed
1) Its end date (or its schedule's end date) has passed.
2) It has runmax_runsnumber of times.max_runsmust be set withSET_ATTRIBUTE.
3) It is not a repeating job and has run once.
下面来查看一下
select * from scheduler_test;
ID INSTIME
---------- ------------
0 14-AUG-08
1 14-AUG-08
2 14-AUG-08
表中已经有内容,说明job已经运行起来了。
如何让job停下来?分为两种情况:一种是停止正在运行的job,
begin
dbms_scheduler.STOP_JOB('job_insSysdate');
end;
会提示如下错误:ORA-27366 job 'scott.job_insSysdate' is not running .
另一种是使job disabled,
begin
dbms_scheduler.DISABLE('job_insSysdate');
end;
可以通过查看job的状态,确认是否使job失效。
select enabled,status from user_scheduler_jobs;
dbms_scheduler.DISABLE 的name参数可以是program、schedule、job等对象。可以disabled的前提是该对象没有被其他的对象引用,比如job_insSysdate引用了prg_insSysdate,如果job_insSysdate为enabled,这时不能直接disabled prg_insSysdate .
先解释一下基础概念,scheduler 包含了以下几个实体对象
Program -- 提供了scheduler 将要运行什么,包含program name,program type(PLSQL块、存储过程、外部程序),program action(具体的程序实体,比如说一个PLSQL块、或者是存储过程的名称、或者是外部程序的路径加名称) 。
Schedules -- 指定何时何种频率来运行job,可以被不同的job重复的利用。比如说我有两个job都要求在每天的凌晨4点运行,那么两个job可以同时指定相同的schedule。
Jobs -- 具体的作业的名称,依赖于那个program、schedule。也可以不指定program、schedule,而直接写入program、schedule的相应参数。
Chains -- 把一组program像一个单独的实体连接在一起,作为一个对象。Job可以指向Chains代替单一的program 。这样就能完成类似如下功能:运行A,然后运行B,当A、B都运行成功则运行C,否则运行D。
下面参考文档边看边做。
1.创建一张表 create table scheduler_test(id number,instime date);
2.创建一个存储过程,实现往表中插入资料。
create or replace procedure p_insSysdate as
id number;
begin
select count(*) into id from scheduler_test;
insert into scheduler_test values(id,sysdate);
commit;
end;
/
3.创建一个schedule,这个仅仅是一个时间上的安排,由DBMS_SCHEDULER.CREATE_JOB调用。这样就可以重用schedule,并且schedule在时间的安排上强大与原先的JOB 。语法如下:
BEGIN
SYS.DBMS_SCHEDULER.CREATE_SCHEDULE
(
schedule_name => 'SCOTT.EVERY_MINUTE'
,start_date => NULL
,repeat_interval => 'FREQ=MINUTELY'
,end_date => NULL
,comments => NULL
);
END;
/
以下给出部分repeat_interval的写法实例,以供参考
EVERY DAY 'FREQ=DAILY;INTERVAL=1'
EVERY MINUTE 'FREQ=MINUTELY;INTERVAL=1'
EVERY 4 HOURS ON THE HOUR 'FREQ=HOURLY;INTERVAL=4;BYMINUTE=0;BYSECOND=0'
1st DAY OF EVERY MONTH 'FREQ=DAILY;BYMONTHDAY=1'
WEEKDAYS AT 7am and 3pm 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15; BYMINUTE=0;BYSECOND=0'
4.创建DBMS_SCHEDULER.CREATE_PROGRAM,指定运行什么样的程序。
BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
program_name => 'SCOTT.PRG_INSSYSDATE'
,program_type => 'STORED_PROCEDURE'
,program_action => 'p_insSysdate'
,number_of_arguments => 0
,enabled => TRUE
,comments => NULL
);
END;
/
program_type有三类 'PLSQL_BLOCK','STORED_PROCEDURE','EXECUTABLE'分别表示program_action为PLSQL块、存储过程、外部操作系统程序。number_of_arguments表需要传入的参数个数,至于参数如何传入,以后再来研究。
5. 现在来创建一个JOB,并使用先前的schedule、program 。
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SCOTT.JOB_INSSYSDATE'
,schedule_name => 'SCOTT.EVERY_MINUTE'
,program_name => 'SCOTT.PRG_INSSYSDATE'
,comments => NULL
);
END;
/
DBMS_SCHEDULER.CREATE_JOB中有一个参数auto_drop,如果设置成TRUE,job执行完成或者job变成disabled则job自动被删除。如下三种情况job被认为是completed
1) Its end date (or its schedule's end date) has passed.
2) It has runmax_runsnumber of times.max_runsmust be set withSET_ATTRIBUTE.
3) It is not a repeating job and has run once.
下面来查看一下
select * from scheduler_test;
ID INSTIME
---------- ------------
0 14-AUG-08
1 14-AUG-08
2 14-AUG-08
表中已经有内容,说明job已经运行起来了。
如何让job停下来?分为两种情况:一种是停止正在运行的job,
begin
dbms_scheduler.STOP_JOB('job_insSysdate');
end;
会提示如下错误:ORA-27366 job 'scott.job_insSysdate' is not running .
另一种是使job disabled,
begin
dbms_scheduler.DISABLE('job_insSysdate');
end;
可以通过查看job的状态,确认是否使job失效。
select enabled,status from user_scheduler_jobs;
dbms_scheduler.DISABLE 的name参数可以是program、schedule、job等对象。可以disabled的前提是该对象没有被其他的对象引用,比如job_insSysdate引用了prg_insSysdate,如果job_insSysdate为enabled,这时不能直接disabled prg_insSysdate .
发表评论
-
简历11111111111
2013-03-12 22:19 677简历的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 -
oracle集合操作函数
2010-09-13 10:34 1071集合操作符专门用于合并多条select 语句的结果,包括:UN ... -
oracle的case语句实例
2010-08-09 13:12 943SELECT SUM( CASE ... -
摘录:简单测试job的创建过程案例
2010-08-04 18:37 1161一:简单测试job的创建 ... -
摘录-详解 Oracle job 的使用与管理技巧
2010-08-04 18:35 1148详解 Oracle job 的使用与管理技巧 SVRMGR&g ... -
摘录--关于MV刷新的问题
2010-08-04 10:56 1811关于MV刷新的问题 最近在工作中遇到一个问题,是关 ... -
转:基于远程数据库表,建立本地数据库的物化视图
2010-05-03 14:49 2038基于远程数据库表,建立本地数据库的物化视图2008年12月28 ... -
如何用SQL返回两个日期之间的所有连续日期
2010-04-06 22:28 8990如何用SQL返回两个日期之间的所有连续日期 -------- ... -
qlsql 学习实例代码4
2010-04-03 19:57 1114---------------------------行触发器 ... -
qlsql 学习实例代码3
2010-03-31 22:26 1113------------------------------- ... -
qlsql 学习实例代码2
2010-03-31 15:09 1232------------------------------- ... -
qlsql 学习实例代码1
2010-03-30 23:11 1209准备工作: create table DEPT ( DEP ... -
PL SQL 学习笔记
2010-03-30 15:47 839PL SQL 学习笔记 见附件 作者:丁俊 PLSDE ... -
oracle pl/sql实例练习
2010-03-30 12:11 1043第一部分:oracle pl/sql实例练习(1) 一、使用s ...
相关推荐
Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...
标题“DBMS_XPLAN: 显示Oracle执行计划”是一个关于Oracle数据库系统中用于分析SQL查询执行性能的重要工具的讨论。这个工具允许用户查看SQL语句的执行计划,从而理解数据库如何处理这些语句,以及哪些操作可能影响...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
### DBMS_STATS.GATHER_TABLE_STATS详解 #### 一、概述 `DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关...
UnixODBC(Open Database Connectivity for Unix)是一个开源的数据库连接器,它为各种数据库管理系统(DBMS)提供了一个统一的接口,使得应用程序可以在Unix、Linux以及macOS等操作系统上与不同的数据库进行交互。...
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...
### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...
在“dbms-III.rar_dbms_successfulpqn”这个压缩包中,我们重点关注的是第三部分的DBMS内容,特别是与成功实践相关的知识点。其中包含的“dbms-III.pdf”文件很可能是详细阐述这些主题的文档。 数据库管理系统的...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
在Oracle数据库管理中,DBMS_JOB和DBMS_SCHEDULER是两个重要的后台进程管理包,用于计划和执行数据库任务。DBMS_JOB是较早的版本,而DBMS_SCHEDULER是其现代替代品,提供了更丰富的功能和灵活性。在从DBMS_JOB迁移到...
在Oracle 11.2.0.4中调用 javax.mail 发送邮件时...EXEC dbms_java.grant_permission( '<your_schema_please_change>','SYS:java.lang.RuntimePermission', 'setContextClassLoader', '' ); 第二步:解决方案看文档中。
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
Oracle 统计分析-dbms_stats.pdf Oracle 中的统计分析对于数据库的性能至关重要。dbms_stats 是 Oracle 提供的一个统计分析工具,能够良好地估计统计数据,特别是针对较大的分区表,并且能获得更好的统计结果,最终...
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...
数据库原理课程设计-数据库管理系统_A-DBMS