数据库跨平台迁移方法浅析

运维 数据库运维
我们常常需要对数据进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下,那么如何进行跨平台迁移?数据迁移的方法都有哪些呢?本文将为您进行一下详细介绍。

一、迁移方法介绍:

exp/imp:

这也算是最常用最简单的方法了,一般是基于应用的owner级做导出导入。

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库做exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,传dmp文件到新库,在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.

优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

存储迁移:

这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。

操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames.ora,listener.ora,密码文件传到新库的对应位置。将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。

优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为当库、切存储、起库的时间。缺点是要求新老库都是同一平台,是相同的数据库版本。

利用data guard迁移:

用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

操作方法:可见http://www.oracleblog.cn/study-note/dg-created-by-rman/或者http://www.oracleblog.cn/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他相关网文。注意switch over之后,可以将dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT、standby_file_management参数。另外还要注意如果用rman做dg,注意手工添加tempfile。

优缺点:优点是停机时间短,停机时间为switch over的时间。缺点:主机必须双份、存储必须双份。

用rman做迁移:

rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

1.传归档日志,并且对归档进行做recover:recover database until sequence = 归档的序号 thread = 1;

2.对数据库open resetlogs:RMAN>sql 'alter database open resetlogs';

3.alter tablespace temp add tempfile 'XXXXXX' size XXM reuse;

优缺点:优点是可以跨文件系统,停机时间少。缺点是要时刻关注这归档日志,做recover的时候一个都不能少!

二、迁移样式介绍:

1、直接映射,原来是什么就是什么,原封不动照搬过来,对这样的规则,如果数据源字段和目标字段长度或精度不符,需要特别注意看是否真的可以直接映射还是需要做一些简单运算。

2、字段运算,数据源的一个或多个字段进行数学运算得到的目标字段,这种规则一般对数值型字段而言。

3、参照转换,在转换中通常要用数据源的一个或多个字段作为Key,去一个关联数组中去搜索特定值,而且应该只能得到唯一值。这个关联数组使用Hash算法实现是比较合适也是最常见的,在整个ETL开始之前,它就装入内存,对性能提高的帮助非常大。

4、字符串处理,从数据源某个字符串字段中经常可以获取特定信息,例如身份证号。而且,经常会有数值型值以字符串形式体现。对字符串的操作通常有类型转换、字符串截取等。但是由于字符类型字段的随意性也造成了脏数据的隐患,所以在处理这种规则的时候,一定要加上异常处理。

5、空值判断,对于空值的处理是数据仓库中一个常见问题,是将它作为脏数据还是作为特定一种维成员?这恐怕还要看应用的情况,也是需要进一步探求的。但是无论怎样,对于可能有NULL值的字段,不要采用“直接映射”的规则类型,必须对空值进行判断,目前我们的建议是将它转换成特定的值。

6、日期转换,在数据仓库中日期值一般都会有特定的,不同于日期类型值的表示方法,例如使用8位整型20040801表示日期。而在数据源中,这种字段基本都是日期类型的,所以对于这样的规则,需要一些共通函数来处理将日期转换为8位日期值、6位月份值等。

7、日期运算,基于日期,我们通常会计算日差、月差、时长等。一般数据库提供的日期运算函数都是基于日期型的,而在数据仓库中采用特定类型来表示日期的话,必须有一套自己的日期运算函数集。

8、聚集运算,对于事实表中的度量字段,他们通常是通过数据源一个或多个字段运用聚集函数得来的,这些聚集函数为SQL标准中,包括sum,count,avg,min,max。

9、既定取值,这种规则和以上各种类型规则的差别就在于它不依赖于数据源字段,对目标字段取一个固定的或是依赖系统的值。

【编辑推荐】

  1. 用LiquiBase进行数据库迁移与重构
  2. PHP将数据从Oracle向Mysql数据迁移实例
  3. 详解SQL Server 2008迁移查询计划
责任编辑:佚名 来源: IT专家网
相关推荐

2010-03-09 09:49:01

Oracle跨平台迁移

2009-03-19 09:44:07

SQL Server数据库迁移数据库

2011-07-14 15:24:26

MSSQL数据库跨数据库查询

2009-03-30 14:52:43

复制数据库Oracle

2010-08-13 18:06:03

IBM DB2

2010-08-25 14:32:49

DB2数据库迁移

2010-09-25 14:01:11

Java跨平台

2010-08-13 09:43:13

IBM DB2

2010-08-10 11:35:42

DB2数据库

2011-03-03 15:16:43

DB2数据库迁移

2010-08-19 17:41:46

IBM DB2跨平台数

2010-10-08 09:38:55

Android数据库事

2020-06-08 10:41:13

云计算数据工具

2020-03-05 10:36:12

云计算数据库云平台

2020-02-24 21:23:41

跨平台想法尝试

2010-03-24 09:42:12

Oracle数据库

2010-02-05 09:54:30

DB2数据库应用迁移

2011-09-23 09:09:38

数据库迁移

2020-08-13 07:42:15

数据库Flyway代码

2011-08-29 14:44:56

DBLINK
点赞
收藏

51CTO技术栈公众号