oracle迁移达梦7手顺及注意事项

1、概述
因为前段时间做了一次oracle迁移达梦7的工作,将迁移过程记录下来供大家参考.
ORACLE迁移到达梦7,主要需要完成以下工作:
1、确定迁移对象,选择合适的参数初始化DM7数据库。
2、使用dts迁移工具完成数据块对象和数据的迁移。
3、对出错的PLSQL对象进行手工移植,需要做少量修改。
4、迁移完成后进行检验、测试和优化。

2、迁移过程
2.1、环境准备
对于从oracle迁移达梦,需要对数据库的一些初始化参数先进行修改,可避免在迁移过程中的一些错误,推荐的参数设置如下:
1、页大小page_size,在达梦中,页大小默认是8k,如果数据库中表存在较多大字段,建议设置成16k或者32k,否则导入数据时会报错。
2、BLANK_PAD_MODE空格填充模式,默认是0,建议设置成1。
3、dm.ini中COMPATIBLE_MODE参数设置成2,表示兼容oracle;CALC_AS_DECIMAL修改为1
同时在迁移前需要在达梦中创建对应的用户,否则会将数据迁移到SYSDBA用户下。表空间也需要提前创建,否则会默认迁移到MAIN表空间下。
对于dts机器的内存推荐至少要大于4g,否则会出现”java heap space”之类内存不足的报错。
机器的CPU要多核,开12个以上的并行速度会快很多(实际本次操作只有1颗CPU)
尽量考虑上SSD,机械盘的速度比较慢(实际本次操作是在机械盘上)

2.2、迁移计划
迁移顺序:先迁移序列、再迁移表、然后迁移视图,最后迁移PLSQL对象,
数据量大的表单独进行迁移
对于分区表如果数据量没有超过 1 亿建议迁移成普通表,在分区列上创建索引
对于大字段较多的表,需要修改批量的行数,以免造成迁移工具内存溢出。
2.3、常规对象迁移
2.3.1、序列迁移
序列直接使用dts工具迁移即可,一般只要oracle库中序列范围不超过达梦序列可定义范围,基本不会报错。
2.3.2、表迁移
对于表的迁移,一般分三个步骤:1、迁移表结构(不包括约束和索引),2、迁移表数据,3、迁移表的索引和约束。

表结构迁移:

表结构在迁移过程中主要会因为分区表的问题出现错误,这是因为达梦中要求分区表的分区列必须是主键。对于这个类型的错误需要使用复合主键,将分区键添加到主键中。
oracle迁移达梦7手顺及注意事项_第1张图片
oracle迁移达梦7手顺及注意事项_第2张图片
表数据迁移:
表数据迁移时,只要page_size设置合适大小,基本不会有太多错误。数据量较大的情况可以根据情况开启

最后,等数据迁移完成后,只需要将表上的约束和索引再迁移即可。

视图迁移:
直接使用dts工具迁移即可,需要注意创建视图依赖的对象是否已经导入,还有相关权限的问题。

2.4、PLSQL对象迁移
主要对自定义类型、存储过程、函数、触发器进行移植。

该过程主要出现的错误有:
1、
/ 第 257 行, 第 15 列[CLASS]附近出现错误:
语法分析出错 /
这类错误式因为使用了达梦中的保留字,导致冲突。可以采用屏蔽保留字的方法屏蔽。

2、
无效的链接名/表或视图名[XXX]
这类错误是因为对象没有导入造成的,检查对应的表或视图是否存在,如果不存在手动插入。无效的链接名主要是dblink没有导入造成的,由于达梦中创建dblink语法和oracle有不同,所以需要手动改写.
3、
/ 第7 行附近出现错误:
无法解析的成员访问表达式[XXX] /
/ 相关SQL语句: /

这类错误主要是因为其它包之类的编译失效导致,需要具体分析再解决。

在迁移PLSQL对象时,基本上错误都是以上三类,对于第1,2两种类型的比较容易处理。

2.5、收尾工作
更新统计信息:
DBMS_STATS.GATHER_SCHEMA_STATS( ‘HNSIMIS’, --HNSIMIS 为模式名 100, FALSE, ‘FOR ALL COLUMNS SIZE AUTO’);

你可能感兴趣的:(国产数据库)