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命令相关的参数及基本写法:
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)按查询条件导出
五、用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