华山论剑之exp/imp与expdp/impdp的巅峰对决

一、背景:

公司有个业务取一张大表,大概八千万数据量,24G左右的大小,经常会宕机,看了一下是用exp/imp去做处理的。

而且需要从A库的T1用户导入到B库的T2用户,两个表结构是相同的,只是T2下的表多一个索引,但是A库的数据库版本要高于B库的数据库版本

二、解决思路:

首先想到的是改成expdp与impdp的方式

数据泵的创建:

1、在系统上创建物理目录,如/opt/oracle/dmp_dir

2、在oracle上创建逻辑目录:create or replace directory BIG_DATA_DUMP  as '/opt/oracle/dmp_dir'; 

3、授权给T1用户:grant read,write on directory BIG_DATA_DUMP to t1;

4、写导出parfile文件,内容如下:

directory=big_data_dump
dumpfile=test%U.dmp
logfile=test.log
tables=tbs_a
filesize=5G

当然还可以加上PARALLEL并行参数,并行的值应小于等于生成文件的个数,比如以这个为例,我的文件大概24G,我指定filesize=5G,那么会生成5个文件,因此PARALLEL的值最大只能是5

5、导出表数据expdp t1/pwd parfile=parfilename,评测了一下大概只需要5分钟不到的时间

6、再将dmp文件传到B库上,同样需要创建物理目录和逻辑目录并且授权,parfile内容如下:

directory=dump_data_test
dumpfile=test%U.dmp
tables=tbs_a
table_exists_action=truncate
remap_schema=t1:t2
NOLOGFILE=y
PARALLEL=4

7、由于高版本库导入到低版本库,需要在B库上运行以下命令

SQL> exec dbms_metadata_util.load_stylesheets

8、由于业务特殊性,该表不需要记日志,因此我们还可以将该表设置成不记日志模式

SQL> alter table tbs_a NOLOGGING;

9、impdp t2/pwd parfile=parfilename,评测一下大概需要20分钟左右

因此 从这次改变数据迁移方式是成功的,建议大数据迁移不要用exp/imp模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值