使用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是因为从高版本导入到低版本。
原来我们导入时候设置这几个常用的 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是因为从高版本导入到低版本。
相关文章推荐
- 使用rman跨平台传输数据库和表空间
- 使用传输表空间的方法来迁移oracle 数据库从SPARC到X86-64
- Oracle 使用数据泵 expdp impdp 导入导出数据库“表空间”文件
- 使用传输表空间跨平台迁移数据库
- 关于Update在不同数据库的使用
- 【SQL Server DBA】日常巡检1:数据库空间、状态、使用的监控
- 使用PreparedStatement为不同的数据库编写可移植的数据库存取方法
- oracle-使用数据泵对不同用户和不同表空间的数据迁移
- c#下不同命名空间的引用(一个project使用另外一个project的名称空间)
- 使用可传输表空间的特性复制数据!
- Select Top在不同数据库中的使用用法:
- 使用RMAN恢复数据库到不同主机
- [原]使用可传输表空间修改Schema Name
- 不同数据库中查询Table占用空间的大小
- 使用$.get()根据选项的不同从数据库异步请求数据
- 数据库释放空间时不能使用delete
- 获取SQL Server 2000数据库和表空间使用信息
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限 无法使用新增的用户登陆mysql
- 不同数据库之间数据传输
- django 线上线下使用不同的数据库 上线:mysql 线下sqlite3 以及debug模式的开和关