david database lab

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(3)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • 书画 (rss)
  • 围棋 (rss)
  • 地理 (rss)
  • 天文 (rss)
  • 摄影 (rss)
  • 文学 (rss)
  • 旅游 (rss)
  • 电影 (rss)
  • 诗集(3) (rss)
  • 象棋 (rss)
  • 运动 (rss)
  • 音乐 (rss)

随笔档案

  • 2008年9月 (1)
  • 2008年7月 (3)

文章分类

  • AJAX (rss)
  • ARITHEMETIC (rss)
  • C++ (rss)
  • CONFIGURATION (rss)
  • CSS(2) (rss)
  • DB2 (rss)
  • EJB (rss)
  • HQL (rss)
  • HTML(4) (rss)
  • JAVA(9) (rss)
  • JAVASCRIPT(27) (rss)
  • JSP(2) (rss)
  • LINUX(7) (rss)
  • MANUAL (rss)
  • MYSQL (rss)
  • ORACLE(88) (rss)
  • PL/SQL(3) (rss)
  • PL/SQL DEVELOPER (rss)
  • REGEX(1) (rss)
  • RSS(2) (rss)
  • SQL (rss)
  • SQL PLUS (rss)
  • SQL SERVER (rss)
  • SSH (rss)
  • STRUTS(6) (rss)
  • TOAD (rss)
  • XML(1) (rss)
  • 单元测试 (rss)
  • 数据库基础(7) (rss)
  • 数据建模 (rss)
  • 环境部署(5) (rss)
  • 项目设计(1) (rss)

文章档案

  • 2009年11月 (47)
  • 2009年8月 (2)
  • 2009年7月 (2)
  • 2009年6月 (11)
  • 2009年5月 (14)
  • 2009年4月 (2)
  • 2009年2月 (4)
  • 2009年1月 (2)
  • 2008年12月 (5)
  • 2008年11月 (6)
  • 2008年10月 (13)
  • 2008年9月 (3)
  • 2008年8月 (6)
  • 2008年7月 (16)
  • 2008年6月 (31)
  • 2008年5月 (4)

相册

  • goole相册
  • RELAX

收藏夹

  • oracle-DataGuard (rss)
  • oracle-RMAN (rss)
  • oracle体系 (rss)
  • oracle备份恢复 (rss)
  • oracle闪回 (rss)

JavaScript Web

  • gegereka-linux
  • linux 资源文件
  • java2s (rss)
  • java2s
  • onlyaa
  • ORACLE官方论坛
  • rpm.pbone.net
  • rpm资源
  • struts-guide
  • w3school
  • 鸟哥

搜索

  •  

最新评论

  • 1. re: hand in hand
  • I cannot thank you enough for the blog . Really thank you! Really Cool.
  • --zakbut
  • 2. re: oracle之isqlplus登录问题
  • 启动isqlplus
    isqlplus star
  • --广州大道
  • 3. re: 日期日间控件4
  • 显示时间,用户原来选择的时间
  • --LVWallet
  • 4. re: linux -- cpio命令
  • gunzip 10201_database_linux_x86_64.cpio.gz
  • --Goyard
  • 5. re: js 组合框
  • <option value="csdn">csdn</option>
  • --saletopbags

阅读排行榜

  • 1. hand in hand(380)
  • 2. 桃花记(255)
  • 3. 月夜随想(236)
  • 4. 冬至随想(228)

评论排行榜

  • 1. hand in hand(2)
  • 2. 桃花记(0)
  • 3. 月夜随想(0)
  • 4. 冬至随想(0)

Powered by: 博客园
模板提供:沪江博客
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

全面学习ORACLE Scheduler特性 (12)使用Window和Window Group 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-window.shtml

(12)使用Window和Window Group
[君三思] 2009-9-8

七、使用Windows

  此Windows非彼Windows,通常说的Windows是指盖首富的操作系统,而此处所说的Windows,是指SCHEDULER特性中的一个子项。在SCHEDULER中,WINDOW对应的是一个时间窗口的概念。

  我们知道普通的jobs是没有运行时间管理地概念的,就是说一个job启动之后,用户只能被动地等待其执行,一直到其执行地任务完成(或DBA手动kill对应进程),在此期间,执行的job将与其它活动的进程共同竞争当前系统中的资源。对于大型数据库系统,系统资源那可是相当宝贵的无形资产哪,企能谁说用就用、想什么时候用就什么时候用,没点儿计划没点儿节制这还了得。你还别说,在9i之前,还真就是这么回事儿,谁想用就用,谁也管不了,其中表示最甚的就是job。你是否想起了Job Classes,没错定义Job Classes确实可以控制job能够使用的资源,不过单单使用Job Classes并不能灵活的控制job在合适的时间使用适当的资源。进入10g之后,SCHEDULER中提供了WINDOW,事情终于有了缓解。

  WINDOW 可以指定一个时间窗口,在此期间,通过与Job Classes的搭配组合,能够有效控制job执行时支配(使用)的资源。比如说job通常是在凌晨服务器负载较低时执行,那么就可以通过WINDOW设置在此期间,允许jobs使用更多的系统资源,而到了工作时间后,如果job仍未执行完成,为其分配另一个有限的资源,以尽可能降低job执行占用的资源对其它业务的影响。

1、创建Window

  创建Window有一个专门的过程:DBMS_SCHEDULER.CREATE_WINDOW进行处理,该过程有两种调用方式,如下:

    -- 基于SCHEDULE

    DBMS_SCHEDULER.CREATE_WINDOW (

       window_name             IN VARCHAR2,

       resource_plan           IN VARCHAR2,

       schedule_name           IN VARCHAR2,

       duration                IN INTERVAL DAY TO SECOND,

       window_priority         IN VARCHAR2                 DEFAULT ¨LOW¨,

       comments                IN VARCHAR2                 DEFAULT NULL);

    -- 基于定义的调度

    DBMS_SCHEDULER.CREATE_WINDOW (

       window_name             IN VARCHAR2,

       resource_plan           IN VARCHAR2,

       start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,

       repeat_interval         IN VARCHAR2,

       end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,

       duration                IN INTERVAL DAY TO SECOND,

       window_priority         IN VARCHAR2                 DEFAULT ¨LOW¨,

       comments                IN VARCHAR2                 DEFAULT NULL);

  刨开那些看着眼熟的,已经认识的,看参数名就知道其所代表含义的之外,下列几个参数可能需要关注:

  • Resource_plan :这一参数用来指定要使用的资源使用计划,当打开WINDOW时,就会自动按照指定的资源使用计划中的设置分配资源,当WINDOW关闭时(没错,window是会关闭的,要不怎么说有效控制资源的使用情况泥),系统会自动切换回适当资源计划。这个参数在执行过程时甚至可以指定为NULL或空值¨¨,当设置为NULL时,就表示使用默认的资源计划,当设置为空值¨¨时,表示禁用资源使用计划。
  • Duration :指定WINDOW的有效期,比如说指定为interval ¨5¨ hour就表示5个小时,该参数在执行过程时必须指定参数值,否则创建会报错。
  • Window_priority :该参数用来指定WINDOW的优先级。因为在相同时间只有一个WINDOW有效,因此如果在创建WINDOW时发现重叠的情况,ORACLE就需要根据这一参数指定的规则,来确定优先级,说白了就是先把资源给谁用,这一参数有两个可选值:HIGH或LOW,默认值为LOW。

  正如前面CREATE_WINDOW过程语法结构显示的那样,调用该过程有两种方式,差异就在于是指定现有定义好的调度SCHEDULE,还是在执行过程时指定调度,目标和实现的功能都是相同的,这里仅做示例,咱就挑个最复杂的方式吧,执行过程时指定调度,执行脚本如下:

    SQL> begin

      2    dbms_scheduler.create_window(window_name     => ¨my_first_wd1¨,

      3                                 resource_plan   => null,

      4                                 start_date      => sysdate,

      5                                 repeat_interval => ¨FREQ=DAILY; INTERVAL=5¨,

      6                                 duration        => interval ¨1¨ hour);

      7  end;

      8  /

    PL/SQL procedure successfully completed.

  查询当前拥有的WINDOW,可以通过*_SCHEDULER_WINDOWS视图(注意只有DBA和ALL,没有USER,因为所有定义的WINDOW都属于SYS用户)。除了*_SCHEDULER_WINDOWS视图显示当前所有WINDOW外,还有:

  • *_SCHEDULER_WINDOW_DETAILS 视图:显示WINDOW的详细信息;
  • *_SCHEDULER_WINDOW_LOG 视图:显示WINDOW的日志,比如打开和关闭;

2、管理Window

  通过前面那些SCHEDULER对象的学习,相当大家已经了解了ORACLE SCHEDULER中对象的特点,对于多数对象的管理,不外乎下列几种:

  • 修改对象属性,使用SET_ATTRIBUTE过程;

    SQL> exec dbms_scheduler.set_attribute(¨sys.my_first_wd1¨,¨start_date¨,sysdate+1);

    PL/SQL procedure successfully completed.
  • ENABLE 对象,使用ENABLE过程;

    SQL> exec dbms_scheduler.enable(¨sys.my_first_wd1¨);

    PL/SQL procedure successfully completed.
  • DISABLE 对象,使用DISABLE过程;

    SQL> exec dbms_scheduler.disable(¨sys.my_first_wd1¨);

    PL/SQL procedure successfully completed.
  • 删除对象,使用DROP_WINDOW过程;

    SQL> exec dbms_scheduler.drop_window(¨sys.my_first_wd1¨);

    PL/SQL procedure successfully completed.

  除此之外呢,对于WINDOW对象来说,由于其特殊作用,又有:

  • 手动打开WINDOW,使用OPEN_WINDOW过程;

  注意WINDOW是依赖于其调度的,因此在手动打开WINDOW时,必须为其指定duration属性:

    SQL> exec dbms_scheduler.open_window(¨sys.my_first_wd1¨,interval ¨1¨ hour);;

    PL/SQL procedure successfully completed.
  • 手动关闭WINDOW,使用CLOSE_WINDOW过程;

    SQL> exec dbms_scheduler.close_window(¨sys.my_first_wd1¨);

    PL/SQL procedure successfully completed.

  关闭和打开WINDOW,都会记录日志,大家可以通过*_SCHEDULER_WINDOW_LOG视图中获取这部分信息。

3、关于WINDOW GROUP

  除了WINDOW外,还有一个与WINDOW有关系的叫WINDOW GROUP,一个WINDOW GROUP可能包 含多个WINDOW。使用WINDOW GROUP的本意是这样的,假如说某个job执行的时间比较长,甚至全天24小时都在执行,对于这类job,单个WINDOW很难有效调整其资源占用,这时间呢,就可以通过设置一个WINDOW GROUP,该WINDOW GROUP中包含了多个WINDOW,每个WINDOW分别负责不同时间点时的资源使用计划。

  然后在创建JOB时,指定schedule_name参数为WINDOW GROUP的名称(想不到SCHEDULE_NAME还能指定为WINDOW GROUP哪,其实何止WINDOW GROUP,还可以直接指定成WINDOW哪),这样,就可以通过很简单的方式,将job与window联系在一起了。

  WINDOW GROUP 的创建和管理与前面介绍的方式极其相似:

  • 创建,使用CREATE_WINDOW_GROUP过程;
  • 删除,使用DROP_WINDOW_GROUP过程;
  • 添加WINDOW成员,使用ADD_WINDOW_GROUP_MEMBER过程;
  • 删除WINDOW成员,使用REMOVE_WINDOW_GROUP_MEMBER过程;
  • 启用,使用ENABLE过程;
  • 禁用,使用DISABLE过程;

  这些过程的调用方式也都非常简单,这里就不着重演示了,感兴趣的朋友不妨自行尝试。

发表于 2009-11-25 15:24 javaex 阅读(657) 评论(0)  编辑  收藏 所属分类: ORACLE
 
新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
相关文章:
  • Oracle 10g Scheduler 特性 转自 http://blog.csdn.net/tianlesoftware/archive/2009/10/22/4715218.aspx
  • 全面学习ORACLE Scheduler特性 (12)使用Window和Window Group 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-window.shtml
  • 全面学习ORACLE Scheduler特性 (11)使用Job Classes 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-job-classes.shtml
  • 全面学习ORACLE Scheduler特性 (10)使用Chains之管理CHAIN 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-alter-chains.shtml
  • 全面学习ORACLE Scheduler特性 (9)使用Chains之创建CHAIN 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-create-chains.shtml
  • 全面学习ORACLE Scheduler特性 (8)使用Events之Aapplication抛出的Events 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-application-events.shtml
  • 全面学习ORACLE Scheduler特性 (7)使用Events之Scheduler抛出的Events 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-using-scheduler-events.shtml
  • 全面学习ORACLE Scheduler特性 (6)设置Repeat Interval参数 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-repeat_interval.shtml
  • 全面学习ORACLE Scheduler特性 (5)Schedules调度Programs执行的Jobs 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-schedule-job-execute.shtml
  • 全面学习ORACLE Scheduler特性 (4)使用和管理Schedules 转自三思 http://www.5ienet.com/note/html/scheduler/oracle-scheduler-create-schedule.shtml