oracle 数据库迁移的几种常用方式 及 优缺点比较 和 迁移方法选择

主题一:oracle数据库迁移的几种常用方式及优缺点比较

数据库迁移的几种方式:

一、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一般使用直接路径导出,速度可以达到常规路径导出的3倍以上。参数 Direct=y:数据经直接路径导出,不再经SGA导出

IMP/EXP的执行速度主要受限于磁盘及网络。
优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

1.2 impdp+metalink  (可以指定并行, 默认是直接路径导出
CMD> Impdp  testi@目标库  directory=DMPDIR  schemas=TESTI
network_link=源库dblink  remap_schema=TESTI:TESTA
上面语句的操作是将源库的TESTI用户的数据,导入到目标库的TESTA用户下。
这个操作是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。(受制于网络

1.3 impdp/expdp(可以指定并行, 默认是直接路径导出
同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP速度主要受限于磁盘,与网络无关。

1.4 tts表空间迁移
将表空间的元数据导出,和数据文件一起,复制到新库


二、存储迁移:
这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。
操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames.ora,listener.ora,密码文件传到新库的对应位置。将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。

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


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

操作方法:略
注意switch over之后,可以将dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT、standby_file_management参数。另外还要注意如果用rman做dg,注意手工添加tempfile。

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


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

操作方法:
1、停第三方的归档备份,如legato或dp;
2、backup数据库;
3、复制备份文件到新库主机上;
4、恢复控制文件,生成参数文件并做相应修改;
5、恢复数据文件;
6、启动数据库。

◆1.停第三方的归档备份,如legato或dp
◆2.backup数据库:
run {
allocate channel t1 type disk;
backup full format '$DIR_BAK/UNDOTBS1_2_%d_%s_%p.bak' datafile 2;
……
release channel t1;
}

◆3.备份控制文件alter database backup controlfile to '/tmp/mydb.ctl';并到新数据库用rman恢复:restore controlfile from '/arch/sd168.ctl';
◆4.restore备份文件:
run {
allocate channel t1 type disk;
restore datafile 2;
releasechannel t1;
}

◆5.传归档日志,并且对归档进行做recover:recover database until sequence = 归档的序号 thread = 1;
◆6.对数据库open resetlogs:RMAN>sql 'alter database open resetlogs';
◆7.alter tablespace temp add tempfile 'XXXXXX' size XXM reuse;

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


主题二:oracle迁移方法选择 

oracle迁移受到如下三个方面的制约,选择的方法也大不相同:
1、允许停机时间
2、是否跨平台
3、是否跨版本


exp/imp 适用于oracle 10g以下,速度较慢,适用于迁移少量数据

expdp/impdp 适用于10g以上,速度较前者快,但是如果要求停机时间短且数据量较大时不适用

传输表空间及异构传输表空间

    ■源和目标数据库的COMPATIBLE初始化参数必须>=8.1,且必须是企业版
    ■如果被传输的表空间的block size和目标库的标准块size不一样,那么目标库的COMPATIBLE必须>=9.0
    ■从Oracle 8i开始,TTS就可以向后跨版本(比如8i-->9i)
    ■从Oracle 10g开始,TTS可以跨平台,如果源和目标的平台字节序(endianness)相同就不需要额外的步骤,否则还需要进行字节序转换
    ■源和目标数据库必须具有相同的character set and national character set.
    ■TTS支持RAW device file system.
    ■10g前如果目标库存在同名的表空间,则不能TTS,从10g(COMPATIBLE>=10.0.0)开始,借助tablespace rename特性可以解决这一问题
    ■TTS不能处理system表空间及system表空间里的Objects
    ■自包含检查
        SQL> EXEC sys.DBMS_TTS.TRANSPORT_SET_CHECK('data, indx',TRUE);
        SQL> SELECT * from sys.transport_set_violations;       
    ■cannot transport objects owned by the user SYS.
        SQL> SELECT segment_type, owner||'.'||segment_name "OWNER.SEGMENT_NAME",partition_name
             FROM dba_segments
             WHERE owner = 'SYS' AND tablespace_name IN ('DATA', 'INDX')
             ORDER BY owner, segment_type, segment_name;
    ■Database entities
     在Oracle 10g版本前,TTS不支持
      – Materialized views/replication
      – Function-based indexes
      – Scoped REFs
      – 8.0-compatible advanced queues with multiple recipients
     Oracle 10g  中TTS的限制       http://docs.oracle.com/cd/B19306_01/server.102/b14231/tspaces.htm#sthref1288
     Oracle 11gR1中TTS的增强和限制 http://docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces013.htm#ADMIN01101
     Oracle 11gR2中TTS的增强和限制 http://docs.oracle.com/cd/E11882_01/server.112/e17120/tspaces013.htm#ADMIN11394

stream复制
没用过,暂不讨论

ctas
适用于大批量迁移时迁移静态表时使用,其他的配合stream及ogg等使用,可以跨平台,跨版本,跨机器

ogg
没用过,暂不讨论,该方法可以跨平台跨版本,可以最少停机时间,为oracle官方迁移时的首选方案

dg
更换存储或升级时为了方便回退时用,需要有两套机器和两套存储,该方法停机时间短,可靠性高,并且在11g以后还可以跨平台兼容


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31397003/viewspace-2150542/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31397003/viewspace-2150542/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值