多语言展示
当前在线:238今日阅读:84今日分享:32

#我来了#Oracle之泵导出expdp命令详解

无论使用何种数据库,数据的备份是我们工作中经常进行的操作,当然如果你的团队有DBA这个角色,那么恭喜你,这个事你就能躲避很多了,但所谓技多不压身,这个东西还是我们自己能掌握最好。
工具/原料

一台安装了Oracle数据库的机器(需要有一定量的数据进行导出备份)

方法/步骤
1

数据备份,说到底其实就是数据导出,如果库中表的数量有限的话,我们完全可以通过一些客户端工具(比如SQL plus或者Dbvisualizer)将表导出即可(可自定义格式,比如CSV或者SQL,图1示)。但当表特别多的时候,这种手工操作的方式就有点效率低下了,Oracle目前的版本有两个工具命令可以使用,一个是 exp 即普通导出,另一个是 expdp 即泵导出。

2

exp 是一个比较老的命令,其格式为:exp 用户名/密码@ip:port/instancename file=**.dmp owner=(指定schema) tables=(指定表)注意:上述命令的 owner 和 tables 参数不可同时使用,owner 的意思是我们需要将某个或某些schema全部导出,tables表明我们需要将某个某些表全部导出,这两个一起用会报 EXP-00026: conflicting modes specified 错误!(模式冲突,图1示)。成功运行命令,导出特定表的数据(图2示),从这个命令可以看出,exp 可以作为客户端工具导出远程数据库的数据(不指定远程数据库,默认连接本地数据库进行导出)。

3

从 Oracle 11g 版本以后,官方强烈建议大家备份数据库时使用 expdp 这个数据泵命令,无论从导出数据的速度,导出文件的大小等来看,expdp 命令都远远胜过 exp 命令(尤其是当数据库数据量特别多的情况,expdp的导出速度和运行稳定性都非常好)。但相比 exp ,expdp也有一个缺点,那就是他只能导出本地数据,无法远程连接数据库进行导出!也就是要想使用 expdp,必须登陆到数据库服务器上进行操作!使用 expdp,首先我们需要在数据库中创建一个目录(逻辑目录):create directory dumpDir as 'D:\dumpDir'  这个逻辑目录会关联本地一个文件夹,我们后面导出的数据时会使用这个逻辑目录 dumpDir, 最后导出的文件也就保存在其对应的磁盘文件夹中。

4

和exp命令一样,在执行 expdp 命令时,同样需要指定一个数据库账号和密码,这里我们需要先给这个账号密码赋予访问上述逻辑目录的权限(图1示):grant read,write on directory dumpDir to 数据库账号;

5

然后就是执行如下格式的导出命令了:expdp 数据库账号/密码 directory=dumpDir dumpfile=**.dmp tables=指定表名(多个表名逗号分隔即可)命令执行完毕后,到逻辑目录关联的磁盘文件夹下查看,可以发现dmp导出文件已经存在!(图2示)

6

expdp还支持其他参数,比如 content 可以指定我们只导出数据(不导出建表语句、索引等信息),parfile 参数可以通过一个文件指明数据查询条件,导出部分数据等,有兴趣可以继续研究一下。

注意事项
1

expdp数据泵命令只能导出本地数据,无法导出远程数据库的数据

2

expdp还支持各种参数,比如content、parfile,能极大增强这个命令的能力

推荐信息