说是乌龙,也不是乌龙,各位看官,如果有相符的经历能解惑,请不吝留言告知。
给客户添加一个新的ogg队列。客户给了表名级对应关系,抽取,传输都没有问题,目标端启动rep进程时也无报错(当时没有数据)。第二天来发现,rep进程abend,数据延迟8个小时。
view report 提示ogg-00869warning,还有一个error 在目标端找不到某表。(由于客户端环境不允许插取移动设备所以没有详细报错)
1)目标端数据库为rac数据库,并且只存在一个数据库,所以使用ogg的用户连接的环境变量的配置是没有问题的;
2)检查数据库中是否存在a.tablename
select * froma.tablename where rownum<10;
存在9个在返回结果。
3)rep 进程禁用def文件,并且将需要map的表注释掉,启动依然abend。
4) 从源端重新生成def 文件,比对,没有发现问题。
5) 根据error报错,目标端数据库不存在该表的提示,去dba_tables 查询
select table_name,owner fromdba_tables where table_name ='TABLE_NAME';
6)输出的结果table_name表对应的owner 不是A。
询问相关人员后修改rep的参数文件,将schema改为相应的用户,rep进程启动正常。
后来了解到客户是将一号库的一些表同步到2号库后,搭建2号库到一号库的ogg同步环境,并且修改了这些表的schema
疑问:与客户应用人员交流,schema确实不是A,但当时客户提要求时用desc了所有xxx.table,而且在第2步的检查A.table中也存在数据,