数据迁移方法之expdp

expdp较exp的一个优势就是可以导出空表,再11g中exp不可以直接导出空表。

expdp只能在服务端执行,exp没有限制。

一、创建逻辑目录,该命令不会在操作系统创建真正的目录。

create directory dpdata1 as 'd:\test\dump';

二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

select * from dba_directories;

三、给用户赋予在指定目录的操作权限,最好以system等管理员赋予。

grant read,write on directory XXXXXto YYYYY;

四、导出数据

1)按用户导

expdp scott/tiger@orcl schemas=scott dumpfile=XXXXXX.dmp LOGFILE=LOG.LOG DIRECTORY=XXXXXX

2)按表名导

expdp scott/tiger@orcl TABLES=emp,dept  dumpfile=XXXXXX.dmp DIRECTORY=XXXXXX LOGFILE=LOG.LOG

3)按查询条件导

expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20'

4)按表空间导

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example

五、还原数据

1)导到指定用户下

impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp    SCHEMAS=scott

2)改变表的owner

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system

如果不加scott,会报错:ora-39002 ora-39166

3)更换表空间

 remap_tablespace=gmapdata:gcomm

例句:

impdp zhjha/zhjha@wgh DIRECTORY=DATA_PUMP_DIR DUMPFILE=0811-2.dmp TABLES=源用户.td_report REMAP_SCHEMA=源用户:目标用户 remap_tablespace=源表空间:目标表空间,源表空间2:目标表空间

单独导表的时候,源用户必须加上。

 

 

单表的迁移举例:

 


expdp xxzzzlsgl/xxzzzlsgl@orcl TABLES=bd_person_YS dumpfile=bd_person_YS-1.dmp DIRECTORY=DATA_PUMP_DIR LOGFILE=bd_person_YS-1.LOG
expdp xxzzzlsgl/xxzzzlsgl@orcl TABLES=T_FW_BJ,T_ld_BJ,T_rk_BJ dumpfile=bj-1.dmp DIRECTORY=DATA_PUMP_DIR LOGFILE=bj-1.LOG

 


impdp xxzzzlsgl/xxzzzlsglmm@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=bd_person_YS_YS-1.dmp TABLES=xxzzzlsgl.bd_person_YS REMAP_SCHEMA=xxzzzlsgl:xxzzzlsgl
impdp xxzzzlsgl/xxzzzlsglmm@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=bj-1.dmp TABLES=xxzzzlsgl.T_FW_BJ,xxzzzlsgl.T_ld_BJ,xxzzzlsgl.T_rk_BJ REMAP_SCHEMA=xxzzzlsgl:xxzzzlsgl

 

posted @ 2016-01-06 13:24  祥翔祥  阅读(507)  评论(0)    收藏  举报