记一次oracle 导入导出数据走过的坑。首先要了解,实例、表空间、用户之间的关系
实例 表空间 用户 关系
一个实例可创建多个表空间、多个用户
一个用户可以绑定多个表空间
用户会默认访问所有表空间下的表
查询用户和表空间的关系
select username,default_tablespace from dba_users;
查看全部表空间和大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
一.expdp导出
(1)在磁盘中创建导出文件存储地址 d:\test
(2) 在cmd中 sqlplus登录
(3) 数据库中创建逻辑目录;
create directory data_dir as 'd:\test'; (4)检查是否设置成功 select * from dba_directories;
(5)
全量导出(不建议导出整个orcl实例) 用户名/密码@实例名 dumpfile 导出的文件名 directory:导出的目录地址 (之前设置的) logfile:导出的日志文件名 expdp user/passwd@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log;
按表空间导出(建议按表空间)tablespaces表空间名称 多个表空间可按逗号分割 tablespaces=TS_XA_BIZ_TEST,tables2
$expdp user/pwd@orcl tablespaces=TS_XA_BIZ_TEST dumpfile=xa_biz_test.dmp directory=data_dir logfile=xa_biz_test.log;
二、impdp导入数据
将导出的数据文件,拷贝至另外一台待导入的orcal服务器上。
导入前,按导出的表空间用户,为新的oracle建立表空间,和用户,同时绑定用户和表空间的关系。
1.导入前设置逻辑目录,内容同expdp导出的内容,将导出的dmp文件拷贝至,该目录下。
2.导入 remap_tablespace 用来转换表空间名字不一致用来转换表空间 remap_tablespace=老的表空间名称:新的表空间名称
impdp xa_biz_test/xa_biz_test@orcl directory=data_dir dumpfile=xa_biz_test.dmp remap_tablespace=TS_XA_BIZ_TEST:XA_BIZ_TEST