关于oms隐藏列

如果用自建的表结构迁移数据,oms会自动增加隐藏列和隐藏索引吗?事后是否需要清理?

需要清理,不过正向切换会删除创建的列和索引

3 个赞

@论坛小助手

3 个赞

根据文档库中的信息:

  1. 隐藏列和隐藏索引的增加
    如果您使用 OMS 社区版进行数据迁移,并且源端表中存在无唯一键的表,OMS 会在目标端为这些表增加隐藏列(例如 __pk_increment),并在结构迁移时基于该隐藏列创建唯一索引。这是为了支持无唯一键表的数据迁移。(参考:文档片段 2 和 文档片段 1)

  2. 清理隐藏列和隐藏索引的需求

    • 如果您在迁移过程中进入了正向切换步骤,OMS 社区版会自动删除隐藏列和唯一索引,因此无需手动清理。(参考:文档片段 1)
    • 如果您没有进入正向切换步骤,则需要根据实际情况手动删除隐藏列和唯一索引,以避免后续问题。(参考:文档片段 2)
  3. 注意事项

    • 如果目标库作为下一个迁移任务的源库,而隐藏列未被清理,可能会导致异常问题。因此,在这种情况下,请务必手动删除隐藏列 OMS_PK_INCRMT。(参考:文档片段 2)
    • 您可以在 结构迁移 页面查看具体的迁移状态和对象详情,包括隐藏列和索引的创建语法。(参考:文档片段 3)

总结:

  • 如果您的迁移任务涉及无唯一键的表,OMS 会自动增加隐藏列和隐藏索引。
  • 是否需要事后清理取决于是否完成了正向切换步骤。如果未完成正向切换,请手动清理隐藏列和隐藏索引,以确保后续操作的正常运行。

更多信息请查看:

  1. 数据迁移服务隐藏列机制说明
  2. OMS 社区版问题排查手册
  3. 查看数据迁移任务的详情
  4. 缓存系统视图
  5. 删除数据源
  6. OceanBase 数据库在 MySQL 模式租户下的扩展功能
  7. 删除 Store 组件
  8. 更改表
2 个赞

学习

2 个赞

感谢感谢,学到了!

1 个赞

执行正向切换就行了。

1 个赞

如果我的表结构带了主键,是不是就没有虚拟列和虚拟索引呢?也不需要执行正向切换流程呢?

1、OMS 在迁移无主键表时,会在目标端添加隐藏列(如 OMS_PK_INCRMT)和对应的唯一索引,用于模拟主键的功能。如果在源端表中已经定义了主键,则 OMS 不会为该表添加隐藏列或隐藏索引,因为主键已经存在,无需额外的虚拟列来保证数据一致性。

  • 需要在数据迁移完成后,手动启动"正向切换"中的"数据库操作"清理相关隐藏列

2、源端待迁移的表结构已定义主键,则OMS不会迁移过程中添加相关隐藏列,也不需要再清理。

加油