大体思路,没经过试验验证(已经经过验证)
1、先查出realimg表空间下的所有数据文件路径
select tablespace_name,file_name from dba_data_files where tablespace_name='realimg';
2、确定自包含表空间集合
SQL>execute sys.dbms_tts.transport_set_check('realimg',true);
SQL> select * from sys.transport_set_violations;
经分析没有返回任何信息,说明该表空间test是自包含的。
3、将表空间设为只读模式
alter tablespace realimg read only;
4、打开cmd,执行一下命令。
expdp system/sys@10.13.196.33/orcl transport_tablespaces=realimg directory=DATA_PUMP_DIR dumpfile=realimg_trans_expdp.dmp logfile=realimg_trans_expdp.log
5、拷贝realimg_trans_expdp.dmp,realimg_trans_expdp.log以及所有的数据文件。
6、目标数据库,创建接收用户并赋予权限:
create user realimg identified by "123";
grant connect,dba,resource to realimg;
7、拷贝realimg_trans_expdp.dmp到directory目录下
打开CMD 执行:
impdp 'sys/sys@orcl as sysdba' directory=DATA_PUMP_DIR dumpfile=realimg_trans_expdp.dmp transport_datafiles=F:\EALIMG01\REALIMG01.dbf,F:\REALIMG01\REALIMG02.dbf remap_schema=realimg:realimg1
(如果执行报错,可能是字符集不一致,查一下源数据库和目标数据库的字符集)
8、修改用户realimg的默认表空间为realimg
9、恢复表空间为读写状态
alter tablespace realimg read write;