expdp/impdb数据泵导入导出数据
数据泵导出导入与传统导出导入的区别
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项:
1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.
使用数据泵工具时,如果不指定目录,会有“ORA-39087: 目录名 DATA_PUMP_DIR 无效”错误。DATA_PUMP_DIR是默认的目录,如果这个目录没有创建或者无效,那么就会出现这个问题。可以通过下面的语句来查看有哪些目录:
SELECT privilege, directory_name,DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+)=d.directory_name ORDER BY 2,1;
可以用CREATE DIRECTORY来创建目录,例如:
SQL> CONNECT system/manager
SQL> CREATE OR REPLACE DIRECTORY db_dump as 'D:\ora_bak\db_dump';
SQL> GRANT read,write ON DIRECTORY db_dump TO xxx用户;
上面创建了db_dump。使用EXPDP时,可以用DIRECTORY=db_dump来指定,也可以在使用expdp之前设置环境变量,例如:set data_pump_dir=db_dump,然后再来导出。当然也可以在参数文件中来设置。
示例导出
expdp user/pwd@orcl directory=db_dump dumpfile=DB%date:~0,4%%date:~5,2%%date:~8,2%.dmp logfile=DB%date:~0,4%%date:~5,2%%date:~8,2%.log schemas=用户或表空间
示例导入
impdp user/pwd@orcl directory=db_dump dumpfile=DB20170112.dmp logfile=IMPDP%date:~0,4%%date:~5,2%%date:~8,2%.log schemas=用户或表空间TABLE_EXISTS_ACTION=TRUNCATE
注:如果提示连接不上,将@orcl写成ip+orcl的形式,如:127.0.0.1/orcl
只导入某几张表
impdp user/pwd@orcl directory=db_dump dumpfile=20170112.DMP tables=表名,表名
注意:如果导入某几张表,要把数据库中同名的表drop掉,不然会报错