重命名表列对解释/执行计划的影响



我有一个包含 300+ 列和数十万条记录的表。我需要重命名现有列之一。

有什么需要担心的吗?此操作会对解释计划等产生任何影响吗?

笔记:

  1. 我正在 Oracle 11g 上开发实时生产数据库。

  2. 当前未使用此列。它没有为任何行填充,我 100% 确定现有查询都没有引用此列。

如果"在实时生产数据库上工作"意味着您将尝试在人们工作时不进行测试而无需在较低环境中进行测试,那么我强烈建议不要使用该计划。

涉及要对其执行 DDL 的表的现有查询计划将失效,因此需要再次硬分析这些查询。 如果存在大量此类查询,则这很容易成为一项昂贵的操作。 当然,某些查询计划可能会因为其他更改而更改(即统计信息不同、设置不同、绑定变量不同等)。 它们不会因为列名称更改而更改,但列名称更改可能会导致计划更改。

显然,您正在执行的任何查询都需要在重命名列后立即使用新名称。 这通常意味着您需要执行协调发布,在其中修改代码(包括存储过程)以及列名。 反过来,这通常意味着您将此作为至少包括一点停机时间的构建的一部分来执行此操作。 如果您有企业版,您可能可以在不停机的情况下进行基于版本的重新定义,但这会增加流程的复杂性,并且在生产中实施之前绝对需要彻底测试。

最新更新