Oracle数据迁移方案

大慧 2012-10-16

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

注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方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

??你不是说这个会更快么?为什么速度跟3.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/sql developer,复制、粘贴、提交。

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

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

相关推荐