天天看点

Oracle 把一个用户的数据导入另一个用户 (数据泵)

192.168.0.1——server1

1. 导出数据

[expdp版本]

使用expdp之前,需要现在Oracle里面建directory

1 、create directory dump as '/u01/dump';

授予用户对directory的read/write权限

2、grant read,write on directory  dump to [wyb];

用户需要resource或者dba的权限,才能expdp

3、grant resource to [wyb] ;

4、expdp wyb/123456 dumpfile= dump1.dmp logfile=expdp.log directory=dump1

192.168.0.1_server2

导入之前,清空目标用户所有的对象

最简单的办法,把目标用户删了再重建,或者新建

1、drop   user   sam   cascade; 同时会删除表空间数据

再创建用户//创建临时表空间//授予权限

2、CREATE TABLESPACE   sam  DATAFILE  'sam.dbf' 

SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

3、CREATE USER  sam IDENTIFIED BY 123456 DEFAULT TABLESPACE sam ;

4、grant connect,dba to [sam] ;

 导入数据

[impdp版本]

同样,使用impdp之前,需要现在Oracle里面建directory,如果有directory不需要在创建

1、create directory dump as '/u01/dump';

2、grant read,write on directory  dump to [sam];

授予用户dba权限

grant dba to [sam] ;

impdp user/password dumpfile=temp.dmp directory=dump remap_tablespace=[old_table_space]:[new_table_space]  ; old是指server1机器上的tablespace_name,new是指server2上的

impdp sam/123456  dumpfile=wyb-15032501.dmp directory=dump1 remap_tablespace=wyb:sam remap_schema=wyb:sam logfile=wyb-15032501.log

//导入数据后取消DBA权限

revoke dba from [sam];

//List directories

SELECT * FROM dba_directories;

如果出现tablespace存在,则先删除表空间

DROP TABLESPACE  xxb0001  INCLUDING CONTENTS AND DATAFILES;

      本文转自crazy_charles 51CTO博客,原文链接:<b>http://blog.51cto.com/douya/1624239</b>,如需转载请自行联系原作者