第一部分基础之捕获进程.docxVIP

  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文档。上传文档
查看更多
第一部分基础之捕获进程

第一部分(3)基础之捕获进程[君三思] 2008-12-29  前一章我们实践了一把streams同步单表的过程,看起来很简单是不是(如果你觉着复杂,那不是因为streams本身操作复杂,而是为了配置好streams前期的准备工作较复杂),事实上也确实很简单,由小能见大,我们从上述示例中应该也能看出streams的操作方式就是捕获(capture)-传播(propagation)-应用(apply),不管是表也好,schema也好,database也好,都是遵循这个操作过程,下面逐一介绍捕获传播和应用进程,俺尽可能做到清晰简单直白,但限于个人理解和自身水平,如描述有误请自行鉴别:))。另,本章文字描述较多,内容相对枯燥,阅读前要做好准备,如有心直接上手更高级的实践配置,可跳过本节,浏览第二部分。捕获(Capture)  众所周知,数据库的修改操作均会被记入redolog(表钻牛角尖,俺指通常情况下),以便在发生错误时,能有途径修正。而Capture进程做为oracle的一个后台进程天生就拥有读取redolog的本领,因此它也就具有了捕获dml,dll修改操作的能力。  Capture 进程将修改格式化为指定的格式存入message定义为?LCRs?并将其置入队列(queue)。由于运行中的capture进程自动基于其自己的规则捕获修改,因此又被称为:隐式捕获(implicit?capture)。提示:什么是LCR  capture 进程捕获数据库的操作,例如表/schema甚至整个数据库的修改等。这些修改都会记入redo,而capture进程就是根据redolog分析数据库中的修改并格式化保存为message,这些message即被称为:logical?change?record?(LCR)。捕获进程通过定义的rule来确定哪些修改会被捕获,这些被捕获的修改称为captured?messages。  因此:Messages-LCRs-Captured?message  LCRs 也分两种:  A.row?LCR?:包括DML操作产生的修改信息,注意由于单条dml?sql语句也有可能触发多条记录的修改,因此一条dml修改操作也可能产生多条row?LCR,另外对于单行中大字段类型的修改比如long,lob也可能产生多条row?LCR;  每条rowLCR被封装成LCR$_ROW_RECORD的对象类型,包含下列属性:source_database_name :触发修改操作的数据库command_type :触发修改操作的命令类型,比如: INSERT,?UPDATE,?DELETE,?LOB?ERASE,?LOB?WRITE,?or?LOB?TRIM 。object_owner :对象属主object_name :对象名称Tag :标签,可用于追踪LCRtransaction_id :触发修改的DML语句所属事务IDScn :发生修改时的SCN( system?change?number?)old_values :DML修改前的值,不过注意不同的dml操作产生值也不同,比如 UPDATE?or?DELETE 的旧值就是修改前的值,而对于INSERT则该列为空new_values :DML修改后的值,基于相同的原因,不同的dml操作也会产生不同的值,比如 UPDATE?or?INSERT 的值即修改后的值,而DELETE操作则该列为空  B.DDL?LCR?:包括ddl操作产生的对象修改信息,DDL?LCR包括下列的信息:source_database_name :同rowLCRcommand_type :同rowLCRobject_owner :同rowLCRobject_name :同rowLCRobject_type :对象类型,比如TABLE/VIEW/PACKAGEddl_text :执行的DDL语句logon_user :执行DDL语句的用户current_schema :执行DDL语句的schemabase_table_owner :基表属主(如果有的话,当然通常没有,但是对于某些操作比如触发器触发的的修改,则基表即是触发表)base_table_name :基表名称,其它同上。tag :同rowLCRtransaction_id :同rowLCRscn :同rowLCR提示:不管是rowLCRs或DDL?LCRs都包括源数据库名称,为避免在propagation或apply时出现问题,ORACLE建议不要随便修改源数据库名称。1、捕获方式  Capture 进程即可以在本地捕获?,即本地捕获进程(local?capture?process),也可以在远程其它数据库执行捕获,即下游捕获进程(downstream?cap

您可能关注的文档

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档