CDC变更数据捕获-oracle-sqlserver-db2.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CDC变更数据捕获-oracle-sqlserver-db2

Oracle CDC(Change Data Capture)前提条件:Oracle版本为9i(含)以上,应用java支持;初始如果不支持cdc需要执行初始化语句initcdc.sqlSYS@test@$ORACLE_HOME\rdbms\admin\rmcdc.sql?SYS@test@$ORACLE_HOME\rdbms\admin\initcdc.sql例子:创建:beginDBMS_CDC_PUBLISH.create_change_table(OWNER = udescs, CHANGE_TABLE_NAME = cdc_jbxx,CHANGE_SET_NAME = SYNC_SET,SOURCE_SCHEMA = udescs,SOURCE_TABLE = jbxx,COLUMN_TYPE_LIST = name varchar2(20), idnumber varchar2(20),mz varchar2(20),csrq varchar2(20),id varchar2(20),CAPTURE_VALUES = both,RS_ID = n,ROW_ID = n,USER_ID = n,TIMESTAMP = y,OBJECT_ID = n,SOURCE_COLMAP = n,TARGET_COLMAP = n,OPTIONS_STRING = NULL);end;注:代码创建时,cdc_jbxx写成CDC_T_JBXX删除:beginDBMS_CDC_PUBLISH.DROP_CHANGE_TABLE(OWNER = udescs, CHANGE_TABLE_NAME = cdc_jbxx,force_flag = y);end;注:代码创建时,cdc_jbxx写成CDC_T_JBXXSqlserver前提条件1 必须是sqlserver2008以上版本。2保证sql服务代理正常启动这基本上是SQL Server服务没有启动,或者填写的服务名称不对。运行services.msc(在开始-运行里边输入)找到SQL Server 开头的服务,如果安装的是默认实例,应该是SQL Server (MSSQLSERVER)看看是否已经启动,没有启动就启动。如果括号里不是MSSQLSERVER,那你安装的是命名实例,在SQL Server Management Studio里边服务器名要填写命名实例的名称,比如括号里是test,那服务器名就应该填写成(local)\test2?启用数据变更,在源数据库中执行SYS.SP_CDC_ENABLE_DB存储过程:例子:USE?CDC_TEST_DBGOEXEC?sys.SP_CDC_ENABLE_DBGO3 在启动变更捕获后,会在sqlserver 代理中生成两个作业(如下图),最好停用cdc.demo_cleanup作业。4 运行创建变更表后,将在源数据库的系统表中生成名为cdc. capture_instance_CT的变更表,其中包含了变更信息,如下图:5 变更表的表结构列名数据类型说明__$start_lsnbinary(10)与更改的提交事务关联的 LSN。在同一事务中提交的所有更改将共享同一个提交 LSN。例如,如果对源表的更新操作在两行中修改了两列,则更改表将包含四行,每一行均具有相同的 __$start_lsn 值。__$seqvalbinary(10)用于对事务内的行更改进行排序的序列值。__$operationint标识将更改数据行应用到目标数据源所需的数据操作语言 (DML) 操作。如果 row_filter_option 参数的值为 all 或 all with mask,则此列中的值可以是以下值之一:1 = 删除2 = 插入4 = 更新非主键监听字段3 = 更新非主键未监听字段如果 row_filter_option 参数的值为 all with merge,则此列中的值可以是以下值之一:1 = 删除5 = 插入或更新值为 5 表示行是否已存在以及是否只需要更新是未知的,或者行当前是否存在以及是否必须插入是未知的。__$update_maskvarbinary(128)位掩码,为捕获实例标识的每个已捕获列均对应于一个位。如果 __$operation = 1 或 2,则该值将所有已定义的位设置为 1。如果 __$operation = 3 或 4,则仅将对应于已更改列的位设置为 1。已捕获的源表列不定函数返回的其余列是在创建捕获实例时源表中标识为已捕获列的那些列。如果已捕获列的列表中未指定任何列,则将返回源表中的所有列。创建变更表语法sys.sp_cdc_enable_table????[ @source_schema= ] source_schema

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档