基于国产化要求,业务数据库需要去O,替换到达梦。对于通信行业来说,业务使用了大量几何类型——包含点、线、面、多点等复杂要素,存储在 Oracle里就是SDO_GEOMETRY 类型,几何类型的操作也是基于MDSYS模式下相关的方法。本次基于DM9,在windows系统环境中,模拟迁移52G几何类型数据,验证几何类型数据迁移的平稳及速度。
之前在DM8上我已经做过一轮试迁移,这次拿到DM9后第一时间用同样的数据再做对比,最直观的感受是:DTS工具在细节上成熟了很多,最大的惊喜在几何类型的落库形态上。
迁移只是第一步,关键是替换后SQL怎么写,是否有很大的变化,以下是在DM9进行的一些初步验证
CREATE TABLE t_pipeline (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
shape SYSSDO.SDO_GEOMETRY
);
INSERT INTO t_pipeline VALUES (1, '测试管线',
SYSSDO.SDO_GEOMETRY(2002, 4326, NULL,
SYSSDO.SDO_ELEM_INFO_ARRAY(1, 2, 1),
SYSSDO.SDO_ORDINATE_ARRAY(121.47, 31.23, 121.48, 31.24)));
-- 转文本查看
SELECT SYSSDO.SDO_UTIL.TO_WKTGEOMETRY(shape) FROM t_pipeline;
-- 也可以直接查元数据结构
SELECT s.shape.SDO_GTYPE, s.shape.SDO_SRID FROM t_pipeline s;
SELECT p.name FROM t_pipeline p
WHERE SYSSDO.<关系函数>(p.shape, :定点几何) = 'TRUE';
ALL_TAB_COLUMNS.DATA_TYPE 里搜SDO_GEOMETRY是搜不到的——达梦把对象类型列显示成 CLASS<对象ID>(如 CLASS523481166)。需要拿 'CLASS'||object_id 关联ALL_OBJECTS反查:
SELECT c.owner, c.table_name, c.column_name
FROM all_tab_columns c
JOIN all_objects o ON c.data_type = 'CLASS' || o.object_id
WHERE o.owner = 'SYSSDO' AND o.object_name = 'SDO_GEOMETRY';
本次迁移共登记16410个对象,构成如下:表 14703 张、序列1361个、物化视图234个、包96个、自定义类型4个、表空间12个。GIS相关的S_*表共 47张。
速度上来看有很直观的规律,可以从DTS任务日志直接观察到。点要素接近普通数据的吞吐;线要素尚可;面要素最慢。
当然,以上可能并不一定是绝对性的结论,速度受机器配置、网络、坐标点数、批载参数等多种因素影响,这里只记录我们这套环境(单机测试环境、52G的几何数据)下观察到的现象,供读者参考,不构成对工具的结论。个人体感的可复用经验是:几何大表(尤其面要素)建议在演练阶段单独压测、单独估算迁移窗口,必要时安排先行迁移。
#达梦数据库 #达梦同行者征文
文章
阅读量
获赞
