数据迁移方案_第1页
数据迁移方案_第2页
数据迁移方案_第3页
数据迁移方案_第4页
数据迁移方案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据迁移通俗的说就是将数据从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、数据库效劳器硬件升级等。根据需要迁移的数据量大小、系统架构,可采取不同的迁移方法。

注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方ETL工具或使用Oracle的其他数据同步技术。

一、常用例如

1.1如何在客户现场搭建测试环境?

常规方案,使用imp/exp工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP的执行速度主要受限于磁盘及网络。

数据量:1.5G

导出用时:5分钟

导入用时:23分钟

导出文件大小:641M

导出导入环境:单CPU,700M内存。为力求最大速度,使用直接路径导出、设置最大I/O缓冲、导入导出文件都放在效劳器上执行。

1.2还有没有更快的方法?

有,仍然使用impdp/expdp。只是不再将数据导出后导入,而是直接将数据从源库导入到目的库。

CMD>Impdp

testi@目标库

directory=DMPDIR

schemas=TESTI

network_link=源库dblink

remap_schema=TESTI:TESTA

上面语句的操作是将源库的TESTI用户的数据,导入到目标库的TESTA用户下。

这个操作是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。

1.3有没有还快一点的方法?

有,换用impdp/expdp。同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP速度主要受限于磁盘,与网络无关。

原数据大小:1.5G

expdp导出操作用时:5分钟

impdp导入操作用时:22分钟

导出文件大小:588M

导出导入环境:单CPU,700M内存,并行度=1

??你不是说这个会更快么?为什么速度跟1.1的imp/exp差不多啊?

请看第四局部总结的解释。

1.4你还敢再快一点么?

使用表空间迁移。将表空间的元数据导出,和数据文件一起,复制到新库。执行元数据导入。一般来说,整个导入导出的数据量不到5M。速度相当快,但使用限制比拟多。

导出时间:1分钟

导入时间:3分钟

导出文件:60M+数据文件1.5G

1.5如何将数据从linux环境转到windows环境?

查看v$transportable_platform,如果数据编码一致,可尝试直接复制数据文件。否那么使用rman或impdp/expdp或imp/exp。

1.6如果你有一个excel格式的数据表,需要远程更新到客户数据库上,怎么更新?

使用pl/sqldeveloper,复制、粘贴、提交。

1.7如果你需要将正式库的几张表,迁移到测试库来,怎么弄快些?

用dblink+脚本,或者使用impdp远程导入。二、局部数据的迁移2.1、广域网的迁移

2.1.1pl/sqldeveloper

广域网下小数据量的迁移,常用pl/sqldeveloper工具来完成。

在本地翻开excel文件,复制数据。然后通过“远程桌面”,到远程效劳器的pl/sql界面上粘贴,就可以了。操作简单方便。

第一步:在本地复制数据

第二步:翻开远程桌面

第三步:在远程机器的pl/sql里面粘贴数据

第四步:保存数据

这种方法在小数据量下很好用。大数据量时,一个表一个表的粘贴比拟麻烦,且一粘贴可能就卡在那里了,得等10来分钟。

2.1.2imp/exp

广域网内大数据量的迁移,通常使用imp/exp工具。先在源库上使用exp工具,导出数据压缩包,通过网络发送到目标数据库。在目标数据库上再imp。

第一步:本机连接到源库上,执行exp

Exp一般使用直接路径导出,速度可以到达常规路径导出的3倍以上。

参数解释:

Parfile:指定导出的参数配置文件

Log:导出日志输出到哪个文件

recordlength=65535:设置最大I/O缓冲为64K〔该参数最大64K〕

Direct=y:数据经直接路径导出,不再经SGA导出

Owner=testi:仅导出用户testi的数据。

第二步:本机连接到目标库上,执行imp

Parfile:指定导入的参数配置文件

Log:导入日志输出到哪个文件

Feedback=1000:每导入1000行,在屏幕上输出一个”.”

Buffer=10000000:设置导入缓冲区大小

Fromuser=testi:仅导入testi用户的数据

Touser=testi:将数据导入到新用户testi下。

2.2、局域网内迁移局域网内的数据迁移,方案比拟灵活。常用的方法有:imp/exp、impdp/expdp、dblink+脚本、表空间迁移。

其中imp/exp在2.1.2已有介绍,这里主要介绍其他方法:

2.2.1dblink+脚本

2.2.1.1根本介绍

通过dblink将多个分布式数据库连接起来,对外提供统一的效劳。可以实现在一个数据库上,访问多个分布式数据库。使用“dblink+脚本”的方法来转移数据,配置灵活,但脚本写起来比拟麻烦。需要为每张表单独写脚本。

2.2.1.2实施方案

主要配置分两步:

1)创立数据库连接

createdatabaselinkLINKNAMEconnecttoDBUSERidentifiedbypassword

using'(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.9)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=ORCL)

)

)';

2)执行抽取脚本

如:将表B的数据抽取到表A中。

CreatetableAasselect*fromB@LINKNAME;

对每张需要同步的表分别写脚本。

2.2.2impdp/expdp

2.2.2.1根本介绍

Impdp/expdp就是imp/exp的升级版,在Oracle10g开始引入。

其主要加强功能如下:

1)性能优化,导入导出速度明显提升

2)提供并行执行的能力,加快导入导出速度

3)提供交互式界面,可随时暂停导入导出操作

4)提供多种表加载策略,如:追加、替换、跳过等

5)提供数据库对象间的直接交换功能。

6)提供导出文件大小估计功能

7)提供导入、导出进度查看功能

8)自动在导出文件目录下生成导入、导出日志文件。

但impdp/expdp也有比拟明显的限制。

1)与imp/exp工具生成的数据包不兼容

2)能远程调用,但导入导出文件必须放到效劳器上

总体来说,impdp/expdp优势还是很明显的,所以能使用impdp/expdp时,尽量不使用imp/exp。

2.2.2.1实施方案

Impdp/expdp的使用,主要分为三步:

1)创立目录映射

在数据库上,创立到操作系统目录的映射:

CreatedirectoryDMPDIRas‘c:\oracle\dump\’;

授予用户USER01对该目录的读写权限:

Grantread,writeondirectoryDMPDIRtoUSER01;

2)执行导出脚本导出:

参数解释:

Directory:数据文件导出到哪个路径下,这里是指定第一步创立的directory。

Dumpfile:导出文件名

Logfile:日志文件名

Parallel:设置导出job的并行度,如果对导出速度有较高要求,可设置CPU数-1

Job_name:为导出job命名

SCHEMAS:指定导出哪个用户的数据。

3)执行数据导入脚本

首先仿照第一步,在目标库上创立操作系统目录映射。然后将第二步的导出文件拷贝到目标数据库对应目录下。然后执行以下脚本:

参数解释:

Directory:导入文件所在的路径

Dumpfile:导入文件名

Logfile:指定生成日志文件的存放位置

Parallel:指定操作并行度

job_name:指定导入job名称

SCHEMAS:指定要导入的用户名

REMAP_SCHEMA=TESTI:TESTB:指定将TESTI用户的数据,导入到TESTB用户下

TABLE_EXISTS_ACTION=REPLACE:如果要导入的表已经存在,直接替换。

2.2.2.3界面介绍1)导出界面

可看到整个导出文件,约需要749.5M的存储空间。当然,expdp也支持只评估空间,不导出数据。

2)状态查看界面

如果想要查看数据导入进度,新开一个窗口,执行以下脚本:

>expdptest@target

ATTACH=TESTIMP

>status

2.2.3表空间迁移

2.2.3.1根本介绍

表空间迁移,相当于将一个数据库的文件,直接用U盘拷贝到另一个数据库使用。虽然这个原理简单,但操作复杂。

这个操作限制比拟多:

1)原数据库与目标数据库数据库字符集相同、国家字符集必须相同。可查看视图v$nls_parameters确认;

2)源库与目标数据库最好是同一Oracle版本;

3)不能搬移SYS和SYSTEM用户对象所在表空间。

2.2.3.2实施方案

表空间的迁移,可以用imp/exp或impdp/expdp来完成,主要分3步:

1)完成表空间集的自包含检查

SQL>exec

dbms_tts.transport_set_check(‘TBS1’,true);

执行完成后,查询:select*fromv$transport_set_violations;

如果没查出数据,说明可以执行表空间迁移。否那么根据查询结果采取其他方法。

2)执行表空间导出

SQL>altertablespaceusersreadonly;

CMD>expdptest@orcl

directory=DMPDIR

dumpfile=tbs_dmp.dmp

transport_tablespace=USERS

3)执行表空间导入

将第二步生成的tbs_dmp.dmp文件、表空间USERS对应的数据文件USER01.DBF通过U盘,拷贝到目标库,在目标库上执行导入:

CMD>impdptest@orcl

directory=DMPDIR

dumpfile=tbs_dmp.dmp

transport_tablespace=y

tablespaces=USERS

transport_datafiles=’c:\...\USER01.DBF’

SQL>altertablespaceusersreadwrite;

2.2.3.3界面介绍

表空间传输,只是导出表空间的元数据,插入到新库中,因此速度很快。

三、整库迁移

整库迁移,一般用于环境的第一次搭建过程中。就是将整个数据库原封不动的挪到别的机器上。比拟适合搭建独立的测试环境时使用。

整库迁移也可以使用前面介绍的imp/exp、impdp/expdp工具,但是速度奇慢,且经常报错。不如下面的方法好用。

3.1冷备迁移

冷备迁移,就是将源数据库关闭,然后将数据文件拷贝到新机器的相同位置,直接翻开新库就可以了。这个迁移过程,操作相对来说简单一些,也比拟好控制,但有其局限性:不能跨操作系统硬件平台及数据库大版本。

Windows下的迁移步骤大致如下:

1)关闭源数据库

2)根据源库数据文件地址,在新机器上建立相应的操作系统目录

3)将源库的数据文件、控制文件、参数文件、密码文件等拷贝到新库所在机器

4)启动源数据库

5)创立控制文件中记录的其他目录

6)使用oradim创立实例

7)启动目标数据库

8)执行utlrp.sql脚本,编译所有无效对象。

3.2RMAN迁移

用RMAN做整库迁移,比拟方便,主要优点是可以跨操作系统硬件平台。

下面是一个将linux系统迁移到wimdows系统的具体实施步骤(当然在32位linux和32位windows之间,可以直接复制数据文件,无需这么麻烦,此处为举例演示):

1)以readonly模式翻开数据库

SQL>startupopenreadonly;

2)转换数据文件

CMD>RMANtarget/

RMAN>run{

convertdatabasetransportscript'/home/Oracle/temp/transcript.sql'

ontargetplatformconvertscript'/home/oracle/temp/convert.sql'

toplatform'MicrosoftWindowsIA(32-bit)'

db_file_name_convert('/oracle/oradata/orcl','/home/oracle/temp');

};

3)将参数文件、数据文件、转换脚本,拷贝到windows平台上

4)在windows平台上建立数据库实例,然后依次执行脚本convert.sql、transcript.sql

5)翻开数据库,执行utlrp.sql,编译无效数据库对象。

四、总结

4.1如何选择迁移方案

不同的迁移方案,所花费的时间可能在10分钟+到10小时+之间波动……..

方案选对了,你可以分分钟搞定,否那么就得熬夜加班了。

总的来说,如果你要迁移数据,考虑工具的优先顺序如下:

把本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论