- 错误描述 错误:OGG replicat出现ORA-01403 错误NO data found OGG出现表数据不同步,入库端接收update和delete语句时出现ORA-01403 错误NO data found
- 解决方案 1.1 解决思路
- 先将不能同步的表忽略,tableexclude yx_data.df_myfx_dw_flhzb; 启动replicat进程,启动成功,将数据同步完成,然后停掉replicat。
- 把不能应用的表进行重新同步使用expdp/impdp。
- 在参数文件中,将参数 --tableexclude yx_data.df_myfx_dw_flhzb,注释掉 加入新参数,里面加入scn 号,map BSPRUN.LN908, target BSPRUN.LN908, filter ( @GETENV ('TRANSACTION', 'CSN') > 12273790558167 ); 启动replicat进程。
- 完成
- 具体操作 3.1 在参数文件添加未应用的表: edit param reyxyx
tableexclude yx_data.df_myfx_dw_flhzb
start reyxyx 等数据同步完成,停止replicat进程 stop reyxyx
3.2 通过数据泵把未应用的表进程同步 在源端数据库先锁表,取出scn号 sqlplus lock table AICBIZ.ABNORMALQIYE in share mode; select dbms_flashback.get_system_change_number scn from dual; rollback; SQL> SCN
131693772606
3.3 使用数据泵在源端把表数据导出,指定scn
expdp '/ as sysdba' directory=dpdump dumpfile=xxxx_date '+%Y%m%d_%H%M'
%U.dmp logfile=xxxxdate '+%Y%m%d_%H%M'
.log FLASHBACK_SCN=131693772606 TABLES=xxxx.xxxx
3.4 将导出数据传输到目标端
推数据
scp xxx.dump oracle@10.10.10.10:/home/oracle/
或拉数据
scp oracle@10.10.10.11:/home/oracle/xxx.dump /home/oracle/
3.5 使用数据泵在目标端恢复表
impdp '/ as sysdba' directory=dpdump dumpfile=xxxx_20180707_1629_01.dmp logfile=xxxx_date '+%Y%m%d_%H%M'
.log TABLE_EXISTS_ACTION=truncate
impdp参数TABLE_EXISTS_ACTION解释
skip:默认操作
replace:先drop表,然后创建表,最后插入数据
append:在原来数据的基础上增加数据
truncate:先truncate,然后再插入数据
3.6 数据导入完成后,修改ogg参数,启动replicat进程 ./ggsci edit param xxx map xxxx.xxxx, target xxxx.xxx, filter ( @GETENV ('TRANSACTION', 'CSN') > 131693772606 ); start xxx 3.7 至此,数据同步完成,replicat进程running状态。