数据复制中的定时任务机制.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据复制中的定时任务机制 简介  本文首先简单介绍了Oracle 8的数据复制的基本概念,然后详细介绍了实现Oracle 8数据复制延迟事务队列转发的Oralce 8任务队列机制,包括“任务队列”子系统的安装,API编程接口DBMS_JOB包的介绍以及API过程中各参数的概念,任务队列的体系结构和运行环境,任务队列数据字典视图以及时间间隔(interval)参数的算法等。 一、??? Oracle 8数据复制  复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中以支持分布式应用,它是整个分布式计算解决方案的一个重要组成部分。Oracle8的数据复制按功能主要分为三类:基本(简单)复制、高级复制和混合复制,而高级复制又可分为多主节点复制和可更新快照复制。图1是一个简单的Oracle数据复制示意图。 ??? 图1 Oracle 数据复制示意图 ??? 图1是Oracle数据复制的一个简单示意,并不代表任何的复制类型。在节点1如果需要复制的数据库表发生变化(插入、删除或者更新等),则Oracle采用某种内部机制将这种变化放在一个延迟事务队列(DEFTRAN)中。在一个特定的时间或者是某个特定时间间隔后,Oracle将延迟事务队列中的变化“推”到数据库节点2.如果在节点2上要复制的库表发生变化,也采用同样的机制。如果在传播过程中发生错误,则将该错误放在错误队列DEFERROR中。 ??? Oracle对于存放在延迟事务队列中的事务是如何处理的呢?这就是Oracle的任务队列机制。Oracle的任务队列可以使我们定时或者以一定的时间间隔重复执行Oralce的PL/SQL程序(也就是所说的任务)。任务队列使用最多的地方就是Oracle的数据复制中的定时复制任务,Oracle任务队列子系统最早设计的目的就是为了定时刷新Oracle快照(Oracle简单复制)。当然,现在Oracle的定时任务机制已经不仅仅应用于数据复制,数据库管理员也常使用定时任务来作一些对数据库的日常维护任务,在实际应用中也可用来安排一些繁重的批处理任务在数据库系统不忙时执行,还可用于启动监听数据库管道的服务程序,用来响应用户会话的服务请求等等。下面将详细讨论Oralce 的定时任务机制。 ??? 二、定时任务简介  DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能:提交并且执行一个任务、改变任务的执行参数以及删除或者临时挂起任务等。 ??? DBMS_JOB包是由ORACLE_HOME目录下的rdbms/admin子目录下的DBMSJOB.SQL和PRVTJOB.PLB 这两个脚本文件创建的。这两个文件被CATPROC.SQL脚本文件调用,而CATPROC.SQL这个文件一般是在数据库创建后立即执行的。脚本为DBMS_JOB包创建了一个公共同义词,并给该包授予了公共的可执行权限,所以所有的Oracle用户均可以使用这个包。 ??? 下面几个数据字典视图是关于任务队列信息的,主要有DBA_JOBS, USER_JOBS和DBA_JOBS_RUNNING.这些字典视图是由名为CATJOBQ.SQL的脚本文件创建的。该脚本文件和创建DBMS_JOB包的脚本文件一样在ORACLE_HOME目录的rdbms/admin子目录中,同样也是由脚本文件CATPROC.SQL调用。 ??? 最后,要使任务队列能正常运行,还必须启动它自己专有的后台过程。启动后台过程是通过在初始化文件init*.ora(实例不同,初始化文件名也略有不同)中设置初始化参数来进行的。下面就是该参数: ??? JOB_QUEUE_PROCESSES = n ??? 其中,n可以是0到36之间的任何一个数。除了该参数以外,还有几个关于任务队列的初始化参数,本文后面将会对其进行详细讨论。 ??? DBMS_JOB包中包含有许多过程,见表1所示。 ??? 表1 DBMS_JOB包 名称 类型 描述 DBMS_JOB.ISUBMIT 过程 提交一个新任务,用户指定一个任务号 DBMS_JOB.SUBMIT 过程 提交一个新任务,系统指定一个任务号 DBMS_JOB.REMOVE 过程 从队列中删除一个已经存在的任务 DBMS_JOB.CHANGE 过程 更改用户设定的任务参数 DBMS_JOB.WHAT 过程 更改PL/SQL任务定义 DBMS_JOB.NEXT_DATE 更改任务下一次运行时间 DBMS_JOB.INTERVAL 过程 更改任务运行的时间间隔 DBMS_JOB.BROKEN 过程 将任务挂起,不让其重复运行 DBMS_JOB.RUN 过程 在当前会话中立即执行任务 DBMS_JOB.USER

文档评论(0)

38号店铺 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档