Oracle逻辑备份:IMPDP与EXPDP的使用方法

ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法

 

使用expdp和impdp时应该注重的事项:


1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。

 

了解EXPDP和IMPDP命令:


在CMD窗口中输入expdp -help,了解expdp命令相关的参数及基本写法:

Oracle逻辑备份:IMPDP与EXPDP的使用方法

Impdp与其类似。


一、创建逻辑目录,该命令不会在操作系统创建真正的目录(请先创建真正的目录),最好以system等管理员创建逻辑目录。

SQL>conn system/oracle as sysdba
SQL>create directory my_dump_dir as 'd:\my_dump';

 

注:在oracle11g中有系统默认数据库备份路径,形如“D:\app\Carlos\admin\orcl\dpdump\”,如采用该默认路径,则在impdp或expdp命令中可省略声明本分路径的语句: “directory = my_dump_dir”部分。

 

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


SQL>select * from dba_directories;

 

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


SQL>grant read,write on directory my_dump_dir to carlos;

 

四、用expdp导出数据


1)导出carlos用户(导出这个schema包含的所有对象)


expdp carlos/psword schemas=carlos directory=my_dump_dirdumpfile=carlos_0127.dmp logfile = carlos_0127.log

注:加粗部分是必须的。


2)导出carlos用户下的表


expdp carlos/psword tables=emp,dept directory=my_dump_dirdumpfile=carlos_0127.dmp logfile = carlos_0127.log


注:表名用逗号隔开


3)按查询条件导出


expdp carlos/psword tables=emp query='wheredeptno=20' directory=my_dump_dirdumpfile=carlos_0127.dmplogfile = carlos_0127.log

4)按表空间导出

expdp system/manager tablespaces=temp,exampledirectory= my_dump_dirdumpfile= system_tablespace_0127.dmplogfile = system_tablespace_0127.log

5)导出整个数据库

expdp system/manager directory= my_dump_dirdumpfile=full.dmp full=y


五、用impdp导入数据


1)导入carlos用户(从用户carlos导入到用户carlos)


impdp system/manager directory=my_dump_dirdumpfile=carlos_0127.dmp schemas=carlos

 

注:一般来说,在还原数据库操作的时候,首先要删除这个用户,然后在进行impdp还原操作。

(1)SQL>DROP USER carlos CASCADE;

(2) impdp system/manager directory=my_dump_dirdumpfile=carlos_0127.dmpschemas=carlos

 Oracle会自动创建用户carlos,并且密码及默认表空间(如无则需提前创建)都与导出时相同,并且不会报:ORA-31684:对象类型 USER:"USERNAME" 已存在的错误。

 

2)导入表(从carlos用户中把表dept和emp导入到system用户中)


impdp system/manager directory=my_dump_dir dumpfile=carlos_0127.dmptables=carlos.dept, carlos.emp remap_schema=carlos:system

 

注:

1 如果是用户对象全部导入到另一个用户中,则省略“tables=carlos.dept, carlos.emp

2 关于REMAP_SCHEMA参数

众所周知:IMP工具的FROMUSER和TOUSER参数可以实现将一个用户的的数据迁移到另外一个用户。impdp数据泵使用REMAP_SCHEMA参数来实现不同用户之间的数据迁移;

语法:

REMAP_SCHEMA=source_schema:target_schema

impdp system/manager DIRECTORY=my_dump_dir DUMPFILE=carlos.dmpREMAP_SCHEMA=carlos:system

与REMAP_SCHEMA类似的参数选项,如REMAP_TABLESPACE将源表空间的所有对象导入目标表空间。

 

3)导入表空间


impdp system/manager directory=my_dump_dir dumpfile=system_tablespace.dmptablespaces=source_tablesapce_name

 

4)导入整个数据库


impdb system/manager directory=my_dump_dir dumpfile=full.dmp full=y
table_exists_action=replace

注:table_exists_action有三种选项:

(1)truncate (2) replace (3)append