Oracle到DM迁移方案

一、概述

ORACLE 到 DM 的移植主要有以下几个方面的工作:

1.分析待移植系统,确定移植对象。

2.通过数据迁移工具 DTS 完成常规数据库对象及数据的迁移。

3.通过人工完成 PL/SQL 的移植,只需要做少量的修改即可。

4.移植完成后对移植的结果进行校验,确保移植的完整性和正确性。

5.对应用系统进行移植、测试和优化。

二、迁移准备

2.1、统计 oracle 数据库基础信息

--统计页大小

select name,value from v$parameter where name ='db_block_size';

--查询编码格式

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

2.2、oracle 数据中的对象以及表数据量

--根据指定用户统计用户下的各对象类型和数目

select object_type,count(*) from all_objects where

owner='LCZ' group by object_type;

--查看表大小:

select SEGMENT_NAME,(BYTES/1024/1024) MB from dba_segments where owner='LCZ' order by 1;

三、DM目标端实例

3.1、选择合适的版本

达梦数据库内部会有定期的版本更新说明和版本发版通知,在进行项目移植

的之前,一定要先根据内部通报情况和自己所在技术团队的讨论,确定一个版本,

尽量以最新版本且无额外另行通知的版本,保证已经出现的问题,在即将移植的

系统中不再出现;

版本优先选择完整安装版本(无完整安装版本的平台例外),避免数据库客

户端和服务器端存在版本不匹配带来的额外工作量,达梦在不同平台的不同版本

上,安装包都会有差异,一定要采用严格匹配的原则,除非得到达梦原厂技术人

员的允许,尽量减少干扰性的问题出现。

3.2、选择合适的初始化参数

初始化库,关键的点在于对初始化参数的设置,本章节明确是从 Oracle 移

植到 DM 数据库,所以具体的初始化参数建议如下:

(1)关于页大小 PAGE_SIZE。Oracle 也叫块大小(block),在 DM 数据

库中,页大小可以为 4KB、8KB、16KB 或者 32KB,从 Oracle 移植到 DM,建

议设置页大小为 8KB, 一旦创建好了数据库,在该库的整个生命周期内,页大

小都不能够改变。除了每个字段的最大长度限制外,每条记录总长度不能大于页

面大小的一半。如果系统中存在或者以后可能存在含有较长的字符串类型的表,

建议该参数设置为 16 或者 32。页大小设置越大,最后数据文件的物理大小就会

越大,系统运行时,每次从磁盘调入内存的数据单位也就越大,所以此处要慎重。

(2)关于簇大小 EXTENT_SIZE。数据文件使用的簇大小,即每次分配新

的段空间时连续的页数,只能是 16 页或 32 页,缺省使用 16 页,从 ORACLE 移

植到 DM 使用默认值就可。

(3)关于大小写敏感 CASE_SENSITIVE。DM 为了兼容不同的数据库,在

初始化数据库的时候有一个参数字符串比较大小写敏感,用于确定数据库对象及

数据是否区分大小写, 默认为区分,不可更改。建议 MYSQL 和 SQLSERVER

迁移过来的系统,使用大小写不敏感, ORACLE 迁移过来的系统,使用大小写

敏感,以便和原来系统匹配。

(4)关于字符集 CHARSET。建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode,GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部

分繁体及少数民族文字占 4 字节,Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节, 亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般来说 GB18030 更节省空间一些。

(5)BLANK_PAD_MODE 空格填充模式,默认是 0,从 Oracle 移植要设置

为 1。

初始化DM示例:

dminit path=/dm8/ddata PAGE_SIZE=8 EXTENT_SIZE=16 CASE_SENSITIVE=y CHARSET=0 DB_NAME=DTSDB INSTANCE_NAME=DMDTSSERVER PORT_NUM=5237 BLANK_PAD_MODE=1

3.3、合理配置 INI 参数

DM 的 INI 参数文件中针对从 ORACLE 移植到 DM,有几个专门的参数,

这里将详细介绍。

 

在 INI 参数的 compatibility 部分,还有其它的一些参数,在涉及到之前,尽

量保持默认值,在移植准备的环节,先只调整这个参数就可以了,其它参数,在

移植过程中,遇到了,再具体分析。

开启oracle兼容参数:

SQL>SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',2);

3.4、创建用户和表空间

从 Oracle 移植到 DM,要求必须创建新的用户和表空间,不要把数据迁移到

系统管理员 SYSDBA 用户下和 MAIN 表空间下。

首先需要分析本次移植 Oracle 源库需要移植的是哪一个或者哪几个用户的

数据,然后分别创建这些需要移植的用户和对应的表空间;大多数情况下,我们

需要移植的 ORACLE 实例中可能存在有大量的用户,并不是所有的用户对象都

是需要我们移植的,所以在移植准备阶段,一定要和相关技术负责人员沟通明确

清楚。

3.5、根据Oracle端用户权限进行授权

Oracle:select  * from dba_role_privs where grantee='LCZ';

DM:grant RESOURCE,public,DBA to LCZ;    

四、制定迁移计划

(1)选择合理的迁移顺序:先迁移序列、再迁移表、最后迁移视图、函数、存储过程、触发器等。 (最后一部分可一起迁移)

(2)对于数据量大的表单独迁移。

(3)对于分区表如果数据量没有超过 1 亿建议迁移成普通表,在分区列上 创建索引。

(4)对于大字段较多的表,需要修改批量的行数,以免造成迁移工具内存溢出。

(5)数据量较大时,可开启快速装载

五、迁移

5.1、DTS迁移工具

(1)点击按钮创建新的工程,输入工程名和工程描述,点击【确定】,即可创建工程,如下图所示:

(2)右键选择【新建迁移】,输入迁移名称和迁移描述,即可创建迁移,如下图所示:

 

 (3)点击【下一步】,选择要迁移的方式,以 Oracle 迁移到 DM 数据库为例,如下图所示:

(4)点击下一步,输入数据源(Oracle 数据库)的信息:主机名 (IP) 、端口,服务名(Oracle 默认服务名 ORCL),角色(默认),用户名和口令,如下图所示:

要确认数据库信息正确,保持开启状态,Oracle 监听已启动。

此步骤可能会出现连接问题:ORACLE 12C 使用默认方式连接不到需要迁移的库

【问题描述】:

ORACLE 12C 后多出一个新特性多容器,此时迁移数据时使用默认的方式迁移会导致连接不到需要迁移的库。

【问题解决】:

在迁移时不再使用默认方式,需要指定驱动和 URL

驱动路径:选择与数据库版本相对应的驱动

URL:使用服务名的方式登录 @ip 地址:端口号/服务名

(5)输入DM端链接信息

 

 6、选择迁移选项

5.2、迁移表定义

(1)选择需要迁移的模式

(2)选择只迁移表定义

 

 

 

5.3、迁移表数据

勾选数据,修改普通表一次扫描读取行数和提交行数

 

设置主键冲突处理,设置导入导出并发数

 

修改大字段表一次扫描读取行数和提交行数

 

 

5.4、 迁移索引和约束

 

 

核对迁移结果

6.1、统计达梦数据基础信息

--统计页大小

select page;

 --通过编码格式

select unicode;

 --统计大小写敏感参数

select case_sensitive

6.2、统计达梦数据中的对象以及表数据量

--根据指定用户统计用户下的各对象类型和数目

select owner,object_type,count(object_name) from dba_objects where owner='LCZ' group by owner,object_type order by 3;

--数据量

select owner,segment_name,(bytes/1024/1024) MB from dba_segments where owner='LCZ'  and segment_type='TABLE';

6.3、统计Oracle对象及数据量

select owner,object_type,count(object_name) from dba_objects where owner='LCZ' group by owner,object_type order by 3;

select owner,segment_name,(bytes/1024/1024) MB from dba_segments where owner='LCZ'  and segment_type='TABLE';

6.4、DTS迁移工具对比

(1)创建dts对比任务:

(2)指定模式

 

(3)添加目的

 

(4)审阅对比任务

 

 (5)查看对比报告

七、迁移后收尾工作

7.1、更新统计信息

迁移完整的库建议按照库模式更新统计信息,凡是涉及到迁移数据的及时进行更新统计信息的操作。

--收集指定用户下所有表所有列的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('username',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

--收集指定用户下所有索引的统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('usename',1.0,TRUE,'FOR ALL INDEXED SIZE AUTO');

--或 收集单个索引统计信息:

DBMS_STATS.GATHER_INDEX_STATS('username','IDX_T2_X');

--收集指定用户下某表统计信息:

DBMS_STATS.GATHER_TABLE_STATS('username','table_name',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

--收集某表某列的统计信息:

STAT 100 ON table_name(column_name);

注意:统计信息收集过程中将对数据库性能造成一定影响,避免在业务高峰期收集统计信息。

除了手动命名收集统计信息,也可登录管理工具进行统计信息收集。

7.2、数据备份

在对数据更新完统计信息后,在数据量不大,磁盘空间足够的情况下应进行

一次数据备份工作。数据备份有两种方式:正常停止数据库后,拷贝备份 data 文

件夹;或者开启归档日志后,进行物理备份。

更多相关资料请参考达梦云适配技术社区

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值