天天看点

cdc管理发布的数据

管理异步变更源

发布者可以启用禁用异步变更集合,当变更集合禁用的时候,就不会继续处理新变更数据了。异步变更源在创建的时候是禁用状态的。

启用发布者:

BEGIN

DBMS_CDC_PUBLISH.ALTER_CHANGE_SET(

change_set_name => ‘PRODUCTS_SET’,

enable_capture => ‘y’); –禁用的话将y变成n即可

END;

/

对异步的hotlog 和autolog变更集合,oracle stream在变更集合被启用的时候开始捕获并应用。

即使禁用了变更集合,如果归档的日志仍然存在,那么就不会丢失数据。

发布者可以指定变更集合在遇到ddl的时候是否自动停止,一些ddl会影响捕捉的进程。

stop_on_ddl => ‘y’);

在遇到ddl停止捕获的时候,需要移除ddl才能在重启捕获变更集合。

在遇到错误的时候,首先查看alert日志文件,可能会提示下面的错误:

Change Data Capture has encountered error number: 1688 for change set:

CHICAGO_DAILY

Change Data Capture did not process LCR with scn 219337

然后用下面的sql去查看具体的出错原因

SELECT ERROR_MESSAGE FROM DBA_APPLY_ERROR

WHERE APPLY_NAME =

(SELECT APPLY_NAME FROM ALL_CHANGE_SETS WHERE SET_NAME =’CHICAGO_DAILY’);

在修复问题后,可以使用下面的命令尝试修复变更集合

change_set_name => ‘CHICAGO_DAILY’,

recover_after_error => ‘y’);

如果不成功,可以根据提示去继续处理,再次尝试恢复。

在遇到ddl导致变更集合停止的情况下,使用下面的命令移走ddl

recover_after_error => ‘y’,

remove_ddl => ‘y’);

正在移走ddl后,在启用变更集合。

查看所有的变更表:

SELECT * FROM ALL_SOURCE_TABLES;

select * from CDC_CHANGE_TABLES ;查看所用的变更集select∗fromCDCCHANGESETS ;

查看变更表涉及的字段

select * FROM ALL_PUBLISHED_COLUMNS WHERE SOURCE_SCHEMA_NAME =’WDW’ AND SOURCE_TABLE_NAME = ‘T1’;在cdc_publisher用户下)

SELECT * FROM CDC_CHANGE_COLUMNS$;