以前在导入表空间的时候,为了保证表导入完成,需要先创建一个与数据来源相同的表空间名,这样造成很麻烦。在oracle 10g后新加了impdp和expdp两种数据泵,可以实现不同表空间数据的导入。
1、在源数据库需要导入的用户中创建directory,这个是必须有的。我的用户名和密码都是alarm
SQL> conn alarm/alarm;
SQL> create directory test as 'd:\dirc';
2、使用expdp导出
expdp alarm/alarm@orcl schemas=alarm directory=test dumpfile=alarm1.dmp
这时会在d:\dirc目录下生成所需的dmp文件和日志文件
如果要指定不导出某些表,可以用exclude属性
expdp alarm/alarm@orcl schemas=alarm directory=test dumpfile=alarm1.dmp exclude=table:\"in('sk_data')\"
3、在目标数据库用户中也创建directory,名字可以不同.
SQL> conn alarm/alarm;
SQL> create directory dump as 'd:\test';
4、使用impdp导入数据
impdp alarm/alarm directory=dump dumpfile=ALARM1.DMP remap_schema=alarm:alarm remap_tablespace=ALARM:XCC
remap_schema=来源用户名:目标用户名
remap_tablespace=来源表空间名:目标表空间名
5、导入后使用
SQL> select count(1) from tabs;
查询表的数据是否一样