ORACLE 序列 ORDER 属性 迁移 OceanBase 4.3.5 Oracle 模式 怎么改

迁衡基于规则 ora.seq.order 分析 ORACLE 序列 ORDER 属性 到 OceanBase 4.3.5 Oracle 模式 的兼容性、改写路径与验证建议。

兼容性判定

公开资料依据 · 建议 PoC 复核
支持度partial
严重度major
置信度medium
依据规则ora.seq.order

怎么改

SESSION 序列忽略 ORDER,已由匹配边界排除;普通 GLOBAL/NOSCALE/NOSHARD 序列若仅需唯一可去除 ORDER 并记录语义放宽,若需全局单调则使用目标有序序列或独立发号服务。割接须冻结全部取号方,在每个源实例失效或放弃已预取 CACHE(无法保证时停止源实例),并确认任何实例不得恢复取号;随后盘点 INCREMENT、MINVALUE/MAXVALUE/CYCLE、ORDER 及扩展属性,再执行受控 NEXTVAL。探针值已被消耗并保留不用,按步长、方向和边界计算其受控 NEXTVAL 后继,将合法后继设为目标首个精确 next transition。LAST_NUMBER 是缓存相关的后续值而非当前值,max used 也不含未落表调用,二者均不得单独作起点。SCALE/SHARD(以及影响编号构成的扩展)不能套普通算术后继,必须走专用迁移或人工阻断;NOCYCLE 已耗尽或探针位于终值时没有合法后继,须保留耗尽状态并阻断取号,禁止伪造回绕

判定说明

ORDER 出号语义在分布式下与 Oracle RAC 不同;LAST_NUMBER 值同步需业务窗口执行 RESTART

库侧 / 应用侧路径

库侧改造

可行:普通 GLOBAL 序列冻结消费者并在每个源实例失效或放弃缓存,确认任何实例不得恢复取号后按受控 NEXTVAL 合法后继重建;SESSION 排除,SCALE/SHARD 或 NOCYCLE 耗尽进入人工阻断

应用侧改造

可行:强全局顺序需求迁到单一 ID 服务,并替换所有数据库取号调用

推荐路线:case_by_case。验证建议:覆盖 SESSION 排除、SCALE/SHARD 阻断、正/负 INCREMENT、MINVALUE/MAXVALUE/CYCLE 回绕、NOCYCLE 已耗尽、CACHE/NOCACHE、实例重启、未落表 NEXTVAL 与多节点并发;断言每个源实例的缓存均已失效/放弃且任何实例不得恢复取号,探针值不再发出、目标首值等于受控 NEXTVAL 后继且是精确 next transition,并确认源零取号及放弃 ORDER 时业务不读取生成顺序

规则样例

CREATE SEQUENCE ord_seq START WITH 1 INCREMENT BY 1 CACHE 20 ORDER
CREATE SEQUENCE audit_seq MINVALUE 1 MAXVALUE 999999 ORDER CYCLE
CREATE SEQUENCE ord_seq START WITH 1 CACHE 20 NOORDER

参考来源

相关改造点

社群/联系

迁移卡住时,带着案例找人复核

迁移路上遇到具体问题?微信群、1v1 咨询与邮箱,随时找得到人。

微信交流群 微信二维码

扫码添加微信,邀您加入交流群;亦可搜索微信号 prejudice_me。

邮箱咨询

m01dm01db01@foxmail.com

发源库、目标库、代码规模和已脱敏案例短链,便于估算改造工作量。