流复制报ORA-26687错误,警告日志报Streams APPLY A001 with pid=22, OS id=22929 stopped

来源:互联网 发布:淘宝售后维修能退款吗 编辑:程序博客网 时间:2024/05/18 01:36

操作系统:Redhat5.6

源数据库:oracle11.2.0.1

目标数据库:oracle10.2.0.5


问题症状:配置好流复制后,测试流复制,在源端插入数据,目标端查询,发现没有数据


分析处理过程:

1.目标库的警告日志中报错:
Wed Mar 26 10:44:19 CST 2014
Streams APPLY A001 started with pid=22, OS id=22929
Streams Apply Reader started P000 with pid=24 OS id=22931
Streams Apply Server started P001 with pid=25 OS id=22933
Streams Apply Reader P000 pid=24 OS id=22931 stopped
Streams Apply Server P001 pid=25 OS id=22933 stopped
Streams Apply Server P000 pid=24 OS id=22931 stopped
Streams Apply Server P001 pid=25 OS id=22933 stopped
Wed Mar 26 10:46:11 CST 2014
Streams APPLY A001 with pid=22, OS id=22929 stopped


2.查看目标库的APPLY进程,发现ABORTED
SQL> select apply_name,queue_name,status from dba_apply;


APPLY_NAME                     QUEUE_NAME                     STATUS
------------------------------ ------------------------------ --------
TARGET_APPLY_STREAM            TARGET_QUEUE                   ABORTED


3.查看dba_apply_error数据字典,报ORA-26687错误
SQL> select APPLY_NAME,ERROR_MESSAGE from dba_apply_error;


APPLY_NAME                     ERROR_MESSAGE
------------------------------ --------------------------------------------------------------------------------
TARGET_APPLY_STREAM            ORA-26687: no instantiation SCN provided for "HFF"."T" in source database "OGGD"


4.搜索相关资料后,找到了解决方法,方法如下
在源数据库端,使用strmadmin用户执行如下命令
SELECT * FROM DBA_CAPTURE_PREPARED_TABLES;
得到HFF".T表的SCN值,用于目标数据库中 


在目标数据库中执行如下命令
BEGIN
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN (
source_object_name => 'schema.tablename',
source_database_name => 'global db name of source',
instantiation_scn => &iscn);
END;
/
输入上面找到的SCN,然后重新启用APPLY进程
begin                              
dbms_apply_adm.start_apply(        
apply_name=>'target_apply_stream');
end;                               
/


5.再次测试流复制,在源端插入数据,目标端查询,问题解决。
0 0