1. 基础环境信息
源库:Oracle RAC ,版本:19.0.0.0.0,字符集:ZHS16GBK
分析涉及业务用户:IOM
目标库:分布式GoldenDB,版本:v6,开启Oracle兼容模式,GoldenDB字符集GBK
兼容性分析工具:CACTOOL
2. 兼容性评估
部署CACTOOL后,通过JDBC连接Oracle的Pboss库进行兼容性分析。
2.1. 字符集兼容性
GoldenDB支持由字符集为ZHS16GBK的Oracle库数据至字符集为GBK的GoldenDB数据库的无损数据迁移,异构数据库间不同字符集的兼容性良好。同时GoldenDB支持其他常用的字符集,可以满足不同的字符集转换需求。注:GoldenDB较Oracle在查询时会忽略掉最右边的空格键
2.2. 兼容性总览
以下表格为兼容性分析工具CACTOOL对Hmarket库的Oracle数据库对象的兼容性分析结果:
对象类型 | 数量 | 支持数量 | 不支持数量 | 重写后支持数量 | 备注 |
PROCEDURE | 234 | 144 | 90 | 0 | |
SEQUENCE | 1056 | 1056 | 0 | 0 | |
TYPE | 9 | 1 | 8 | 0 | |
PACKAGE_BODY | 9 | 7 | 2 | 0 | |
VIEW | 122 | 70 | 52 | 0 | |
FUNCTION | 50 | 42 | 8 | 0 | |
TRIGGER | 2 | 0 | 0 | 2 | |
PACKAGE | 14 | 5 | 2 | 7 | |
TABLE | 2301 | 2300 | 1 | 0 | |
SQL | 59130 | 59111 | 19 | 212 | |
总览 | 62927 | 62736 | 182 | 221 | 总支持率: 99.98% |
2.3. 兼容分析详情
2.3.1. PROCEDURE
序号 | 不兼容说明 | 改造建议 |
1 | 关键字cr、 | 关键字改成其它别名 |
2 | 开始无分隔符 | 开始时加分隔符, delimiter // |
3 | 结束无结束符 | 结尾时加结束符 end // delimiter; |
2.3.2. Type
序号 | 不兼容说明 | 改造建议 |
1 | GDB不支持自定义类型中包含函数 | 业务确认是否用到此类TYPE,如用到改造成java代码实现 |
2.3.3. PACKAGE_BODY
序号 | 不兼容说明 | 改造建议 |
1 |
2.3.4. VIEW
序号 | 不兼容说明 | 改造建议 |
1 | Rollup语法不支持 | 改造成with rollup写法 |
2 | sysdate- interval '15' minute | interval 计算不支持 开发中 |
3 | 关键字ur | 关键字改成其它别名 |
2.3.5. FUNCTION
序号 | 不兼容说明 | 改造建议 |
1 | IOM.WM_CONCAT函数没有return | 需要业务厂家澄清下使用场景 |
2 | 不支持自定义函数存在string类型 | 更改string类型为varchar类型 |
3 | select column_value from table(split(v_ids,',')); | table函数当前不支持,可改写成select column_value from (select split(v_ids,',') from dual); |
2.3.6. Package
序号 | 不兼容说明 | 改造建议 |
1 | select userenv('terminal') into v_machine_name from dual; | 包体中存在Oracle系统环境查询函数,需要业务确认是否是运维使用 |
2.3.7. Table
序号 | 不兼容说明 | 改造建议 |
1 | `part_id` decimal(6) default to_number(to_char(sysdate,'mm')) not null, | `part_id` decimal(6) default (to_number(to_char(sysdate,'mm'))) not null, |
2.3.8. 数据库SQL语句兼容性
序号 | 不兼容说明 | 改造建议 |
1 | 包含pivot函数 | 改写成case when等方式 |
2 | select cast((trunc(sysdate+1)+3/24) as timestamp with time zone) from dual | timestamp类型不支持cast select trunc(sysdate+1)+3/24 from dual |
3 | 数据库关键字UR | 关键字改成其它别名 |