1.expdp和impdp
expdp
假设sglaw用户的默认表空间是users,导出用户sglaw所有数据:
SQL> conn / as sysdba
SQL> create directory dir as '/home/oracle/';
SQL> grant read,write on directory dir to system;
$expdp system/oracle directory=dir dumpfile=sglaw.dmp schemas=sglaw logfile=sglaw.log
impdp
导入sglaw用户所有数据到gh,并且转换表空间users为gh:
SQL> conn / as sysdba
SQL> create directory dir as '/home/oracle/';
SQL> grant read,write on directory dir to system;
$impdp system/oracle directory=dir dumpfile=sglaw.dmp remap_tablespace=users:gh remap_schema=sglaw:gh logfile=sglaw.log
总结:执行impdp时无需创建gh用户,在导入时会自动创建并改名用户sglaw为gh(拥有sglaw的所有权限等),自动设置默认表空间为转换后的表空间gh。如果有多个表空间需要转换,则使用多个remap_tablespace=源:目标 字段。
此种方法只限于支持oracle10g以上版本。