找回密码
 立即注册
搜索
查看: 92|回复: 4

Jync v1.7.2 Oracle 目标端兼容性加固

[复制链接]

主题

0

回帖

0

积分

积分
0
发表于 2026-10-14 17:00:06 | 显示全部楼层 |阅读模式
本版主题是 Oracle 目标端兼容性加固:修复小写表名同步到 Oracle 会建出「大写正常表 + 带引号小写孪生表」两份对象的问题,并补齐 Oracle 12c 自增列(IDENTITY)的版本适配与 11g 回退。达梦 / 崖山共用同一套方言,同样受益。
本次更新
修复:Oracle 表名大小写孪生对象

•
现象:MySQL / PostgreSQL 等小写命名的表同步到 Oracle 目标时,生成的 DDL 给表名、列名、schema 一律加双引号但不折叠大小写,Oracle 会把它建成带引号的小写对象,与无引号的常规大写表(ORDERS)并存且互不冲突——目标库里出现两份同名(不同大小写)表,数据悄悄落进小写副本,已有大写表收不到数据

•
现在生成的 Oracle DDL 统一把无引号标识符折叠为大写后再引用("orders" → "ORDERS"),小写源表只建出一份常规大写对象,与手工预建的大写表正确汇合;schema 手填值同步规范化

•
目标表结构校验改按 Oracle 字典的大写口径匹配,消除「表已存在却被判定形状不符」的误报


修复 / 增强:Oracle 自增列(IDENTITY)全链路

•
自动识别目标版本:启动时探测目标库大版本。12c 及以上用原生 GENERATED BY DEFAULT ON NULL AS IDENTITY;11g 目标自动回退为 SEQUENCE + BEFORE INSERT 触发器模拟自增(此前 11g 目标建表直接失败)。版本门控只对真 Oracle 生效,达梦版本号虽为 8 但支持 IDENTITY,不受影响

•
源端自增识别补齐:除 JDBC 的 IS_AUTOINCREMENT 外,新增 ALL_TAB_IDENTITY_COLS 字典兜底,并从 ALL_TRIGGERS 的 BEFORE INSERT 触发器体识别「序列 NEXTVAL 填入 :NEW.列」这一经典 11g 自增写法——此前 11g 源库的序列+触发器自增列同步到目标端会静默退化为普通列;审计类触发器(只写更新时间/更新人)不会被误判

•
结构变更保留自增:ALTER 修改列类型时不再把 IDENTITY 属性丢掉(此前只有新增列带自增,改列会静默降级)

•
全量后推进序列:初次全量用显式 ID 装数,新装的 identity/序列仍停在 1,此后业务侧省略 ID 的插入会主键冲突(ORA-00001);现在全量成功后自动把生成器推进到 MAX(ID)+1(best-effort,失败只告警不阻断同步)

•
ALWAYS 目标表提前拦截:目标表自增列若是 GENERATED ALWAYS AS IDENTITY,显式插入 ID 会逐行撞 ORA-32795;现在同步前直接给出可操作的报错(改为 BY DEFAULT ON NULL 或删表重建),不再跑到数据阶段才失败


测试

•
新增 20 个单元测试,全量 1116 测试通过

•
新增 Oracle 23ai 真实容器端到端集成测试:小写源只产生一个大写对象且数据正确落位、全量后序列推进可真实生成下一个 ID、11g 序列+触发器 DDL 在真实服务器上可执行可识别、ALWAYS 目标表预检生效


升级

替换 jar 重启即可,表结构随 ddl-auto: update 自动演进;升级前备份 ./data。停机期间源库变更重启后自动补齐。
注意:此前版本若已在 Oracle 目标建出带引号的小写孪生表,升级后同步会写入常规大写表;小写副本不会被自动删除(删除对象属高危操作),确认数据无误后请手工 DROP。

GITHUB: https://github.com/vfaner/jync/releases/tag/v1.7.2

Gitee: https://gitee.com/super_rgh/jync/releases/tag/v1.7.2

原文链接

打赏作者

当前余额:0 Token,打赏后立即到账

主题

0

回帖

0

积分

积分
0
发表于 2026-10-14 17:15:01 | 显示全部楼层
看完受益,已转给同事,让他们也看看Jync这块。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-14 17:45:01 | 显示全部楼层
签到留名,好帖子不能沉,Oracle顶上去。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-14 18:15:01 | 显示全部楼层
深度好文,就是v1.7.2那块还想看个具体例子,期待下篇。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-14 18:45:01 | 显示全部楼层
看完顺手回一个,内容确实有料。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

{ template common/footer}