oracle CDC 源表指定字段变化 才在变化表里生成变化记录 该怎么配置?
CDC 同步:
(1)创建一个用户,作为发布者:
SYS-->SQL: create user cdc_pub identified by cdc_pub default tablespace MDW_CDC;
(2)授予相应权限
SYS->SQL:
grant execute_catalog_role to cdc_pub;
grant select_catalog_role to cdc_pub;
grant create table to cdc_pub;
grant create session to cdc_pub;
grant execute on dbms_cdc_publish to cdc_pub;
grant unlimited tablespace to cdc_pub;
(2)创建变更集
SYS-->SQL:
begin
dbms_cdc_publish.create_change_set(
change_set_name =>'CDC_SET', /*变化集名称*/
description =>'change set for qgh.person ',
change_source_name =>'SYNC_SOURCE');
end;
/*注:同步CDC的chang source必须是SYNC_SOURCE。*/
(3)创建变化表(有多少源表创建多少变化表)
SYS-->SQL:
begin
dbms_cdc_publish.create_change_table(
owner =>'cdc_pub',
change_table_name=>'CHANGE_TABLE_PERSON', /*变化表名*/
change_set_name=>'CDC_SET', /*变化表存在的变化集名*/
source_schema=>'qgh', /*源表所在的用户名*/
source_table=>' person', /*源表名*/
column_type_list=>'ID number,NAME VARCHAR2(10),sex varchar2(2)', /*捕获的列*/
capture_values=>'BOTH', /*更新操作的捕获值,取值为OLD、NEW、BOTH*/
rs_id=>'y', /* rsid$控制列,取值为Y,N */
row_id=>'y', /* row_id$控制列,取值为Y,N */
user_id=>'n', /* USERNAME$控制列,取值为Y,N*/
timestamp=>'n', /* USERNAME$控制列,取值为Y,N */
object_id=>'n', /* SYS_NC_OID$控制列,取值为Y,N */
source_colmap=>'n', /* SOURCE_COLMAP$控制列,取值为Y,N */
target_colmap=>'n', /* TARGET_COLMAP$控制列,取值为Y,N*/
options_string=>'tablespace MDW_CDC '); /*所在表空间*/
end;
结果 只要表person 数据变化 变化表里就有一条对应记录。
我现在想 只有 person的 Name 字段变化 才在变化表里生成记录,其他字段变化 不在变化表里有记录 该怎么配置?