如果用自建的表结构迁移数据,oms会自动增加隐藏列和隐藏索引吗?事后是否需要清理?
需要清理,不过正向切换会删除创建的列和索引
3 个赞
根据文档库中的信息:
-
隐藏列和隐藏索引的增加
如果您使用 OMS 社区版进行数据迁移,并且源端表中存在无唯一键的表,OMS 会在目标端为这些表增加隐藏列(例如__pk_increment
),并在结构迁移时基于该隐藏列创建唯一索引。这是为了支持无唯一键表的数据迁移。(参考:文档片段 2 和 文档片段 1) -
清理隐藏列和隐藏索引的需求
- 如果您在迁移过程中进入了正向切换步骤,OMS 社区版会自动删除隐藏列和唯一索引,因此无需手动清理。(参考:文档片段 1)
- 如果您没有进入正向切换步骤,则需要根据实际情况手动删除隐藏列和唯一索引,以避免后续问题。(参考:文档片段 2)
-
注意事项
- 如果目标库作为下一个迁移任务的源库,而隐藏列未被清理,可能会导致异常问题。因此,在这种情况下,请务必手动删除隐藏列
OMS_PK_INCRMT
。(参考:文档片段 2) - 您可以在 结构迁移 页面查看具体的迁移状态和对象详情,包括隐藏列和索引的创建语法。(参考:文档片段 3)
- 如果目标库作为下一个迁移任务的源库,而隐藏列未被清理,可能会导致异常问题。因此,在这种情况下,请务必手动删除隐藏列
总结:
- 如果您的迁移任务涉及无唯一键的表,OMS 会自动增加隐藏列和隐藏索引。
- 是否需要事后清理取决于是否完成了正向切换步骤。如果未完成正向切换,请手动清理隐藏列和隐藏索引,以确保后续操作的正常运行。
更多信息请查看:
2 个赞
学习
2 个赞
感谢感谢,学到了!
1 个赞
执行正向切换就行了。
1 个赞
如果我的表结构带了主键,是不是就没有虚拟列和虚拟索引呢?也不需要执行正向切换流程呢?
1、OMS 在迁移无主键表时,会在目标端添加隐藏列(如 OMS_PK_INCRMT)和对应的唯一索引,用于模拟主键的功能。如果在源端表中已经定义了主键,则 OMS 不会为该表添加隐藏列或隐藏索引,因为主键已经存在,无需额外的虚拟列来保证数据一致性。
- 需要在数据迁移完成后,手动启动"正向切换"中的"数据库操作"清理相关隐藏列
2、源端待迁移的表结构已定义主键,则OMS不会迁移过程中添加相关隐藏列,也不需要再清理。
加油