您的位置:首页 > 理论基础 > 计算机网络

使用EXPDP IMPDP传输不同数据库的不同表空间(新增网络传输)

2012-06-11 19:46 323 查看
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文件。

create database link YOURDBLINK connect to user identified by pwd
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)';
然后检查下这个dblink :select * from all_db_links;
开始导出:
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是因为从高版本导入到低版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: