前言:本文仅作自己学习整理或者程序员参考之用,菊苣勿喷,DBA请绕道…
在平常ORACLE数据库备份或者数据库迁移的时候,如果数据库比较大,使用exp命令导出往往需要好几个小时,耗费大量时间。在Oracle10g之后,提供了数据泵expdp来实现数据的导出和备份,使得花费的时间要远小于exp花费的时间,而且文件也要小很多。
一、导出工具expdp说明:
expdp导出工具将数据库中的数据备份压缩成一个二进制系统文件,可以在不同的OS间迁移;
expdp支持四种模式:
a.表模式:导出用户所有表或者指定的表;
b.用户(方案)模式:导出用户所有对象以及对象中的数据;
c.导出表空间:导出数据库中的特定表空间;
d.整个数据库:导出数据库中的所有对象;
可以使用expdp -?查看expdp命令的用法并启动交互进程;也可以使用expdp -help来查看更详细的帮助信息;
二、导出工具expdp的使用:
使用expdp首先要在数据库中创建directory即目录,并给用户赋予read,write权限,具体操作如下:进入cmd命令行窗口:
1.以dba身份登录Oracle
打开cmd窗口,执行如下命令:
C:\Users\michael>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 12 14:45:24 2018
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL>
2.创建oracle目录
请保证该oracle目录对应路径在磁盘真是存在,即事先在磁盘创建好oracle目录对应的文件夹。
SQL> create directory temp_dir as 'd:\dir_oracle' ;
目录已创建。
SQL> grant read,write on directory temp_dir to jw_gfsp;
授权成功。
SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
oracle目录temp_dir
对应的文件夹d:\dir_oracle
需要事先创建好。
成功退出oracle后,再在cmd命令行窗口执行导出命令;
导出命令介绍:
(1)导出表:
expdp wwb/Passw0rd@orcl directory=temp_dir dumpfile=tab.dmp tables=tab_name1,tab_name2;
(2)导出方案(用户):
expdp wwb/Passw0rd@orcl directory=temp_dir dumpfile=schema.dmp schemas=system,scott,wwb;
(3)导出表空间:
expdp system/Passw0rd@orcl directory=temp_dir dumpfile=tablespace.dmp tablespaces=user01,user02;
(4)导出数据库:
expdp system/Passw0rd@orcl directory=temp_dir dumpfile=full.dmp full=y;
上面命令中,wwb
、system
是用户名,Passw0rd
是对应的用户密码,orcl
是数据库名。
并行执行:
数据泵expdp导出备份可以使用parallel参数来设置并行度,这个参数定义了作业的进程数,且这个参数最好要小于cpu*2,使用时要注意一些问题:比如设置parallel=4时,我们最好也要设置4个dmp文件,不然导出速度提高的程度不是很明显,我们可以使用如下命令来实现并行导出到多个文件中:
expdp wwb/Passw0rd@orcl directory=temp_dir dumpfile=export_%U.dmp parallel=4 schemas=wwb;
上面的命令会写入export_01.dmp,export_02,export_03,export_04四个数据文件,从而通过并行作业提高速度。
参考文章: