Oracle的expdp和impdp的使用方法

时间:2022-07-24
本文章向大家介绍Oracle的expdp和impdp的使用方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

expdp/impdp和exp/imp的区别

  • exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
  • expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
  • imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
  • 对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。

expdp 导出步骤

1. 创建逻辑目录,在服务器上创建真实的目录用于存放数据文件

2. 使用管理员用户system登录sqlplus

3. 创建逻辑目录,此步不会在OS上创建真正的目录

create directory data_dir as '/home/oracle/datadir'

4. 检查刚才创建的管理员目录是否存在

select * from dba_directories where directory_name = 'DATA_DIR';

5. 用system管理员给你的指定用户(要导出的表所属用户)赋予在该目录的操作权限。

grant read,write on directory data_dir to xxx;

6. 用户expdp导出数据,共有以下六种方案

  • 第一种,导出全量数据
expdp user/pwd@orcl file=expdp.dmp directory=data_dir full=y log=expdp.log;
  • 第二种,schemas按用户导出
expdp user/pwd@orcl 
schemas=user file=expdp.dmp directory=data_dir log=expdp.log
  • 第三种,按表空间导出
expdp user/pwd@orcl 
tablespace=tbs1,tbs2 file=expdp.dmp directory=data_dir log=expdp.log
  • 第四种,导出指定表
expdp user/pwd@orcl 
directory=data_dir tables=tb1,tb2 file=expdp.dmp log=expdp.log
  • 第五种,导出指定表的指定分区(限分区表使用)
expdp user/pwd@orcl directory=data_dir tables=(tb_pt:par_1,tb_pt:par_2) file=expdp.dmp  log=expdp.log
  • 第六种,按查询条件导出
expdp user/pwd@orcl directory=data_dir tables=tb1='where rowid='xxx'' file=expdp.dmp log=expdp.log

impdp 导入步骤

用impdp导入对应上述expdp的六种方式:

  • 第一种,全量导入数据库
impdp user/pwd directory=data_dir file=impdp.dmp full=y log=impdp.log
  • 第二种,同名用户导入,从用户A导入到用户A
impdp A/pwd directory=data_dir schemas=A file=impdp.dmp log=impdp.log
  • 第三种,1. 从A用户中把表table1和table2导入到B用户中
impdp B/pwd directory=data_dir tables=A.table1,A.table2 remap_schema=A:B file=impdp.dmp  log=impdp.log

2. 将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突

impdp A/pwd directory=data_dir remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n file=impdp.dmp logfile=impdp.log
  • 第四种,导入表空间
impdp user/pwd directory=data_dir tablespaces=tbs1 file=impdp.dmp file=impdp.log
  • 第五种,导入表的某个分区
impdp user/pwd directory=data_dir tables=(tb_pt:par_1,tb_pt:par_2) file=impdp.dmp log=impdp.log
  • 第六种,追加数据
impdp user/pwd directory=data_dir file=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log

--table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE