cdc WAITING FOR DICTIONARY REDO

来源:互联网 发布:淘宝联盟用红包有返利 编辑:程序博客网 时间:2024/06/08 17:53

在cdc的创建过程中,源库上创建了包含数据字典的归档日志文件,随后在staging库上创建了change_source指定了first_scn,但是由于源库上的归档因为配置问题,导致没有同步到staging库上,在解决日志传输的问题后,查看capture的状态,一直处于等待数据字典的状态,因为包含数据字典的归档日志没有传输过来

SQL> SELECT CAPTURE_NAME, STATE FROM V$STREAMS_CAPTURE;CAPTURE_NAME------------------------------------------------------------STATE--------------------------------------------------------------------------------CDC$C_DBADB_CHSETWAITING FOR DICTIONARY REDO: SCN 1059251

在源库上找到包含数据字典的归档日志。

select name FROM V$ARCHIVED_LOG WHERE dictionary_begin = 'YES' ORDER BY completion_time DESC;/data/arch/1_20_948464127.dbf

在staging库上注册

SQL> alter database register logical logfile '/data/standby/1_20_948464127.dbf';alter database register logical logfile '/data/standby/1_20_948464127.dbf'*ERROR at line 1:ORA-16225: Missing LogMiner session name for Streamsselect name, source_database from DBA_LOGMNR_SESSION;CDC$C_DBADB_CHSETSQL> alter database register logical logfile '/data/standby/1_20_948464127.dbf' for 'CDC$C_DBADB_CHSET';Database altered.SQL> select logmnr_session_id, name from DBA_LOGMNR_LOG;LOGMNR_SESSION_ID-----------------NAME--------------------------------------------------------------------------------        1/data/standby/1_20_948464127.dbfSQL> select capture_name, state from v$streams_capture;no rows selectedSQL> select capture_name, status, captured_scn, applied_scn from dba_capture;CAPTURE_NAME                             STATUS------------------------------------------------------------ ----------------CAPTURED_SCN APPLIED_SCN------------ -----------CDC$C_DBADB_CHSET                       ABORTED     1059251     1059251

此时的capture 是aborted状态,启动capture

exec DBMS_CAPTURE_ADM.START_CAPTURE('CDC$C_DBADB_CHSET'); SQL> select capture_name, status, captured_scn, applied_scn from dba_capture;CAPTURE_NAME                             STATUS------------------------------------------------------------ ----------------CAPTURED_SCN APPLIED_SCN------------ -----------CDC$C_DBADB_CHSET                       ABORTED     1059251     1059251

依然是aborted的状态,查看alert日志,发现已经有报错提示,查看对应的trace文件。

ORA-01304: subordinate process error. Check alert and trace logs
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-01304: subordinate process error. Check alert and trace logs

没有办法解决了,删除变更源,重新配置。最后排查出,是因为在创建change source的时候指定的source_database名称不对,这个名称一定要与源库的global_name一致。