ORACLE迁移DM记录

  • 概述
    1.  迁移流程图

在表迁移的时候需要注意,表的迁移是有顺序的,按照表定义数据约束索引注释的顺序来进行迁移

  • 系统分析

1.1 源端信息收集

对于异构数据库迁移到达梦,在迁移之前,需要对源端数据库的一些信息进行收集,以便迁移方案的制定以及迁移评估,需要收集的信息如下表格:

调研项

调研情况

数据库版本/驱动版本

select * from v$version;

字符集编码

select * from v$nls_parameters a where a.PARAMETER='NLS_CHARACTERSET';

大小写是否敏感

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_COMP';

是否以字节为单位

Show parameter NLS_LENGTH_SEMANTICS;

用户/模式

用户权限

表空间(数据、索引)

数据对象个数

大字段表个数

2.1 目的端初始化

2.1.1 DM实例初始化

  1. 初始化数据库

源端为Oracle的情况下,对于目的端达梦库的初始化参数,需要做好规划,需要注意如下参数:

  • PAGE_SIZE:页大小默认为8K,建议设置成32K,一条记录的长度,受到页大小的限制,不可以超过页大小的一半,所以建议一开始规划页大小为32K;
  • EXTENT_SIZE:簇大小默认为16页,建议设置成32页;
  • CASE_SENSITIVE:默认是大小写敏感,源端为Oracle情况下,建议保持默认大小写敏感即可;
  • BLANK_PAD_MODE:空格填充参数,是否要兼容Oracle进行设置,即在BLANK_PAD_MODE=0的情况下,’A’和’A ’被认为是相同的值,参数为1的情况下,认为是两个不同的值,根据现场具体应用的需求进行设置,此为初始化参数,只能在初始化时候指定,后续不可以修改,需要提前做好评估,但是源端为Oracle数据库时候,建议设置为1
  • CHARSET:字符集编码,可选GB18030、UTF-8,默认为GB18030,如果只存储中文和字母数字,使用GB18030更节省空间;
  • LENGTH_IN_CHAR:VARCHAR 类型对象的长度是否以字符为单位,默认是以字节为单位,此参数和字符集编码结合使用,所能存储的字符个数有所不同,详见如下表格:

  • COMPATIBLE_MODE:兼容参数,置为2为兼容Oracle参数,在dm.ini中可以进行配置,如果默认0的情况下,达梦视null不等同于空字符串,用户可能会插入空串,会导致is null查不出全部数据,所以视情况而定是否需要修改;

2.1.2 表空间规划

目的端表空间大小要参照源端数据大小进行设置,且在目的端,存储需要创建独立的表空间。

单个数据文件(.dbf)不应过大,如果空间不够,应该采取开启多个数据文件的方案。

2.1.3 用户规划

1、创建用户授予权限,不建议授予DBA角色,一般的权限,授予resource、public、vti、soi、svi这几个角色即可满足使用要求。

2、设置用户的资源限制参数中,比较常用的几个参数如下图,图中显示参数缺省值均为在通用机情况下:

源端迁移用户准备

CREATE USER dzy IDENTIFIED BY dzy020131;

GRANT resource、public、vti、soi、svi TO dzy;

目的端用户准备

create user MYSQL_DTS identified by "dzy020131" default tablespace “library”;

--创建用户并指定默认表空间

grant create table,select table,update table,insert table to MYSQL_DTS;

--授权

2.1.4 表空间

提前了解数据库每个用户表空间信息,方便规划目的端数据库表空间信息,提前创建表空间数据文件提高整体的迁移速度

CREATE TABLESPACE library DATAFILE 'E:\dmdbms\data\DAMENG\test.dbf'' SIZE 128;//新建表空间

alter tablespace library add datafile 'library2.dbf' size 128 autoextend on next 128 maxsize 30720;//增加表空间大小

目的端实例构建

1)初始化参数配置

参数COMPATIBLE_MODE这里不能直接设置为目标值2,所以在后面实例创建成功后,修改dm.ini配置文件加重启来使配置生效。

  • 使用DTS迁移工具进行配置

3.1迁移对象统计

用户

类型

Oracle数据库

DM数据库

yfroot

210

210

序列

168

168

视图

4

4

存储过程

13

13

函数

3

3

3.2用户以及表空间创建

4.1 DTS工具连接

选择ORACLE=>DM迁移

对象迁移

4.1表结构迁移

4.2序列迁移

4.3本次迁移ORACLE库中没有同义词和自定义类型

4.4 迁移存储过程、触发器、包

4.5 表数据迁移

本次只迁移数据,注意勾选,并且指定应用当前选项到所有同类对象。

4.6视图迁移

4.7索引、约束迁移

五.问题总结

5.1 含有大KEY设置禁止主键

修改参数解锁即可,后从错误日志中拿出失败的SQL重新执行

sp_set_para_value(1,'PK_WITH_CLUSTER',0);

ALTER TABLE "BSIMS"."LE_BOTTLEERRORRECORD" ADD CONSTRAINT  PRIMARY KEY("ERRORRECORDID") ;

ALTER TABLE "BSIMS"."SYNCH_DATAS" ADD CONSTRAINT  PRIMARY KEY("I_ID") ;

ALTER TABLE "BSIMS"."TS_USERHOLDBOTTLE" ADD CONSTRAINT  PRIMARY KEY("ID") ;

ALTER TABLE "BSIMS"."EX_CHENGGUANWEI_87_DDSLCJJSYXX" ADD CONSTRAINT  PRIMARY KEY("S_GUID") ;

5.2数字溢出

是属于字段数据类型问题,这里采取手动创建表结构。问题字段设为VARCHAR(100)类型,先让数据正常导入,后根据数据值选择适合的数据类型。

5.3 违反唯一性约束

原因:由于迁移语句中使用NUMBER数据类型造成,采取的解决方案是手动从错误日志中拿SQL,再修改NUMBER数据类型为NUMBER(20,0),手动创建表结构。否则插入的数据会统一变为200000000,无法在主键字段下增加。

5.4 包创建失败

这里有两处问题

第一个使用将NEW改成NEW1取消关键字判定解决。

第二处采取的解决办法是删除该SQL语句。PRAGMA属于编译期的代码只在编译期起作用,不影响程序的正常使用。

  • 统计信息

select object_type,count(*) from all_objects where

owner='BSIMS' group by object_type;

社区地址:https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值