序列
修复数据迁移后的 Oracle 序列漂移
新增业务记录时,数据库在主键处返回了 ORA-00001。这看起来不合常理,因为应用的主键来自 Oracle 序列。日志却给出了明确解释:本次生成的数值已经属于迁移进来的历史记录。
故障来自迁移后两个必须同步的对象发生漂移:表中的数据已经前进,负责生成后续主键的序列却仍描述旧历史。另一个独立写入流程也出现了相同故障,同时说明只修复第一个失败表并不安全。
从违反的约束开始
Oracle 把 ORA-00001 定义为 INSERT、UPDATE 或 MERGE 试图写入受唯一约束、唯一索引或主键保护的重复值(Oracle ORA-00001)。第一步应确定:
- 违反的是哪个约束或索引;
- 对应哪张 …