资源描述:
《CDC变更数据捕获-oracle-sqlserver-db2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OracleCDC(ChangeDataCapture)前提条件:Oracle版本为9i(含)以上,应用java支持;初始如果不支持cdc需要执行初始化语句initcdc.sqlSYS@test>@$ORACLE_HOMErdbmsadminrmcdc.sql SYS@test>@$ORACLE_HOMErdbmsadmininitcdc.sql例子:创建:beginDBMS_CDC_PUBLISH.create_change_table(OWNER=>'udescs',CHANGE_TABLE_NAME=>'cdc_jbxx',CHANGE_SET_NAME=>
2、'SYNC_SET',SOURCE_SCHEMA=>'udescs',SOURCE_TABLE=>'jbxx',COLUMN_TYPE_LIST=>'namevarchar2(20),idnumbervarchar2(20),mzvarchar2(20),csrqvarchar2(20),idvarchar2(20)',CAPTURE_VALUES=>'both',RS_ID=>'n',ROW_ID=>'n',USER_ID=>'n',TIMESTAMP=>'y',OBJECT_ID=>'n',SOURCE_COLMAP=>'n',TARGET_COLMAP=>'n',OPT
3、IONS_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服务代理正常启动这基本上是SQLServer服务没有启动,或者填写的服务名称不对。运行services.msc(在开始-运
4、行里边输入)找到SQLServer开头的服务,如果安装的是默认实例,应该是SQLServer(MSSQLSERVER)看看是否已经启动,没有启动就启动。如果括号里不是MSSQLSERVER,那你安装的是命名实例,在SQLServerManagementStudio里边服务器名要填写命名实例的名称,比如括号里是test,那服务器名就应该填写成(local)test2 启用数据变更,在源数据库中执行SYS.SP_CDC_ENABLE_DB存储过程:例子:USE CDC_TEST_DBGOEXEC sys.SP_CDC_ENABLE_DBGO3在启动变更捕获后,会在sqlserv
5、er代理中生成两个作业(如下图),最好停用cdc.demo_cleanup作业。4运行创建变更表后,将在源数据库的系统表中生成名为cdc.capture_instance_CT的变更表,其中包含了变更信息,如下图:5变更表的表结构列名数据类型说明__$start_lsnbinary(10)与更改的提交事务关联的LSN。在同一事务中提交的所有更改将共享同一个提交LSN。例如,如果对源表的更新操作在两行中修改了两列,则更改表将包含四行,每一行均具有相同的__$start_lsn值。__$seqvalbinary(10)用于对事务内的行更改进行排序的序列值。__$operation
6、int标识将更改数据行应用到目标数据源所需的数据操作语言(DML)操作。如果row_filter_option参数的值为all或allwithmask,则此列中的值可以是以下值之一:1=删除2=插入4=更新非主键监听字段3=更新非主键未监听字段如果row_filter_option参数的值为allwithmerge,则此列中的值可以是以下值之一:1=删除5=插入或更新值为5表示行是否已存在以及是否只需要更新是未知的,或者行当前是否存在以及是否必须插入是未知的。__$update_maskvarbinary(128)位掩码,为捕获实例标识的每个已捕获列均对应于一个位。如果__$
7、operation=1或2,则该值将所有已定义的位设置为1。如果__$operation=3或4,则仅将对应于已更改列的位设置为1。<<已捕获的源表列>>不定函数返回的其余列是在创建捕获实例时源表中标识为已捕获列的那些列。如果已捕获列的列表中未指定任何列,则将返回源表中的所有列。创建变更表语法sys.sp_cdc_enable_table [@source_schema=]'source_schema', [@source_name=]'source_name', [@role_nam