6、数据泵导入导出操作
6.0、数据泵导入导出注意事项:
1、EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用;
2、数据泵的导出导入可以使用dba用户(管理所有的表空间),也可以使用普通用户(比如开发权限,只能管理自己的表空间),
但是普通用户需要授权转存储目录可读可写;
3、在下面的实验中使用的是dba用户进行操作;
6.1、登录到oracle实例:
[oracle@slave-node2 ~]$ echo $ORACLE_SID
orcl
[oracle@slave-node2 ~]$ sqlplus sys/123456@orcl as sysdba
SQL>show parameter name;
6.2、数据泵存储目录:
1、查看数据泵的存储目录:
select * from dba_directories;
DATA_PUMP_DIR /application/oracle/admin/orcl/dpdump/
#这是系统自带的转存储目录;
2、创建自己需要的转存储目录:
create directory <目录名> as '<目录路径>';
#目录必须要存在且权限能被oracle用户访问;
3、补充:
(1)删除转存储目录:
DROP DIRECTORY <目录名>;
(2)将转存储目录权限授权给用户:
grant read,write on directory <目录名> to <用户名>;
6.3、数据泵导出:
1、说明:如果导出的转存储文件已经存在,将会报错;
2、按用户导出:
expdp system/123456@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=DAMS.DMP logfile=DAMS.log schemas=dams;
expdp <dba用户名>/<dba密码>@<数据库实例名> directory=<转存储目录> dumpfile=<转存储文件> logfile=<日志文件> schemas=<表空间用户名>
3、按表空间导出:
expdp system/123456 DIRECTORY=DATA_PUMP_DIR DUMPFILE=DAMS.DMP logfile=DAMS.log TABLESPACES=DAMS;
4、按表名导出:
连接哪个用户,就备份该用户表空间下的表;
expdp dams/dams@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=BHL_TABLE.DMP logfile=BHL_TABLE.log TABLES=BHL_ROLE,BHL_USER;
5、导出整个库:
expdp system/123456@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=ORCL_FULL.DMP logfile=ORCL_FULL.log FULL=y;
6.4、数据泵导入(dba):
1、按用户导出和按表空间导出的导入方法:
(1)前提条件是需要创建新的表空间和用户;
(2)导入:
impdp system/123456@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=DAMS.DMP logfile=DAMS.log remap_schema=dams:dams remap_tablespace=dams:dams;
impdp <dba用户名>/<dba密码>@<数据库实例名> directory=<转存储目录> dumpfile=<转存储文件> logfile=<日志文件> remap_schema=<原表空间用户名>:<现有表空间用户名> remap_tablespace=<原表空间名>:<现有表空间名>;
remap_schema=a:b #将数据的schema从a 转换为b;
remap_tablespace=a:b #将数据的tablespace从a转换为b;
2、还原备份的表:
(1)还原时该表必须不存在,否则报错;
(2)还原表时必须连接备份表的用户否则报错;
(3)还原:
impdp dams/dams@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=BHL_TABLE.DMP logfile=BHL_TABLE.log TABLES=BHL_ROLE,BHL_USER;
(4)特殊用法:
impdp dams/dams@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=BHL_TABLE.DMP logfile=BHL_TABLE.log TABLES=BHL_ROLE,BHL_USER remap_schema=dams:dams1 remap_tablespace=dams:dams1;
dams需要dba权限;
3、还原备份的全库:
impdp system/123456@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=ORCL_FULL.DMP logfile=ORCL_FULL.log FULL=y;