国产化改造-GoldenDB和Oracle兼容性分析

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

关键字改成其它别名

你可能感兴趣的:(数据库笔记,oracle,数据库,国产化改造,GoldenDB)