flyway for DB2 table REORG 调用的生产部署步骤

Production deployment steps for flyway for DB2 table REORG call

在我的开发箱上的一个迁移文件中,我有这个 DB2 请求:

CALL SYSPROC.ADMIN_CMD('REORG TABLE COST_RULES.LOW_DLL_EXCEP');

对于在后续迁移中完成的列的后续 ALTER,似乎需要此调用。过去 devops 人员在测试数据库上手动执行对 reorg 的调用,但我想将其放入迁移中以便自动完成。

如果我添加这个,它会改变迁移文件的校验和,导致部署发生时出现飞路问题。在部署的工作开始之前应该采取哪些 Flyway 步骤?

当 table 进行了某种更改或更改了一定数量时,Db2 可以将 table 置于 reorg pending 状态。

当 table 未处于 reorg_pending 条件时,此时没有必要仅为迁移目的执行重组。

考虑更改您的迁移以进行有条件的重组,如果 table 类型兼容,也考虑在线重组。

您可以使用视图 SYSIBMADM.ADMINTABINFO 并检查 table 的 REORG_PENDING='Y' 来决定是否执行重组。您可以使用 SQL PL 匿名块来 运行 条件逻辑和条件重组。

如果 table 是 suitable 在线重组,您可以使用 INPLACE 选项进行重组(和相关选项)。

您还可以使用完全独立的迁移来测试您感兴趣的模式中是否有任何 table 处于 reorg_pending 状态,并在当时采取适当的措施,包括检查 table 类型以查看在线重组是否合适。这样的迁移将被重新运行启用。它会有自己的校验和。

如果您正在更正已经 运行 的脚本,并且您不希望它再次 运行(但您需要更改以反映手动完成的更改生产或忠实地旋转副本)然后 运行 flyway repair 一旦做出更改 - 这将重新计算校验和以与脚本的当前状态保持一致。