expdp/impdp和exp/imp差别还是不小的。其中显著的提高了效率,精度大大细化是比较明显的地方。
原来我们导入时候设置这几个常用的 owner fromuser,touser咋一看好像都没了。其实都保留了。
下面的例子:
expdp system/xxxx DUMPFILE=testxp.dmp schemas=simpreal
impdp system/xxx DUMPFILE=testexp.dmp remap_schema=simpreal:simptest remap_tablespace=simpreal:simptest logfile=123.log
如果不使用默认的data_dump_dir参数所设置的文件夹 也可以创建一个directory 对象后 使用directory=对象名,dumpfile=xxx.dmp
并且remap_schema中新用户最好不创建否则会报错(虽然没影响)
等同于以前imp/exp的:
exp system/xxx file=testxp.dmp owner=simpreal
imp system/xxx file=testxp.dmp fromuser=simpreal touser=simptest log=123.log
更强悍的地方在于:
新方法连续指定了:从旧方案到新方案,从旧表空间到新表空间
老方法必须设置一些参数来达到此目的。
参考此文章:http://www.eygle.com/archives/2009/09/oracle_impdp_ig.html
下列场景经常出现:A数据库安装在机器A,B数据库安装在机器B,我们需要把A数据库的某些数据同步到B数据库上,这个时候如果使用导入导出,原先的做法是:在A数据库上exp出dmp文件,在B数据库上使用IMP导入。这样免不了需要通过网络传输拷贝dmp文件,往往一个dmp文件高达几G甚至更大,这样就要消耗很多时间。
新一代导入导出工具DMPDP/IMPDP彻底解决了这个问题--使用network_link参数
首先要先创建一个dblink连接你要导出的数据库----这样你能在本地拥有一份远程dmp文件。
expdp system/system network_link=SIMPREAL directory=DUMP_DIR dumpfile=pijumenu.dmp version=11.1.0.6.0 logfile=piju.log tables=simpreal.tsysmen
上面的例子是导出某个表的,注意这个tables参数和schema参数只能2选1. 加version是因为从高版本导入到低版本。