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
一旦做出更改 - 这将重新计算校验和以与脚本的当前状态保持一致。
在我的开发箱上的一个迁移文件中,我有这个 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
一旦做出更改 - 这将重新计算校验和以与脚本的当前状态保持一致。