
# 源库无主键表检查
#### MySQL迁移、灾备场景
表1源迁移库无主键表检查 
|          **预检查项**           |                                                                                       源迁移库无主键表检查。                                                                                       |
|---|---|
| ****描述****                  | 在进行MySQL迁移时，源数据库若存在无主键表，可能会导致迁移失败。                                                                                                                                                      |
| ****待确认提示** **及**处理建议****** | **待确认原因：**源数据库迁移的表中存在无主键表。 **处理建议：**无主键表由于缺乏行的唯一性标志，无法进行内容对比，且在网络不稳定情况下，迁移可能存在目标与源库数据不一致的情况。建议将无主键表修改为主键表。 |
   
#### MySQL同步场景
表2源库无主键表检查 
|                                                     **预检查项**                                                     |                                                                                      源库无主键表检查。                                                                                      |
|---|---|
| ****描述****                                                                                                       | 在进行MySQL同步时，源数据库若存在无主键表，可能会导致同步失败。                                                                                                                                                  |
| ****不通过提示** **及**处理建议**** ** | **不通过原因：**源数据库同步的表中存在无主键表。 **处理建议：**建议修改无主键表。                                                           |
| ****不通过提示** **及**处理建议**** ** | **不通过原因：**多对一任务时，不允许源库中存在与目标库同名的无主键表。 **处理建议：**建议修改无主键表、删除目标库无主键表或者不迁移无主键表。                              |
| ****待确认提示** **及**处理建议******                                                                                      | **待确认原因：**源数据库同步的表中存在无主键表。 **处理建议：**无主键表由于缺乏行的唯一性标志，无法进行内容对比，且在网络不稳定情况下，可能存在目标与源库数据不一致的情况。建议将无主键表修改为主键表。 |
   
#### Oracle为源同步场景
表3源库无主键表检查 
|          **预检查项**           |                                                                                                                                                                                                                                                            源库无主键表检查。                                                                                                                                                                                                                                                            |
|---|---|
| ****描述****                  | 源数据库若存在无主键表，可能会导致同步数据存在少量不一致的可能性。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ****不通过提示** **及**处理建议****** | **不通过原因：**由于无主键表缺乏行的唯一性标志，在网络不稳定或续传同步任务时涉及少量重试，表数据存在少量不一致的可能性。源库对无主键表进行涉及多行的更新或删除，不仅会导致同步任务时延显著增加，还可能引起目标库负载升高，进而可能影响到客户目标库业务使用。 **处理建议：**建议为无主键表添加主键，或者不同步无主键表。 增加主键语句参考： ``` ALTER TABLE table_name ADD CONSTRAINT constraint-name PRIMARY KEY (column_name); ``` 若要同步主键表，建议在全量同步期间不执行ALTER TABLE MOVE操作，多分区操作SPLIT/MERGE分区，FLASHBACK操作，ALTER TABLE SHRINK SPACE操作，否则数据重复可能性会增加。 |
   
