oracle数据迁移方法

上传人:豆浆 文档编号:2038978 上传时间:2017-07-19 格式:DOC 页数:17 大小:557KB
返回 下载 相关 举报
oracle数据迁移方法_第1页
第1页 / 共17页
oracle数据迁移方法_第2页
第2页 / 共17页
oracle数据迁移方法_第3页
第3页 / 共17页
oracle数据迁移方法_第4页
第4页 / 共17页
oracle数据迁移方法_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《oracle数据迁移方法》由会员分享,可在线阅读,更多相关《oracle数据迁移方法(17页珍藏版)》请在金锄头文库上搜索。

1、Oracle 数据迁移方案数据迁移通俗的说就是将数据从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、数据库服务器硬件升级等。根据需要迁移的数据量大小、系统架构,可采取不同的迁移方法。注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方 ETL 工具或使用 Oracle 的其他数据同步技术。一、常用示例1.1 如何在客户现场搭建测试环境?常规方案,使用 imp/exp 工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP 的执行速度主要受限于磁盘及网络。数据量:1.5G导

2、出用时:5 分钟导入用时:23 分钟导出文件大小:641M导出导入环境:单 CPU,700M 内存。为力求最大速度,使用直接路径导出、设置最大 I/O缓冲、导入导出文件都放在服务器上执行。1.2 还有没有更快的办法?有,仍然使用 impdp/expdp。只是不再将数据导出后导入,而是直接将数据从源库导入到目的库。CMD Impdp testi目标库 directory=DMPDIR schemas=TESTInetwork_link=源库 dblink remap_schema=TESTI:TESTA上面语句的操作是将源库的 TESTI 用户的数据,导入到目标库的 TESTA 用户下。这个操作

3、是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。1.3 有没有还快一点的方法?有,换用 impdp/expdp。同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP 速度主要受限于磁盘,与网络无关。原数据大小:1.5Gexpdp 导出操作用时:5 分钟impdp 导入操作用时:22 分钟导出文件大小:588M导出导入环境:单 CPU,700M 内存,并行度 = 1你不是说这个会更快么?为什么速度跟 3.1 的 imp/exp 差不多啊?请看第四部分总结的解释。1.4 你还敢再快一点么?使用表空间迁移。将表空间的元数据导出,和数据文件一起,复制到新库。

4、执行元数据导入。一般来说,整个导入导出的数据量不到 5M。速度相当快,但使用限制比较多。导出时间:1 分钟导入时间:3 分钟导出文件:60M + 数据文件 1.5G1.5 如何将数据从 linux 环境转到 windows 环境?查看 v$transportable_platform,如果数据编码一致,可尝试直接复制数据文件。否则使用 rman 或 impdp/expdp 或 imp/exp。1.6 如果你有一个 excel 格式的数据表,需要远程更新到客户数据库上,怎么更新?使用 pl/sql developer,复制、粘贴、提交。1.6 如果你需要将正式库的几张表,迁移到测试库来,怎么弄快

5、些?用 dblink+脚本,或者使用 impdp 远程导入二、局部数据的迁移2.1、广域网的迁移2.1.1 pl/sql developer广域网下小数据量的迁移,常用 pl/sql developer 工具来完成。在本地打开 excel 文件,复制数据。然后通过“远程桌面”,到远程服务器的 pl/sql 界面上粘贴,就可以了。操作简单方便。第一步:在本地复制数据第二步:打开远程桌面第三步:在远程机器的 pl/sql 里面粘贴数据第四步:保存数据这种方法在小数据量下很好用。大数据量时,一个表一个表的粘贴比较麻烦,且一粘贴可能就卡在那里了,得等 10 来分钟。2.1.2 imp/exp广域网内大

6、数据量的迁移,通常使用 imp/exp 工具。先在源库上使用 exp 工具,导出数据压缩包,通过网络发送到目标数据库。在目标数据库上再 imp。第一步:本机连接到源库上,执行 expExp 一般使用直接路径导出,速度可以达到常规路径导出的 3 倍以上。参数解释:Parfile:指定导出的参数配置文件Log:导出日志输出到哪个文件recordlength=65535:设置最大 I/O 缓冲为 64K(该参数最大 64K)Direct=y:数据经直接路径导出,不再经 SGA 导出Owner=testi:仅导出用户 testi 的数据。第二步:本机连接到目标库上,执行 impParfile:指定导入

7、的参数配置文件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.1 dblink+脚本2.2.1.1 基本介绍通过 dblink 将多个分布式数据库连接起来,

8、对外提供统一的服务。可以实现在一个数据库上,访问多个分布式数据库。使用“dblink+脚本”的方法来转移数据,配置灵活,但脚本写起来比较麻烦。需要为每张表单独写脚本。2.2.1.2 实施方案主要配置分两步:1) 创建数据库连接create database link LINKNAME connect to DBUSER identified by passwordusing (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521)(CONNECT_DATA =(SERVIC

9、E_NAME =ORCL);2) 执行抽取脚本如:将表 B 的数据抽取到表 A 中。Create table A as select * from BLINKNAME;对每张需要同步的表分别写脚本。2.2.2 impdp/expdp2.2.2.1 基本介绍Impdp/expdp 就是 imp/exp 的升级版,在 Oracle 10g 开始引入。其主要加强功能如下:1) 性能优化,导入导出速度明显提升2) 提供并行执行的能力,加快导入导出速度3) 提供交互式界面,可随时暂停导入导出操作4) 提供多种表加载策略,如:追加、替换、跳过等5) 提供数据库对象间的直接交换功能。6) 提供导出文件大小估

10、计功能7) 提供导入、导出进度查看功能8) 自动在导出文件目录下生成导入、导出日志文件。但 impdp/expdp 也有比较明显的限制。1) 与 imp/exp 工具生成的数据包不兼容2) 能远程调用,但导入导出文件必须放到服务器上总体来说,impdp/expdp 优势还是很明显的,所以能使用 impdp/expdp 时,尽量不使用imp/exp。2.2.2.1 实施方案Impdp/expdp 的使用,主要分为三步:1) 创建目录映射在数据库上,创建到操作系统目录的映射:Create directory DMPDIR asc:oracledump;授予用户 USER01 对该目录的读写权限:G

11、rant read ,write on directoryDMPDIR toUSER01;2) 执行导出脚本导出:参数解释:Directory:数据文件导出到哪个路径下,这里是指定第一步创建的 directory。Dumpfile:导出文件名Logfile:日志文件名Parallel:设置导出 job 的并行度,如果对导出速度有较高要求,可设置 CPU 数 - 1Job_name:为导出 job 命名SCHEMAS:指定导出哪个用户的数据。3) 执行数据导入脚本首先仿照第一步,在目标库上创建操作系统目录映射。然后将第二步的导出文件拷贝到目标数据库对应目录下。然后执行以下脚本:参数解释:Dire

12、ctory:导入文件所在的路径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) 状态查看界面如果想要查看数据导入进度,新开一个窗

13、口,执行以下脚本:expdp testtarget ATTACH=TESTIMP status2.2.3 表空间迁移2.2.3.1 基本介绍表空间迁移,相当于将一个数据库的文件,直接用 U 盘拷贝到另一个数据库使用。虽然这个原理简单,但操作复杂。这个操作限制比较多:1) 原数据库与目标数据库数据库字符集相同、国家字符集必须相同。可查看视图v$nls_parameters 确认;2) 源库与目标数据库最好是同一 Oracle 版本;3) 不能搬移 SYS 和 SYSTEM 用户对象所在表空间。2.2.3.2 实施方案表空间的迁移,可以用 imp/exp 或 impdp/expdp 来完成,主要分

14、 3 步:1) 完成表空间集的自包含检查SQL exec dbms_tts.transport_set_check(TBS1,true);执行完成后,查询:select * from v$transport_set_violations;如果没查出数据,表明可以执行表空间迁移。否则根据查询结果采取其他方法。2) 执行表空间导出SQLalter tablespace users read only;CMDexpdp testorcl directory=DMPDIR dumpfile=tbs_dmp.dmptransport_tablespace= USERS3) 执行表空间导入将第二步生成的

15、tbs_dmp.dmp 文件、表空间 USERS 对应的数据文件 USER01.DBF 通过 U 盘,拷贝到目标库,在目标库上执行导入:CMD impdp testorcl directory=DMPDIR dumpfile=tbs_dmp.dmptransport_tablespace=y tablespaces=USERS transport_datafiles=c:.USER01.DBFSQL alter tablespace users read write;2.2.3.3 界面介绍表空间传输,只是导出表空间的元数据,插入到新库中,因此速度很快。三、整库迁移整库迁移,一般用于环境的第一次搭建过程中。就是将整个数据库原封不动的挪到别的机器上。比较适合搭建独立的测试环境时使用。整库迁移也可以使用前面介绍的 imp/exp、impdp/expdp 工具,但是速度奇慢,且经常报错。不如下面的方法好用。3.1 冷备迁移冷备迁移,就是将源数据库关闭,然后将数据文件拷贝到新机器的相同位置,直接打开新库就可以了。这个迁移过程,操作相对来说简单一些,也比较好控制,但有其局限性:不能跨操作系统硬件平台及数据库大版本。-Windows 下的迁移步骤大致如下:1) 关闭源数据库2) 根据源库数据文件地址,在新机器上建立相应的操作系统目录3) 将

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号