关于ogg目标端没有主键的同步失败update
(2015-07-14 09:07:02)分类: ogg |
--
alter
--
comment
EQUIP_BUILDING源端增加字段和update后。
源端:
GGSCI (zydb) 1> info all
Program
MANAGER
EXTRACT
EXTRACT
EXTRACT
EXTRACT
新增字段largeareaid,所有目标端都自动创建。
其中p98目标数据正常同步,P117和PSOURCE目标端数据没有同步。
在目标端通过view report 复制进程,检查发现不同步的目标端没有通过主键同步,再检查,发现不同步的目标端缺少主键,而可以同步的P98是有主键的。
之所以没有主键是因为之前目标端有临时的备份表占用了主键名称,由于部署人员没有检查初始化后'EQUIP_BUILDING'表的主键是否创建成功,导致后续的问题。
询问开发关于EQUIP_BUILDINGBAK0530表是否有用,没用后,drop掉即可,并确认主键约束名称也都删除。
然后在正确的目标表添加主键(从源库提取即可pl/sql)
完成后,重启目标端复制进程。
由于是update操作,可以再次在源端执行,观察目标端是否可以同步。最后检查同步正常。
SQL>
INDEX_NAME
------------------------------
SYS_IL0000096505C00016$$
SYS_IL0000096505C00017$$
SQL> select count(*) from equip_building where largeareaid is not null ;
----------
SQL> select count(*) from equip_building where largeareaid is not null ;
----------
SQL> /
----------
SQL> select constraint_name,table_name from dba_CONS_COLUMNS
where constraint_na
me='EQUIP_BUILDING_GMIDX';
CONSTRAINT_NAME
------------------------------ ------------------------------
EQUIP_BUILDING_GMIDX
SQL> drop table EQUIP_BUILDINGB0530 purge;
表已删除。
SQL> alter table EQUIP_BUILDING
第 2 行出现错误:
ORA-02264: 名称已被一现有约束条件占用
SQL> select constraint_name,table_name from dba_CONS_COLUMNS
where constraint_na
me='EQUIP_BUILDING_GMIDX';
CONSTRAINT_NAME
------------------------------ ------------------------------
EQUIP_BUILDING_GMIDX
SQL> select count(*) from equip_building where largeareaid is not null ;
----------
SQL> drop table EQUIP_BUILDINGB0530 purge;
drop table EQUIP_BUILDINGB0530 purge
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> select constraint_name,table_name from dba_CONS_COLUMNS
where constraint_na
me='EQUIP_BUILDING_GMIDX';
CONSTRAINT_NAME
------------------------------ ------------------------------
EQUIP_BUILDING_GMIDX
SQL> drop constraint EQUIP_BUILDING_GMIDX;
drop constraint EQUIP_BUILDING_GMIDX
第 1 行出现错误:
ORA-00950: 无效 DROP 选项
SQL> alter table EQUIP_BUILDINGBAK0530 drop constraint
EQUIP_BUILDING_GMIDX;
表已更改。
SQL> select constraint_name,table_name from dba_CONS_COLUMNS
where constraint_na
me='EQUIP_BUILDING_GMIDX';
未选定行
SQL> alter table EQUIP_BUILDINGBAK0530 drop constraint
EQUIP_BUILDING_GMIDX;
alter table EQUIP_BUILDINGBAK0530 drop constraint
EQUIP_BUILDING_GMIDX
第 1 行出现错误:
ORA-02443: 无法删除约束条件 - 不存在的约束条件
SQL> alter table EQUIP_BUILDING
表已更改。
SQL> select index_name from user_indexes where
table_name='EQUIP_BUILDING';
INDEX_NAME
------------------------------
EQUIP_BUILDING_GMIDX
SYS_IL0000096505C00016$$
SYS_IL0000096505C00017$$
SQL> select count(*) from equip_building where largeareaid is
not null ;
----------
SQL> /
----------
SQL> /
----------
SQL> /
----------
SQL> /
----------
重新启动复制进程,之前的事务被取消。
让开发人员在源端重新执行update操作后,可以正常利用主键同步。
SQL> select count(*) from equip_building where largeareaid is not null ;
----------
SQL>