`
jayyanzhang2010
  • 浏览: 377794 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle数据迁移方案

 
阅读更多

Oracle数据迁移方案

分类: Oracle

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

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

一、常用示例
1.1
如何在客户现场搭建测试环境?
常规方案,使用imp/exp工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP的执行速度主要受限于磁盘及网络。
数据量:1.5G
导出用时:5分钟
导入用时:23分钟
导出文件大小:641M
导出导入环境:单CPU700M内存。为力求最大速度,使用直接路径导出、设置最大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
导出导入环境:单CPU700M内存,并行度 = 1
??你不是说这个会更快么?为什么速度跟1.1imp/exp差不多啊?
请看第四部分总结的解释。

1.4
你还敢再快一点么?
使用表空间迁移。将表空间的元数据导出,和数据文件一起,复制到新库。执行元数据导入。一般来说,整个导入导出的数据量不到5M。速度相当快,但使用限制比较多。
导出时间:1分钟
导入时间:3分钟
导出文件:60M + 数据文件1.5G

1.5
如何将数据从linux环境转到windows环境?
查看v$transportable_platform,如果数据编码一致,可尝试直接复制数据文件。否则使用rmanimpdp/expdpimp/exp

1.6
如果你有一个excel格式的数据表,需要远程更新到客户数据库上,怎么更新?
使用pl/sql developer,复制、粘贴、提交。

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

dblink+脚本,或者使用impdp远程导入。

 

二、局部数据的迁移

2.1、广域网的迁移
2.1.1 pl/sql developer
广域网下小数据量的迁移,常用pl/sql developer工具来完成。
在本地打开excel文件,复制数据。然后通过远程桌面,到远程服务器的pl/sql界面上粘贴,就可以了。操作简单方便。
第一步:在本地复制数据

 

第二步:打开远程桌面


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

第四步:保存数据

这种方法在小数据量下很好用。大数据量时,一个表一个表的粘贴比较麻烦,且一粘贴可能就卡在那里了,得等10来分钟。
 2.1.2 imp/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/expimpdp/expdpdblink+脚本、表空间迁移。
其中imp/exp2.1.2已有介绍,这里主要介绍其他方法:
2.2.1 dblink+
脚本
2.2.1.1
基本介绍
通过dblink将多个分布式数据库连接起来,对外提供统一的服务。可以实现在一个数据库上,访问多个分布式数据库。使用“dblink+脚本的方法来转移数据,配置灵活,但脚本写起来比较麻烦。需要为每张表单独写脚本。
2.2.1.2
实施方案
主要配置分两步:
1)
创建数据库连接
create database link LINKNAME connect to DBUSER identified by password
    using '(DESCRIPTION =
                              (ADDRESS_LIST =
                                      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521))
                            )
                            (CONNECT_DATA =
                                    (SERVICE_NAME =ORCL)
                              )
                  )';
2)
执行抽取脚本
如:将表B的数据抽取到表A中。
Create table A as select * from B@LINKNAME;
对每张需要同步的表分别写脚本。
2.2.2 impdp/expdp
2.2.2.1
基本介绍
Impdp/expdp
就是imp/exp的升级版,在Oracle 10g开始引入。
其主要加强功能如下:
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)
创建目录映射
在数据库上,创建到操作系统目录的映射:
Create directory DMPDIR as‘c:\oracle\dump\’;
授予用户USER01对该目录的读写权限:
Grant read ,write on directoryDMPDIR toUSER01;

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)
状态查看界面
如果想要查看数据导入进度,新开一个窗口,执行以下脚本:
>expdp test@target  ATTACH=TESTIMP
> status

 2.2.3
表空间迁移
2.2.3.1
基本介绍
表空间迁移,相当于将一个数据库的文件,直接用U盘拷贝到另一个数据库使用。虽然这个原理简单,但操作复杂。
这个操作限制比较多:
1)
原数据库与目标数据库数据库字符集相同、国家字符集必须相同。可查看视图v$nls_parameters确认;
2)
源库与目标数据库最好是同一Oracle版本;
3)
不能搬移SYSSYSTEM用户对象所在表空间。
2.2.3.2
实施方案
表空间的迁移,可以用imp/expimpdp/expdp来完成,主要分3步:
1)
完成表空间集的自包含检查
SQL> exec  dbms_tts.transport_set_check(‘TBS1’,true);
执行完成后,查询:select * from v$transport_set_violations;
如果没查出数据,表明可以执行表空间迁移。否则根据查询结果采取其他方法。
2)
执行表空间导出
SQL>alter tablespace users read only;
CMD>expdp test@orcl  directory=DMPDIR  dumpfile=tbs_dmp.dmp
transport_tablespace= USERS
3)
执行表空间导入
将第二步生成的tbs_dmp.dmp文件、表空间USERS对应的数据文件USER01.DBF通过U盘,拷贝到目标库,在目标库上执行导入:
CMD> impdp test@orcl  directory=DMPDIR  dumpfile=tbs_dmp.dmp
transport_tablespace=y  tablespaces=USERS  transport_datafiles=’c:\...\USER01.DBF’
SQL> alter tablespace users read write;
2.2.3.3
界面介绍

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

三、整库迁移
整库迁移,一般用于环境的第一次搭建过程中。就是将整个数据库原封不动的挪到别的机器上。比较适合搭建独立的测试环境时使用。
整库迁移也可以使用前面介绍的imp/expimpdp/expdp工具,但是速度奇慢,且经常报错。不如下面的方法好用。
3.1
冷备迁移
冷备迁移,就是将源数据库关闭,然后将数据文件拷贝到新机器的相同位置,直接打开新库就可以了。这个迁移过程,操作相对来说简单一些,也比较好控制,但有其局限性:不能跨操作系统硬件平台及数据库大版本。
Windows
下的迁移步骤大致如下:
1)
关闭源数据库
2)
根据源库数据文件地址,在新机器上建立相应的操作系统目录
3)
将源库的数据文件、控制文件、参数文件、密码文件等拷贝到新库所在机器
4)
启动源数据库
5)
创建控制文件中记录的其他目录
6)
使用oradim创建实例
7)
启动目标数据库
8)
执行utlrp.sql脚本,编译所有无效对象。

3.2 RMAN
迁移
RMAN做整库迁移,比较方便,主要优点是可以跨操作系统硬件平台。
下面是一个将linux系统迁移到wimdows系统的具体实施步骤(当然在32linux32windows之间,可以直接复制数据文件,无需这么麻烦,此处为举例演示)
1)
read only模式打开数据库
SQL>startup open read only;
2)
转换数据文件
CMD> RMAN target /
RMAN> run{
convert database transport script '/home/Oracle/temp/transcript.sql'
on target platform convert script '/home/oracle/temp/convert.sql'
to platform 'Microsoft Windows IA (32-bit)'
db_file_name_convert('/oracle/oradata/orcl','/home/oracle/temp');
};
3)
将参数文件、数据文件、转换脚本,拷贝到windows平台上
4)
windows平台上建立数据库实例,然后依次执行脚本convert.sqltranscript.sql
5)
打开数据库,执行utlrp.sql,编译无效数据库对象。

四、总结
4.1
如何选择迁移方案
不同的迁移方案,所花费的时间可能在10分钟+10小时+之间波动……..
方案选对了,你可以分分钟搞定,否则就得熬夜加班了。
总的来说,如果你要迁移数据,考虑工具的优先顺序如下:
把本文档从后往前看,就得到下面这顺序了……..
1)
如果迁移整个数据库,首选冷备迁移和RMAN迁移。否则首选表空间迁移
2) impdp/expdp
3) imp/exp
4) dblink+
脚本
具体选择哪种方案,要根据实施环境而定。也许你谋划很久的方案,环境并不支持。但总有一种适合你。

4.2 impdp/expdp
imp/exp到底有什么区别?
Impdp/expdp = imp/exp + direct mor + parallel
Impdp/expdp
imp/exp快,最主要就是因为它具有并行执行的特性,且默认是直接路径导出。
除了性能优势外,impdp/expdp还提供了几个比较诱人的功能:
1)
提供并行执行的能力,加快导入导出速度
2)
提供交互式界面,可随时暂停导入导出操作
3)
提供多种表加载策略,如:追加、替换、跳过等
4)
提供数据库对象间的直接交换功能。
5)
提供导出文件大小估计功能
6)
提供导入、导出进度查看功能
7)
自动在导出文件目录下生成导入、导出日志文件。
回到最开始的问题,为什么imp/expimpdp/expdp的导入导出速度差不多?
因为本次测试使用impdp/expdp工具时,设置的并行度为1。丧失了最主要的特性,能快的起来么。
既然这个并行度这么重要,那设置多少合适呢?设置太高,服务器CPU直接飙升至100%,导入速度还得不到提升。设置太低,完全看不到提速的效果。推荐设置:等于服务器CPU数,但不要高于dmp文件的个数。

分享到:
评论

相关推荐

    sqlserver和oracle数据迁移方案

    ### SQLServer与Oracle数据迁移方案知识点详述 #### 前言 在信息化时代背景下,企业数据业务量急剧增加,对数据库的安全性、稳定性和高效性的需求也达到了前所未有的高度。许多快速成长的企业发现,其早期开发的...

    oracle 数据库数据迁移解决方案

    去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,有一些心得体会,与大家分享。  首先说说迁移流程,在迁移之前,写好方案,特别是实施的方案步骤一定...

    Oracle数据迁移方案!!!.docx

    Oracle数据迁移是数据库管理中的重要任务,涉及到将数据从一个Oracle数据库系统移动到另一个系统,常见于测试环境的搭建、跨网络的数据复制以及硬件升级等情况。在进行数据迁移时,根据数据量、系统架构的不同,可以...

    oracle数据迁移项目实施方案

    Oracle数据迁移项目实施方案的知识点涵盖项目需求分析、数据迁移方案设计、实施过程的步骤、系统状态信息的更新以及备份脚本的规划和配置。以下是针对各部分内容的详细解读: 项目需求分析: 项目需求是数据迁移的...

    Oracle数据迁移技术与方案.pdf

    Oracle数据迁移方案 2.1 使用可移动表空间 可移动表空间是Oracle提供的一种物理迁移方式,通过将表空间从一个数据库移动到另一个数据库,实现数据的迁移。此方法适用于大型表空间或数据库整体迁移。 2.2 数据泵...

    数据迁移 说明 oracle 数据迁移完整手册

    Oracle 数据迁移完整手册 Oracle 数据迁移是一种常见的数据库管理操作,目的是将 Oracle 数据库从一台服务器迁移到另一台服务器。以下是 Oracle 数据迁移的完整手册,涵盖了迁移方法概述、实现步骤、其他方法等...

    Oracle项目-数据迁移.ppt

    在本案例中,我们探讨了四种不同的Oracle数据迁移方案,每种都有其特定的方法和工具。 **方案一**是基于编程的方法,通过编写`copy.jsp`文件来实现数据迁移。这个方案要求用户首先在Oracle环境中手动创建数据库、表...

    Oracle至PostgreSQL数据库迁移方案.pptx

    "Oracle至PostgreSQL数据库迁移方案" Oracle至PostgreSQL数据库迁移方案是使用Ora2PG工具实现的,该工具是一个Perl语言编写的开源工具,用于将Oracle或MySQL数据库迁移到PostgreSQL数据库。下面是该方案的详细知识...

    快速实现Oracle数据库大数据迁移方案

    4. 了解 Oracle 数据库迁移方案:本教程中提供了一种快速稳定的数据库迁移方案,使用 Oracle 数据泵来实现快速加载和卸eload 数据。 5. 了解目录对象的创建:在 Oracle 数据库迁移中,需要创建目录对象来存储导入...

    Oracle数据迁移技术与方案.docx

    本章将探讨Oracle数据迁移的一些主要技术和方法。 1.1 数据迁移技术 数据迁移通常涉及以下步骤: 1. 数据备份:在进行任何迁移之前,首先需要对源数据库进行完整备份,以防止意外丢失或错误。 2. 数据评估:了解源...

    2020_Oracle19c数据迁移图文详解.docx

    本文旨在详细介绍如何使用Oracle数据泵技术完成从Oracle 11g到Oracle 19c的数据迁移工作。数据迁移是一个复杂的过程,尤其是在源数据库与目标数据库存在字符集差异、表间存在主外键关系以及表空间不一致的情况下。...

    oracle rac数据迁移

    ### Oracle RAC 数据迁移知识点详解 #### 一、Oracle RAC 数据迁移背景及意义 在企业信息化建设过程中,Oracle RAC (Real Application Clusters) 作为高性能、高可用性的数据库解决方案,被广泛应用在各种关键业务...

    oracle数据迁移

    ### Oracle 数据迁移详解 在企业级应用环境中,Oracle 数据库作为主流的关系型数据库管理系统之一,在数据迁移场景下具有广泛的应用需求。本文将基于提供的“Oracle 数据迁移”文档内容,深入探讨 Oracle 数据迁移...

    Oracle升级迁移实战文章和方案文档汇总-共168篇.xlsx

    Oracle 10g->11g XTTS迁移方案 Oracle 9i至11g exp迁移 Oracle数据库三种迁移方案 Oracle DataGuard方式迁移数据库 数据库迁移升级最佳实践9i-10g-11g Oracle ASM扩容&数据迁移文档 06使用XTTS技术进行U2L跨平台数据...

    带有oracle数据库的数据迁移方案说明.pdf

    本文档主要阐述了一个包含Oracle数据库的数据迁移方案,旨在确保在机房搬迁过程中最大限度地减少业务中断和数据损失。 首先,项目背景强调了机房搬迁的复杂性和紧迫性。由于涉及的核心数据和业务交换中心对整个信息...

    oracle项目--DataBase Migration(数据库迁移)PPT

    工具能够识别数据结构,转换数据类型,并将整个数据库结构和数据迁移到Oracle。此工具可能更适用于大型和复杂的数据库迁移项目,因为它能减轻手动转换的工作量。 在所有这些方案中,安全性和数据完整性都是至关重要...

    oracle11g expdp impdp 分区表重映射导出导入数据迁移方案

    oracle expdp impdp 分区表重映射导出导入 数据迁移方案,以SI01用户为例子,将用户分区表导出后,将分区表重映射到新的表空间,完成数据迁移和检查。照方案例子按步去做,一定能成功。

    oracle向达梦数据库迁移

    使用专门的数据迁移工具,如达梦的DTS(Data Transfer Service),开始进行数据结构的迁移。 三、迁移表结构、主键、约束、索引、字段备注、和序列 这一步涉及复制Oracle数据库中的表结构,包括表名、字段、数据...

Global site tag (gtag.js) - Google Analytics