数据库迁移

Oracle 架构同步脚本如何防误库并支持重复执行

用于升级演练的数据库从一份有效快照复制而来。复制完成后,来源端又增加了结构和字典变化。测试应用开始验收前,目标库需要补齐这些变化,才能得到可比较的基线。

目标库已有部分升级结果,还保留了一项比来源定义更宽、经过验证的兼容改进。同步范围也明确排除了业务记录。若直接顺序执行一组无条件 ALTER、CREATE 和 INSERT,脚本可能在中途遇到重复对象,下一次执行仍会失败;操作人员一旦选错连接,同一组语句还可能落到错误数据库。

最终脚本把同步描述为期望状态:先核对目标身份,再于写入前分类全部差异,只补缺失项,执行后逐项验收,最后完整运行第二次验证零变化路径。

先明确同步边界

来源对比只做读取,并 …

修复数据迁移后的 Oracle 序列漂移

新增业务记录时,数据库在主键处返回了 ORA-00001。这看起来不合常理,因为应用的主键来自 Oracle 序列。日志却给出了明确解释:本次生成的数值已经属于迁移进来的历史记录。

故障来自迁移后两个必须同步的对象发生漂移:表中的数据已经前进,负责生成后续主键的序列却仍描述旧历史。另一个独立写入流程也出现了相同故障,同时说明只修复第一个失败表并不安全。

从违反的约束开始

Oracle 把 ORA-00001 定义为 INSERT、UPDATE 或 MERGE 试图写入受唯一约束、唯一索引或主键保护的重复值(Oracle ORA-00001)。第一步应确定:

  • 违反的是哪个约束或索引;
  • 对应哪张 …