开发者社区> 持续高温> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

数据泵导入导出数据

简介: 数据泵导入导出数据,基于表、表空间和用户
+关注继续查看

一、数据泵介绍

1、数据泵优点:

   ①改进性能(较传统的exp/imp速度提高1-2个数量级)  

   ②重启作业能力

   ③并行执行能力

   ④关联运行作业能力

   ⑤估算空间需求能力

   ⑥操作网络方式

2、数据泵组成部分:

   ①数据泵核心部分程序包:DBMS_DATAPUMP

   ②提供元数据的程序包:DBMS_MATADATA

   ③命令行客户机(实用程序):EXPDP,IMPDP

3、数据泵文件:

   ①转储文件:此文件包含对象数据

   ②日志文件:记录操作信息和结果

   ③SQL文件:将导入作业中的DDL语句写入SQLFILE指定的参数文件中

4、数据泵的目录及文件位置

   以sys或system用户完成数据泵的导入导出时,可以使用缺省的目录 DATA_PUMP_DIR通过dba_directories表可以查看;DATA_PUMP_DIR缺省目录位置是:$ORACLE_HOME/admin/database_name/dpdump


二、数据泵导入导出

  数据泵的对象可以是表、表空间和用户

1、数据泵导出

  1)按表导出

    ①全表导出

    ②按查询条件导出表

  2)按表空间导出

  3)按用户导出  

  4)导出全库

2、数据泵导入

  1)导入表

    ①导入表,不改变schema

    ②导入表,改变schema

  2)导入表空间

  3)导入到具体用户

    ①导入用户,不改变schema

    ②导入用户,改变schema

  4)导入全库


三、数据泵测试

源端

 环境:

    Oracle 11.2.0.1 

      源数据库:  vbox88

      目标数据库:vbox99


  查看数据泵目录:

   1)select * from dba_directories;

      DATA_PUMP_DIR是默认的,也可以自己创建一个新的目录

      d0ff2e54e27a5bb59df50a9931cbb3f53d54fd35

   2)创建一个目录

     create directory data_pump as '/u01/data_pump';

    其中/u01/data_pump这个目录要在linux系统中存在,没有的话先创建这个目录。

    (删除目录为:drop directory DATA_PUMP;

      b7409da6c402af98ff392098d476b4420a4e0729  

    

   3)将目录DATA_PUMP的读写权限赋予scott用户

      grant read,write on directory DATA_PUMP to scott;


1、按表导出

   导出表时应查看下表的大小

    750738a3ed517c48e435dc5b384e2f9a4d3b88ab


  1)全表导出

   expdp scott/tiger directory=DATA_PUMP dumpfile=emp1.dmp tables=emp1,dept1;

    c4203e0b7cd35ec5b36ce00b67ba1e5b636395ac

  

  2)按查询条件导出表

     将emp1表deptno为10的数据导出

      expdp scott/tiger directory=DATA_PUMP dumpfile=condition.dmp logfile=condition.log tables=emp1 query=\' WHERE deptno\=\10\'

    aa61f743061a25d23e307f9ef4bd28a6f42f0830

 

2、按表空间导出

   导出前查看下表空间对应数据文件的大小

   60015d935898c4098122db6dd7a2bfa820cedd94


  1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=soe_tbs.dmp tablespaces=soe;

   35569da8152d1ec4a89ba685d21df24ed99059b6

   e68a35ab55f6b9e36b96c88fbaa701b77f6ba385


3、按用户导出 

   在导出用户时应查看用户所在的表空间以及表空间的大小

    4b1ebdf513bd778bb3e838684a857bc61a118e7d


   1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=scott.dmp schemas=scott;

   41aa044f3bbfc6c2db85a592d729170678e994e0

   f192899ded5dbc5d40f8ad59f4452904804423cb

4、全库导出

  导整个数据库
    expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;


目标端

  1)将源端的数据拷贝到目标端的目录下

     ①select * from dba_directories;

    6f5abcb1bc61bb2088d0e580b6c2073516b9d757 

     ② scp 192.168.3.88:/u01/data_pump/* /u01/oracle/dir

       e729916552fcb6fdab37bbf3e366b0d06da2a4bc


1、按表导入

  ①导入表,不改变schema

     impdp scott/tiger directory=DIR pumpfile=emp1.dmp

     615ac689ba81ee9105bcb6472e62521f5ecb6aa7

     

   ②导入表,改变schema

     impdp \'/ as sysdba \' directory=DIR dumpfile=emp1.dmp remap_schema=scott:wr

    c97b8e768d19bb9b79f0337d9dcf4a15a8b49be2


2、按表空间导入

   在源端查看有哪些表在使用soe表空间以及其所属用户,如果表所在的用户在目标端没有则应创建相应用户,否则在导入的时候会报错。

  51f05177bfa7f63becb246dc1bf36a5ec864599f

 1)impdp \' / as sysdba \' directory=DIR dumpfile=soe_tbs.dmp tablespaces=soe

   e84f9521c4817cdfc834996a8540e78a28ae0bfc


3、按用户导入

  ①导入用户,不改变schema

    impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp

   ②导入用户,改变schema

    impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp remap_schema=scott:wr

   98510def9e78a3599d758caff7da320e27980fba
   f1d463b255d0599e670c66ae47038586b6bf6360


四、目标库远程连接源库导入

①create directory data_pump as '/u01/data_pump';

②grant read,write on directory DATA_PUMP to zyz;

③配置tnsnames

    ORCL =

       (DESCRIPTION =

           (ADDRESS = (PROTOCOL = TCP)(HOST = xxbora)(PORT = 1521))

           (CONNECT_DATA =

                (SERVER = DEDICATED)

                (SERVICE_NAME = orcl)

            )

        )

④创建dblink

    create public database link orcl18 connect to zyz identified by zyz using 'ORCL18';

    select count(*) from zyz.userinfo@orcl18;

⑤导入数据

    impdp zyz/zyz directory=data_pump network_link=orcl18 schemas=zyz logfile=zyz.log remap_tablespace=JCTABLESPACE:ZYZTABLESPACE exclude=statistics

⑥收集统计数据

    exec dbms_stats.gather_schema_stats(ownname=>'ZYZ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');












版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PG数据库之间的导入导出
本文将介绍如何对PG数据库进行导入、导出,主要利用的是PG自带的pg_dump、pg_dumpall、pg_restore、psql等命令,版本是9.4(不同版本的pg_dump \ pg_restore选项可能会有些不同,请注意)。
6097 0
sqlldr批量导入导出数据测试
sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式(insert,append,replace,truncate) 因为项目需要,对比datapump性能还是不理想,所以还是希望采用sqlldr来做。
1007 0
【导入导出】将数据导入到其他用户
要将数据导入到其他用户下,在进行imp 时要使用 FROMUSER   和 TOUSER 这两个参数 FROMUSER: 指定对象的原有属主    TOUSER:指定对象的新属主,即要导入的用户 如导入原scott 用户下的dept 表和emp 表到 yang...
697 0
+关注
持续高温
你所追求的,总有一天会拥抱你!
28
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载