iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle Scheduler能实现哪些功能
  • 249
分享到

Oracle Scheduler能实现哪些功能

2024-04-02 19:04:59 249人浏览 薄情痞子
摘要

这篇文章主要介绍“oracle Scheduler能实现哪些功能”,在日常操作中,相信很多人在Oracle Scheduler能实现哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

这篇文章主要介绍“oracle Scheduler能实现哪些功能”,在日常操作中,相信很多人在Oracle Scheduler能实现哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle Scheduler能实现哪些功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Oracle Scheduler可以帮助DBA或者数据库用户自动调度和运行各种类型的作业,比如数据库备份、收集优化器统计信息、生成各种报表或者执行业务流程等等,也可以把Schedule和Resource Manager结合起来通过时间窗口激活指定的Resource Plan,完成企业在资源管理和作业调度上的各种复杂需求,在10g之前可以通过DBMS_JOB工具来实现类似的功能,但毫无疑问,DBMS_SCHEDULER的灵活性和多样性比起老版本工具都有了极大的提升。

一,功能概述
 Oracle Scheduler到底可以实现那些具体功能呢?来看一下官方文档给出的解释:

 . Run database program units
    可以在本地或者远程数据库执行的数据库程序包括:PL/sql 匿名块、PL/SQL 存储过程、JAVA 存储过程以及链

 . Run external executables, (executables that are external to the database)
    执行外部的可执行文件,包括应用程序、shell脚本、windows批处理文件,如果要在远程主机执行外部作业,远程主机只需要安装Agent而不需要Database

 . Schedule job execution using the following methods:
    .Time-based scheduling
        You can schedule a job to run at a particular date and time, either once or on a repeating basis.
    .Event-based scheduling
        You can start jobs in response to system or business events. Your applications can detect events and then signal the Scheduler. Depending on the type of signal         sent, the Scheduler starts a specific job. 
    .Dependency scheduling
        You can set the Scheduler to run tasks based on the outcome of one or more previous tasks. You can define complex dependency chains that include branching         and nested chains.

 . Prioritize jobs based on business requirements.
    .Controlling Resources by Job Class
        把有相同特性的Job指定到一个Job Class,再把Job Class映射到Resource Consumer Group,实现对调度作业的资源分配控制
    .Controlling Job Prioritization based on Schedules
        通过时间窗口改变作业的优先等级,创建Window在一个时间范围激活相应的 Resource Plan 来控制不同作业在不同时段的优先等级

 . Manage and monitor jobs

 . Execute and manage jobs in a clustered environment
 

    支持在RAC环境管理调度作业

二,基本概念
Oracle Scheduler包含的主要对象包括:Schedule,Program,Job,Job Class,Chain,Window,Database Destination,File Watcher,Credential ...具体介绍如下:

. Schedule (时间)
    通过 DBMS_SCHEDULER 包中的过程 CREATE_SCHEDULE 定义调度的开始时间,结束时间以及重复间隔
    CREATE_EVENT_SCHEDULE 过程用来创建由事件触发的时间表,由一个特定时间段内的一个事件调起一项任务

. Program (程序)
    定义了作业的形式及内容,作业形式可以是PL/SQL 匿名块,也可以是存储过程或者外部可执行文件,执行的存储过程带有输入参数时必须以匿名块运行

. Job (作业)
    通过CREATE_JOB创建一个作业,这个存储过程使用了重载,所以输入参数的选择可以非常灵活,既可以独立设置作业的时间、内容、Job Class,也可以引用已     经存在的Schedule 和 Program 来简化作业的创建

. Job Class (作业类)

    作业类中定义了Resource Consumer Group ,Service(RAC),日志等级,日志保留时间。要注意的一点是在Resource Manager中,service 参数会将会话映射到一个 资源用户组,如果同时指定了RAC节点和用户组,用户组参数优先

. Chain (链)
    说白了就是一系列的作业通过链来建立起一套依赖关系,大概的思路是这样的:先使 CREATE_CHAIN 创建一个链,再通过 DEFINE_CHAIN_STEP 和 DEFINE_CHAIN_EVENT_STEP 给要链接的 Program、Sub Chain、Event Condition、Event Schedule 分别定义一个别名(step_name),然后拿 DEFINE_CHAIN_RULE 定义这些 Step 的依赖规则,一通判断、分支、嵌套之后,链就算创建完成了,在 CREATE_JOB 时 (job_type => 'CHAIN',job_action => 'chain_name') 就可以了,做人得讲究,这个必须上图:

Oracle Scheduler能实现哪些功能

. Window (窗口)

    窗口指的是一个介于开始时间和结束时间之间的时间段,(为什么这么简单的一个概念被我说的如此绕口,我的小学语文老师呢?您有话要说吗。。),通常用来调起作业,或者在不同的时间段激活不同的 Resource Plan 以调整作业之间的资源分配,文档中还提到了 Overlapping Windows ,暂不研究了,来吧,有图有真相:

Oracle Scheduler能实现哪些功能

. Database Destination (数据库路径
)
    通过 CREATE_DATABASE_DESTINATION 创建,在 CREATE_JOB 中作为一个输入参数,用来执行远程调度

Credential (证书)
     证书用来保存OS或者数据库的用户密码,在执行External Job 或者远程数据库作业时使用

. File Watcher (文件监视器)
    这个好玩。。可以用来检测一个OS文件是否存在,根据文件大小判断传输是否完成,继而触发一个 Event Schedule

 . Lightweight Job (轻量级作业,为什么我的颜色不对呢?
    11gR1之前不被支持,通过 job_style 指定,轻量级作业并不是一个调度器对象,它适用于多个频繁执行的小作业,看看官方文档的介绍:

  • Unlike regular jobs, they are not schema objects.

  • They have significantly better create and drop times over regular jobs because they do not have the overhead of creating a schema object.

  • They have lower average session create time than regular jobs.

  • They have a small footprint on disk for job metadata and run-time data.

三,创建过程
--官方语法:








1,创建调度作业执行一个 Shell 脚本

执行Shell 脚本会在/tmp 生成一个文件:

  1. [oracle@ASM ~]$ cat /tmp/job.sh

  2. #!/bin/bash


  3. /bin/touch /tmp/abc.txt

创建证书,创建并立即执行作业:

  1. SQL> exec dbms_scheduler.create_credential('CRE1','user1','abcd1234')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'EXECUTABLE','/tmp/job.sh',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test.','CRE1')


  4. PL/SQL procedure successfully completed.


  5. SQL> select job_name,state,run_count,failure_count,raise_events from dba_scheduler_jobs where comments='Test.';


  6. JOB_NAME   STATE            RUN_COUNT FAILURE_COUNT RAISE_EVENTS

  7. ---------- --------------- ---------- ------------- --------------------

  8. JOB$_127   SUCCEEDED                1             0


  9. SQL> select JOB_NAME,STATUS,CREDENTIAL_NAME,ADDITIONAL_INFO from dba_scheduler_job_run_details where job_name='JOB$_127';


  10. JOB_NAME   STATUS     CREDENTIAL ADDITIONAL_INFO

  11. ---------- ---------- ---------- --------------------------------------------------------------------------------

  12. JOB$_127   SUCCEEDED  CRE1       EXTERNAL_LOG_ID="job_74659_457",

  13.                                  USERNAME="user1"

检查作业是否执行成功

  1. [oracle@ASM ~]$ ls /tmp/abc.txt

  2. /tmp/abc.txt

2,分别执行SQL语句、匿名块、PL/SQL 存储过程

  1. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'PLSQL_BLOCK','insert into scott.t1(dname) values(''BLOCK'');',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_1')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'PLSQL_BLOCK','BEGIN p2(''50'',''t'',''t''); END;',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_3')


  4. PL/SQL procedure successfully completed.


  5. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,'STORED_PROCEDURE','p1',0,'','','','DEFAULT_JOB_CLASS',TRUE,FALSE,'Test_2')


  6. PL/SQL procedure successfully completed.

3,创建 Program 并在 Job 中引用

  1. SQL> exec dbms_scheduler.create_program('TEST1','PLSQL_BLOCK','BEGIN p2(''50'',''t'',''t''); END;',0,TRUE,'Pro_1')


  2. PL/SQL procedure successfully completed.


  3. SQL> exec dbms_scheduler.create_job(dbms_scheduler.generate_job_name,program_name => 'TEST1',repeat_interval => '',end_date => '',enabled => TRUE ,auto_drop => FALSE,comments => 'Test_9')


  4. PL/SQL procedure successfully completed.

4,创建 Job 时分别引用 Program 和 Schedule

  1. SQL> BEGIN

  2.   2  DBMS_SCHEDULER.CREATE_SCHEDULE(

  3.   3  SCHEDULE_NAME => 'sch2',

  4.   4  START_DATE => sysdate,

  5.   5  END_DATE => sysdate+3650,

  6.   6  REPEAT_INTERVAL => 'freq=yearly; bymonth=jan,apr,jul,oct; bymonthday=2',    --10年时间里每年每个季度的第一个月的第二天执行作业

  7.   7  COMMENTS => 'Quarterly Report.'

  8.   8 );

  9.   9  END;

  10.  10  /


  11. PL/SQL procedure successfully completed.


  12. SQL> BEGIN

  13.   2  DBMS_SCHEDULER.CREATE_JOB(

  14.   3  dbms_scheduler.generate_job_name,

  15.   4  PROGRAM_NAME=>'TEST1',

  16.   5  SCHEDULE_NAME=>'sch2',

  17.   6  ENABLED=>TRUE,

  18.   7  AUTO_DROP=>FALSE,

  19.   8  COMMENTS=>'Test_99'

  20.   9 );

  21.  10  END;

  22.  11  /


  23. PL/SQL procedure successfully completed.


四、dbms_scheduler包一些视图
--*代表all或dba或user

--5.1.查看job的视图
dba_scheduler_jobs -          -查看job
dba_scheduler_job_args        --查看job的所有输入参数
*_scheduler_job_classes       --查看job的类信息
*_scheduler_job_dests         --查看job状态
*_scheduler_job_log           --查看job日志
*_scheduler_job_run_details   --查看job执行的详细信息
*_scheduler_running_jobs

--5.2.查看chain的一些视图
*_scheduler_chains
*_scheduler_chain_rules
*_scheduler_chain_steps
*_scheduler_running_chains   --查看正在执行的chains

--5.3.查看program的视图
*_scheduler_programs         --查看程序
*_scheduler_program_args     --查看程序参数

--5.4.查看调度组scheduler_group信息
*_scheduler_groups
*_scheduler_group_members

--5.5.查看window的视图(这类视图只有dba和all开头的)
*_scheduler_windows          --查看window
*_scheduler_window_details   --查看window详细信息
*_scheduler_window_groups    --查看window组
*_scheduler_window_log       --查看window日志
*_scheduler_wingroup_members --查看window成员

--5.6.查看scheduler视图
*_scheduler_schedules        --查看调度
*_scheduler_global_attribute --显示所有的调度属性
*_scheduler_credentials
*_scheduler_db_dests
*_scheduler_dests
*_scheduler_external_dests
*_scheduler_file_watchers
*_scheduler_notifications
*_scheduler_remote_databases
*_scheduler_remote_jobstate

到此,关于“Oracle Scheduler能实现哪些功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle Scheduler能实现哪些功能

本文链接: http://www.lsjlt.com/news/70184.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle Scheduler能实现哪些功能
    这篇文章主要介绍“Oracle Scheduler能实现哪些功能”,在日常操作中,相信很多人在Oracle Scheduler能实现哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • access能实现哪些功能
    access可以实现以下功能:1. 数据库管理:可以创建、编辑、删除数据库,以及创建、编辑、删除表和字段。2. 数据录入:可以录入、...
    99+
    2023-09-28
    access
  • SSl证书能实现哪些功能
    SSL证书可以实现以下功能: 加密数据传输:SSL证书可以加密网站和用户之间的数据传输,确保敏感信息(如个人信息、信用卡信息等)...
    99+
    2024-05-09
    SSL证书
  • vue3调度器effect的scheduler功能怎么实现
    本文小编为大家详细介绍“vue3调度器effect的scheduler功能怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3调度器effect的scheduler功能怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-04
  • vue3调度器effect的scheduler功能实现详解
    目录一、调度执行二、单元测试三、代码实现四、回归实现五、结语一、调度执行 说到scheduler,也就是vue3的调度器,可能大家还不是特别明白调度器的是什么,先大概介绍一下。 可...
    99+
    2022-12-08
    vue3调度器effect scheduler effect scheduler
  • php中md5()能够实现哪些功能
    小编给大家分享一下php中md5()能够实现哪些功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php md5()可以实现加密解密功能,其实现方法:1、通过“function string2secret($str){.....
    99+
    2023-06-20
  • css不可能实现的功能有哪些
    这篇文章主要讲解了“css不可能实现的功能有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css不可能实现的功能有哪些”吧!css是什么意思css是一种用来表现HTML或XML等文件样式...
    99+
    2023-06-14
  • 只一行Python代码能实现哪些功能
    本篇内容主要讲解“只一行Python代码能实现哪些功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“只一行Python代码能实现哪些功能”吧!一行代码打印乘法口诀print('\n...
    99+
    2023-06-02
  • Uboot学习之Uboot能够实现哪些功能
    U-Boot(Universal Bootloader)是一个开源的嵌入式引导加载程序,它是用于启动嵌入式系统的关键组件。U-Boo...
    99+
    2023-09-21
    Uboot
  • oracle中developer的功能有哪些
    Oracle中的Developer工具包括以下功能: 数据建模:使用Oracle SQL Developer Data Mode...
    99+
    2024-04-09
    oracle
  • oracle中charindex的功能有哪些
    在Oracle数据库中,没有提供类似SQL Server中的CHARINDEX函数来查找子字符串的位置。但是可以使用INSTR函数来...
    99+
    2024-04-15
    oracle
  • oracle nextval函数有哪些功能
    生成序列的下一个值:Oracle NEXTVAL函数用来获取序列的下一个值,每次调用该函数时,返回的值会是当前序列的下一个值。 ...
    99+
    2024-04-09
    oracle
  • oracle中weblogic的功能有哪些
    作为Java EE应用服务器,WebLogic提供了一系列的服务,包括Servlet容器、JSP容器、EJB容器等,用于支持开发...
    99+
    2024-05-10
    oracle
  • oracle中rollback的功能有哪些
    在Oracle中,ROLLBACK命令用于撤销之前未提交的事务,将数据库恢复到事务开始前的状态。其功能包括: 撤销当前事务的所有修...
    99+
    2024-04-18
    oracle
  • SSl证书实现的功能有哪些
    SSl证书实现的功能有:1、在用户使用的客户端和服务器之间建立一个加密的通道,实现数据传输加密;2、通过严格的审查手段对申请者的身份进行确认,能有效证明网站的真实身份、使用域名的合法性,让使用者可以很容易识别真实网站和仿冒网站。具体内容如下...
    99+
    2024-04-02
  • 云电脑可以实现哪些功能
    云电脑可以实现以下功能: 资源共享:用户可以通过云电脑访问并共享云服务器上的资源,如存储空间、计算能力等。 远程办公:用户可...
    99+
    2024-04-17
    云电脑
  • 使用PHP实现的功能有哪些
    本篇内容介绍了“使用PHP实现的功能有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、用户认证和授权一个网站需要安全地管理用户信息。P...
    99+
    2023-07-05
  • Oracle触发器的功能有哪些
    Oracle触发器的功能有以下几个:1. 数据完整性约束:通过触发器可以对插入、更新或删除操作进行约束,确保数据的完整性。例如,可以...
    99+
    2023-10-08
    Oracle
  • Oracle中Java分页功能有哪些
    小编给大家分享一下Oracle中Java分页功能有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!就如平时我们很在分页中看到的...
    99+
    2024-04-02
  • Oracle VPD的相关功能有哪些
    这篇文章主要讲解了“Oracle VPD的相关功能有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle VPD的相关功能有哪些”吧!测试用的数据表使用Oracle的示例Schem...
    99+
    2023-05-31
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作