墨墨导读:expdp和impdp是oracle数据库之间移动数据的工具,本文简单总结了数据泵的常用命令,希望对大家有帮助。
前言
expdp和impdp是oracle数据库之间移动数据的工具。expdp和impdp只能在数据库服务端使用,不能在客户端使用。本文简单总结了expdp和impdp常用的命令,详细信息参考oracle官方文档Utilities。
directory相关SQL语句:
EXPDP导出
注意:
1、导数的数据库用户需要拥有对directory_object的读写权限。
2、操作系统中需要已经存在directory_object指定的路径。
3、oracle用户拥有对directory_object指定路径的读写权限。
4、system用户导出用户,会将创建用户和授予系统权限的元数据也导出,普通用户不能导出这些元数据。
expdp命令示例
以导出一个用户为例
expdp参数说明:
活动预告
IMPDP导入
注意:
1、expdp导出的文件不能使用imp导入,只能通过impdp导入数据库。
2、导入时遇到已存在的对象,默认会跳过这个对象,继续导入其他对象。
3、导入时应确认dmp文件和目标数据库的tablespace、schema是否对应。
4、导入dmp文件时,应确定dmp文件导出时的命令,以便顺利导入数据。
拿到一个dmp文件,如果忘记了导出命令,可以通过以下方法确认(非官方,生产数据勿使用):
确认dmp文件是exp导出还是expdp导出1)xxd test.dmp | more
2)strings test.dmp | more
impdp命令示例
以导入dmp文件中的所有数据为例
impdp参数说明
交互模式
进入交互可以操作导入导出作业。
进入交互模式的方法:
1、导入导出命令行执行期间按Ctrl + c
2、expdp attach=jobname或impdp attach=jobnam查看导入导出日志可以看到jobname,也可以通过查询dba_datapump_jobs找到jobname。
报错总结
系统目录未建立,报错:
impdp导入exp导出的dmp文件,报错:
如果导出的数据库版本比导入的数据版本高,需要在导出时加上参数version=要导入的数据库版本。否则报错:
文末再附加一条导出用户元数据的sqlfile命令,这个是之前一个朋友问我的,因为之前做的db2的工作,最近才开始和oracle打交道,数据泵了解的很少,所以被问到这块的时候犹豫了片刻,第一个想到的自然是使用oracle自带的数据泵工具expdp:
但是问题来了,朋友要的是sqlfile不是dumpfile,经过百度得知可以通过plsql developer工具把元数据导出成sqlfile的形式,但是导出的sqlfile还是不符合朋友的需求,后经指点得知,在导出元数据之后,只需要在导入的时候加上sqlfile参数,就可以生成sqlfile文件,具体命令如下:
impdp工具里对sqlfile的描述如下
将所有的 SQL DDL 写入指定的文件。
领取专属 10元无门槛券
私享最新 技术干货