再续解密Oracle备份工具-expdp/impdp

在这个信息的时代,数据规模和数据量的增长以爆炸式的速度扩张。之前几百M或数G规模的数据量都堪称庞大。现如今测试系统所占空间都是这一数据的几十倍甚至百倍。原生imp/exp工就这两匹老马在处理这么大的数据量就力不从心了。从10g开始,data pump横空出世,中文名叫数据泵。

数据泵的优点

a.为数据及数据对象提供更细微级别的选择性(使用exclude,include,content参数)

b. 可以设定数据库版本号(主要是用于兼容老版本的数据库系统)

c. 并行执行

d.预估导出作业所需要的磁盘空间(使用estimate_only参数)

e.支持分布式环境中通过数据库链接实现导入导出

f.支持导入时重新映射功能(即将对象导入到新的目标数据文件,架构,表空间等)

g. 支持元数据压缩及数据采样

要使用data pump工具,要指定一个directory对象。

什么是directory对象?

a. 字面意思就是目录,它不是实体,只是一个指向,指向操作系统中的一个具体路径。

b. 每个directory对象都有read、write两个权限,通过grant授权给指定用户。

c.拥有directory对象的read/write权限的用户就可以读/写该directory对象实际指定的操作系统路径下的文件。

一、目录操作

1、在操作系统层面创建目录

           mkdir /home/oracle/expdp

2、在库中创建目录、并授权给scott用户

           sqlplus / as sysdba
           SQL> create directory expdp as ‘/home/oracle/expdp‘;
           SQL> grant read,write on directory expdp to scott;

3、查看当前库中所有目录

           SQL> select OWNER‘,‘DIRECTORY_NAME‘,‘DIRECTORY_PATH from dba_directories;

二、expdp 参数说明:

1、导出某用户下所有对象

          expdp scott/lipengfei directory=expdp dumpfile=scott_all.dmp SCHEMAS=SCOTT logfile=scott_all.log

2、导出部分表

          (1)expdp scott/lipengfei directory=expdp dumpfile=scott_emp.dmp tables=\(emp,dept\) logfile=scott_emp.log
          (2)expdp scott/lipengfei directory=expdp dumpfile=scott_E_D.dmp tables=\(scott.E%,scott.D%\);

3、指定条件导出

          expdp scott/lipengfei directory=expdp dumpfile=scott_emp.dmp logfile=scott_emp.log tables=emp query=\"where sal \>1000\"

4、导出时除某对象【静态收集信息,序列,视图,表】

          expdp scott/lipengfei  exclude=STATISTICS,SEQUENCE,VIEW,TABLE:\" IN \(\‘EMP\‘,\‘DEPT\‘\)\" directory=expdp dumpfile=scott_2015_06_02.dmp logfile=scott_2015_06_02.log

5、导出同时压缩dmp文件(compression=ALL,此值在11g中才有)

         (1)创建测试表,并insert大量数据
          create table li nologging as select * from all_objects;
          insert into li select * from li;
            /
            /
            /
            /
           commit;
         (2)查看测试表所在物理大小
          select segment_name,bytes/1024/1024 from user_segments where segment_name=’LI‘;
         (3)导出测试表,并加上compression=ALL参数
          expdp scott/lipengfei directory=EXPDP dumpfile=scott_all_compression.dmp SCHEMAS=SCOTT logfile=scott_all_compression.log compression=ALL 
         (4)导出测试表
          expdp scott/lipengfei directory=EXPDP dumpfile=scott_all.dmp SCHEMAS=SCOTT logfile=scott_all.log
         (5)查看2次导出dmp文件的大小
          ls -lh *.dmp 【通过查看文件大小,可以看出加上compression=ALL参数后,压缩比堪比"gzip -9"】
         (6)对dmp文件进行第二次压缩
         zip scott_all_compression.zip scott_all_compression.dmp

6、content为all 时,将导出对象定义及其所有数据.为data_only时,只导出对象数据,为metadata_only时,只导出对象定义

         expdp scott/lipengfei directory=EXPDP dumpfile=scott_metadata_only.dmp content=metadata_only logfile=scott_metadata_only.log
         ls -lh *.dmp【通过查看文件大小,可以只导出对象定义,dmp文件很小】

三、impdp 参数说明:

1、导入某用户所有对象

        (1)创建表空间
        SQL> create tablespace lipengfei datafile ‘/home/oracle/app/oracle/oradata/ecom/lipengfei.dbf‘ size 100M AUTOEXTEND OFF;
        (2)创建用户指定密码及默认表空间
        SQL> create user lipengfei identified by lipengfei default tablespace lipengfei;
        (3)解锁新创建的用户
        SQL> alter user lipengfei account unlock;
        (4)给新建的用户授权最基本的角色及权限
        SQL> grant connect,resource to lipengfei;
        SQL> grant create table to lipengfei;
        SQL> grant create view to lipengfei;
        (5)将数据泵指定的directory读写权限授权lipengfei
        SQL> grant read, write on directory EXPDP to lipengfei ;
        (6)登录lipengfei,创建表及数据初始化
        sqlplus lipengfei/lipengfei
        create table hehe(a int,b varchar2(10));
         insert into hehe values(2,‘d‘);
         insert into hehe values(4,‘e‘);
         insert into hehe values(6,‘f‘);
         commit;
        create view nimei as select a from hehe;
        create table haha(id int);
        insert into haha values(1);
        commit;
        (7)导出lipengfei用户所有对象
        expdp lipengfei/lipengfei directory=expdp dumpfile=lipengfei_all.dmp SCHEMAS=LIPENGFEI logfile=lipengfei_all.log 
        (8)登录lipengfei模拟数据全部丢失
        sqlplus lipengfei/lipengfei
        drop view nimei;
        drop table hehe;
        drop table haha;
        (9)把上面导出的数据还原回lipengfei用户
        impdp lipengfei/lipengfei directory=expdp dumpfile=lipengfei_all.dmp logfile=lipengfei_all.log

2、导入的对象已存在

当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:

a.忽略(SKIP,默认行为);

b.在原有数据基础上继续增加(APPEND);

c.先DROP表,然后创建表,最后完成数据插入(REPLACE);

d.先TRUNCATE,再完成数据插入(TRUNCATE)。

         impdp lipengfei/lipengfei directory=expdp dumpfile=lipengfei_all.dmp TABLE_EXISTS_ACTION=TRUNCATE logfile=lipengfei_all.log

3、lipengfei用户数据 导入 shiqiang用户

        (1)创建表空间
        SQL> create tablespace shiqiang datafile ‘/home/oracle/app/oracle/oradata/ecom/shiqiang.dbf‘ size 100M AUTOEXTEND OFF;
        (2)创建用户指定用户及默认表空间
        SQL> create user shiqiang identified by shiqiang default tablespace shiqiang;
        (3)将新建用户解锁
        SQL> alter user shiqiang account unlock;
        (4)授权新建用户最基本的角色及权限
        SQL> grant connect,resource to shiqiang;
        SQL> grant create table to shiqiang;
        SQL> grant create view to shiqiang;
        (5)将数据泵指定的directory读写权限授权shiqiang
        SQL> grant read, write on directory EXPDP to shiqiang ;
        (6)将lipengfei用户的导出的dmp文件,导入shiqiang用户中
        impdp shiqiang/shiqiang directory=expdp remap_schema=lipengfei:shiqiang remap_tablespace=lipengfei:shiqiang dumpfile=lipengfei_all.dmp logfile=lipengfei_shiqiang.log ;

4、只导入部分表

        (1)模拟数据丢失
        sqlplus lipengfei/lipengfei
        drop view nimei;
        drop table hehe;
        drop table haha;
        (2)将之前备份的dmp文件还原回lipengfei用户,并指定只恢复haha表
        impdp lipengfei/lipengfei directory=expdp tables=haha dumpfile=lipengfei_all.dmp logfile=lipengfei_only_haha.log
        (3)数据恢复后查看
        sqlplus lipengfei/lipengfei
        select * from hehe;
        select * from haha;

5、高版本导入低版本

        (1)11g导出,并指定version参数
        expdp shiqiang/shiqiang directory=expdp dumpfile=shiqiang_11g_all.dmp SCHEMAS=SHIQIANG logfile=shiqiang_11g_all.log version=10.2.0.1.0
        (2)10g导入
        impdp shiqiang/shiqiang directory=expdp dumpfile=shiqiang_11g_all.dmp logfile=shiqiang_11g_all.log

虽然oracle对自己产品的宣传一向有夸大的传统,不过大家要理解,有了前面原生的exp/imp工具的铺垫,对比来看,数据泵的导入和导出,有了很大的提升。

如果你之前有使用过exp/imp工具,通过上面expdp/impdp的一些例子,我相信你可以真正感受到,什么叫高效!

时间: 2025-01-09 21:47:45

再续解密Oracle备份工具-expdp/impdp的相关文章

Oracle数据泵expdp/impdp

Oracle11g以后的新特性使得默认条件下在分配表空间时忽略空表,以减少表空间的资源占用,这样使得在使用Oracle的exp导出用户数据时就会忽略空表,这样就会造成数据的不完整,当然在使用exp导出数据时也不是没有办法,这个以前有提到过,在此就不做过多的赘述了http://jim123.blog.51cto.com/4763600/1934205.使用这种方法是可以解决在使用exp导出用户数据时不会忽略空表,但是还有更为高效的办法就是使用expdp/impdp --Oracle数据泵,来对Or

Oracle备份恢复之expdp/impdp_超越OCP精通Oracle视频课程培训23

oracle视频教程目标  Oracle视频教程,风哥本套oracle教程培训学习Oracle数据泵expdp/impdp概念及命令参数和使用方法,配置生产环境的逻辑自动备份策略,expdp/impdp生产环境数据迁移流程及实际案例,字符集,版本兼容性,如何停止expdp与impdp后台进程,如何清理数据泵job,如何对expdp/impdp进行trace跟踪分析问题及使用总结. 适用人群IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以.  视频在线学习地址: http:

Oracle数据迁移expdp/impdp

Oracle数据迁移expdp/impdp目的:指导项目侧自行进行简单的数据泵迁移工作. 本文实验环境:Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试. 1.首先需要创建Directory 2.使用expdp导出用户数据 2.1 只导出scott用户的元数据,且不包含统计信息: 2.2 只导出scott用户的数据: 2.3 只导出scott用户下的emp,dept表及数据: 2.4 只导出scott用户下的emp,dept表结构: 2.5 导出scott用户下所有

oracle备份(expdp、exp)及还原(imp、impdp)的方法

oracle备份(exp.expdp) --按用户导出表expdp bdcdj/[email protected] schemas=bdcdj directory=a dumpfile=bdcdj.dmp --按表名导出表expdp scott/[email protected] TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;--按查询条件导出表expdp scott/[email protected] directory=dpdata

Oracle 数据库备份还原(Expdp/impdp)记录

最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS.WMS三个系统. 因前期搭建,这三个系统均在同一实例.以不同的表空间.用户区分. 此次切换思路: 1)以实例的方式备份.还原.命令 Exp/imp (命令不再叙述) 优点:省事.可整体导出还原.内网之间切换,可远程备份(如:将 192.168.1.1 备份至 192.168.1.2); 结果:失败;

第22章 oracle EXP/IMP/EXPDP/IMPDP 导入导出

2015-10-24 目录 参考资料 [1] oracle数据库导入导出命令! [2] Oracle数据库导入导出命令总结 [3] Oracle 数据导入导出 [4] Oracle的导入导出命令 [5] oracle导入导出 [6] oracle中exp,imp的使用详解 [7] ORACLE EXP命令 [8] Oracle的exp/imp详解(原创) [9] ORACLE EXP/IMP的使用详解 [10] Oracle exp/imp 命令 [11] oracle imp/exp命令详解

转://oracle Wallet在expdp/impdp中使用场景

oracle Wallet的使用(即内部加密技术TDE(Transparent Data Encryption )) 1. TDE是Oracle10gR2中推出的一个新功能,使用时要保证Oracle版本是在10gR2或者以上 --查看oracle版本: select * from v$version; 2.创建一个新目录,并指定为Wallet目录 D:\oracle\product\10.2.0\admin\ora10\ora_wallet 3. 设置wallet目录,在参数文件sqlnet.o

Oracle备份工具、文件命名格式、rman操作

一.常用工具: Recovery Manager: rman只能执行热备(mount或open状态) Oracle Secure Backup 用户管理的备份: cp/dd [if= /of= /blocksize=] 二.rman命名 rman名称不允许重复,%U肯定不重复. %c 备份片的拷贝数 %D 位于该月中的第几天 (DD) %M 位于该年中的第几月 (MM) %F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ, %d 数据库名称其中I

oracle数据库迁移expdp/impdp(分享四)

本项目是疾控中心的一个oracle小数据量迁移过程分享,具体显示结果就不显示. 迁移数据分为以下几个步骤: 分为如下五个部分: 源数据库库环境确认 目标数据库操作 源数据库端导出数据 目标数据库导入数据 迁移后检查 源数据库库环境确认 查看数据库创建时间 select dbid,name,to_char(created,'yyyy-mm-dd hh24:mi:ss'),log_mode from v$DATABASE; 查看数据库字符集(一定目标库也一样) select userenv('lan