Oracle使用数据泵技术导入导出数据

数据泵来历

Oracle10g之前,imp/exp技术,所有的数据在整个导出过程为单线程操作,如果导出过程出现了网络中断或客户端你程序异常,导致导出操作失败,那么需要重新导出。数据量大的时候,导出七八个小时很常见,网络原因挂了,还得重新导出七八个小时。

Oracle10g,出现了数据泵技术,并行处理,速度较快。一个八小时的导出工作,导出了七个小时挂了,不需要重新导出八个小时,网络恢复后,继续导出剩下的一个小时就好了。

数据泵优势

1、非常明显的一个优势

都知道Oracle从高版本导入低版本时,会出现高低版本问题,导致导入失败。

这种情况可以使用数据泵技术,expdp命令行后边可以写version参数,指定dmp文件版本,这样就不会报错了,当然低版本导入的时候要使用impdp命令导入。

比如:

expdp scott/tiger@127.0.0.1:1521/orcl schemas=scott dumpfile=scottbydp.DMP directory=SCOTT_DIR version=10.2.0.1.0;

2、非常重要的一个优势

我们在导入数据时,经常碰到用户不存在,表空间不存在问题,导致我们需要手动去创建用户和表空间,而数据泵技术就比较秀儿,记住这两个参数REMAP_SCHEMA=jack:lucy 与 REMAP_TABLESPACE=ABC:EFG

在导入的时候,将源文件jack用户,替换为lucy用户,lucy用户拥有jack用户的所有权限。

在导入的时候,使用表空间EFG替换表空间ABC,至此,ABC中的所有数据都存放于EFG表空间内。

我们在导入数据时,经常碰到表空间不存在的问题,就想了,导出的时候为什么不把表空间语句导出呢,这就用到了content参数。

当设置content为all 时,将导出对象定义及对象数据。

为data_only时,只导出对象数据。

为metadata_only时,只导出对象定义(用户和表和表空间)。

3、理论优势

数据泵导入导出数据比imp/emp方式效率高,导出效率提高了10倍,导入效率不到10倍。通过PARALLEL参数可以提高并行度。很多人测的速度效率对比是不一样的,受数据大小及参数设置有关。

4、实操优势

我们看一下,exp/expdp两种方式生成的文件打开后对比,可以发现exp生成的还是可以看得懂的,但是expdp生成的是什么玩意儿,所以说expdp还是比较厉害的,看不懂的都是牛逼。

在这里插入图片描述

在这里插入图片描述

数据泵导出命令

使用数据泵技术导出SCOTT用户数据。

1、创建数据库逻辑目录(这个路径一定要实实在在存在本地,不然会报错。)
create directory scott_dir as ‘C:\Users\admin\Desktop\bak’;

2、查看数据库中的逻辑目录,判断是否创建成功
select * from dba_directories;

3、授权某个用户对该逻辑目录的读写权限
grant read,write on directory scott_dir to SCOTT;

4、导出
expdp scott/tiger@127.0.0.1:1521/orcl schemas=scott dumpfile=scottbydp.DMP directory=SCOTT_DIR

5、导入
impdp scott/tiger@127.0.0.1:1521/orcl schemas=scott dumpfile=scottbydp.dmp directory=SCOTT_DIR

导出时常见报错

ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
ORA-06512: 在 “SYS.UTL_FILE”, line 536
ORA-29283: 文件操作无效

这种错误,如果你确定你给用户授权读取逻辑目录的权限了,那么检查一下你的路径,即第一步,这个文件夹是否真实存在,不存在就会报这样的错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值