实验环境:

操作系统:Redhat6.4

数据库版本:oracle 11.2.0.4

本文档主要说明expdpimpdp的使用,以及具体的常见参数

 

一、             expdpexp的区别

在我看来,expdp相当于升级版的exp,显而易见的便是导出的速度,expdp导出速率远快与exp。功能也得到了升级,比如remapcontent,并且exp无法导出空表,可expdp可以做到。

二、             数据泵导入导出语句及说明

利用expdp做导出数据时,需先建立directory(目录),也就是指定dmp文件和日志文件的使用的目录对象,使用directory就可以省去exp中写全路径的烦恼,需确保使用的用户有该directory的读写权限

例如:

建立名为xuydirectory

SQL> create directory xuy as '/oracle/backup';

SQL> select * from dba_directories;

OWNER      DIRECTORY_NAME       DIRECTORY_PATH

———- ——————– https://www.viagrapascherfr.com/viagra-pas-cher-inde-lille/ ————————————————–

SYS          XUY               /oracle/backup

 

2.1全库导入导出

同样的 expdp在执行全库导出的时候,需要用到full=y这个参数

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log full=y

 

导出数据时,需确认连接数据库的用户是否有导出数据的权限

Dumpfile参数后跟导出dmp文件名

Logfile参数后跟导出日志文件名(建议加上该参数,方便排错等)

如希望生成多个备份文件,则可使用filesize这个参数,与exp相似

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuy%U.dmp logfile=out.log full=y filesize=10M

此方法可提高主机IO,从而增加导出速率

 

全库导入:

在执行全库导入时,需确认目标端磁盘空间大小,以及所需表空间是否已经建立。Impdp会自动建立用户,这也是相对与imp便利的一点

例如:

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log full=y

 

2.2按用户导出导入

同样的,expdp也可以实现按照用户导出,这也是最常用的一个方法,实现此功能需使用schemas这个参数,指定导出用户

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log schemas=xytest

需要导出多用户的情况,直接在chemas后加入其他用户,以逗号隔开

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log schemas=xytestxytest2

 

按用户导入

在执行导入的时候,可以将某一用户的数据导入至目标端同一用户下,也可以导入至不同用户下,此时便需要使用到remap_schema

例如:

导入至相同用户

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log schemas=xytest

导入至不同用户

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log remap_schema=xytest:xytest2

如有多个用户需要转换,则在remap_schema后以 源用户:目标用户的格式加入,中间以逗号隔开

 

2.3按表空间导出导入

Expdpexp相同,按照表空间导出时同样使用到了tablespaces这个参数,指定需导出的表空间

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log tablespaces=xy

 

按表空间导入

Impdp可以直接实现表空间的转换,这也是imp无法直接做到的,同按照用户的导入一致,可选择导入相同或不同的表空间

例如:

导入相同表空间

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log tablespaces=xy

导入不同表空间

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log remap_tablespace=xy:xy2

 

2.4 按表导出

Expdp也可以按照单表导出,同样需使用tables参数

例如:

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log tables=xytest.test1

多表导出的规则类似,在tables后加入表名,以逗号隔开

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log tables=xytest.test1,xytest.test2

导出分区表的部分分区

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log tables=xy_test_exp:p1, xy_test_exp:p2

 

单表导入:

按表导入,只需指定连接用户,指定表即可

impdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=in.log tables=xytest.test1

 

2.5按条件导出部分表

此功能与exp类似,使用query参数,加入需添加的条件

例如:

导出xytest.test3这个表id字段小于15的部分

expdp xuybak/oracle directory=xuy dumpfile=test.dmp logfile=out.log tables=xytest.test3 query=\"' where id < 15 '\"

 

2.6导出表结构或只导出表数据

Expdp这个功能相比与exp进了一步,可以只导出数据部分,参数也发生了变化,expdp使用的参数为contentexp使用的为rows

例如:

只导出某用户下的表结构

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log schemas=xytest content=metadata_only

只导出某用户下的表数据

expdp xuybak/oracle directory=xuy dumpfile=xuybak.dmp logfile=out.log schemas=xytest content=data_only

 

导入的方法与导入用户数据相同,指定连接用户,备份文件等即可

2.7parfile参数的使用

参数有一个优点,就是在按条件导出多个表的部分内容时,可以减少转义符的使用,我们拿expdp做说明

例如

expdp xytest/oracle directory=xuy dumpfile=test.dmp logfile=out.log parfile=/oracle/backup/parfile.txt

parfile的内容为

[oracle@redhat backup]$ cat parfile.txt

tables=(xytest.test3,xytest.a)

query=(

xytest.test3:"where id < 15",

 

xytest.a:"id='5'")

2.8其他常用参数说明

Paraller:并行参数,需按服务器的负载,‘量力’增加

IncludeExclude):这两个参数,可选择导出或不导出索引,约束条件等

Nologfile:不记录日志文件

FLASHBACK_SCN:可指定scn号进行导出(导入)

REUSE_DATAFILES:如果表空间存在,则会被初始化

Network_link:该参数可以使用dblink直接连接源数据库,进行导出恢复工作,并且不会产生dmp文件

 

 




Related posts

coded by nessus
分享:  DeliciousGReader鲜果豆瓣CSDN网摘
Trackback

no comment untill now

Add your comment now

无觅相关文章插件