Oracle数据库之间数据传输方法探讨

1 概述

许多信息中心一般运行多个数据库系统,这些数据库系统所用数据库种类,数据库版本和操作系统平台也都不完全相同,这样就对不同系统间的数据交换提出了挑战;另一方面,对于长期运行的系统需要定期把过期数据转移到历史服务器或是数据仓库中,进行历史查询,报表以及数据挖掘等处理。这些数据交换,或是在不同种类数据库之间异构数据传输,比如sqlserveroracle之间;或是在同种数据库的不同版本之间,如各种版本的oracle数据库之间;还有可能是数据库同种,但数据库运行的操作系统平台不同。后两种都属于同构数据传输。本文主要探讨不同版本,不同操作系统平台下的oracle数据库之间同构数据传输的工具和方法。


2 Exp/imp导出/导入工具

21 Exp/imp导出/导入工具是最常用的oracle工具,它提供了一种在oracle数据库之间传输数据对象的简单方法,即使oracle数据库安装在不同的硬件或操作系统平台,如unixlinuxnt等操作系统平台。Oracle9i之前,Exp/imp导出/导入工具是oracle跨平台传输数据的唯一方法,它可以在数据库,模式和表级实现数据传输。以下是在不同平台之间移动数据库的基本步骤:

1 dba用户连接到oracle数据库,查询所有表空间的名称,在后续的操作步骤中需要表空间的名称。

SQL> SELECT tablespace_name FROM dba_tablespaces;

2 用具有dba权限的用户执行全库导出。

exp system/manager FULL=y FILE=expdat.dmp

3 把导出文件移到目标数据库服务器,可以使用操作系统命令。

4 在目标服务器上创建目标数据库。

5 导入数据前,利用第一步获得的表空间信息,在目标系统首先创建表空间。否则在目标系统将创建与源系统一样的数据文件结构,而这可能与目标系统的文件结构不兼容。

6. dba权限用户,执行全库导入:

imp system/manager FULL=y IGNORE=y FILE=expdat.dmp

7. 执行新数据库的全库备份,这样实现了数据库跨平台传输。

22 在不同版本的oracle数据库之间移动数据兼容性问题。

因不同版本的oracle数据库具有不同的特性,一般高版本具有更多的新特性,消除了低版本一些过时的特性,这样在使用exp/imp工具时,存在数据库版本与exp/imp版本的兼容性问题,因此在不同版本的oracle数据库之间移动数据时,必须遵循以下兼容性规则:

1Import工具和目标数据库必须具有相同的版本。

2Export工具的版本必须等于或是早于源数据库或目标数据库的版本。

也就是说,低版本数据库向高版本数据库传输数据,Export工具的版本等于源数据库的版本。高版本数据库向低版本数据库传输数据,Export工具的版本等于目标数据库的版本。即Export工具的版本等于或是低于版本较低的数据库的版本。需要注意的是从高版本向低版本传输数据,会丢失高版本支持的新特性。

3 Expdp/impdp数据泵工具:

31 Expdp/impdp数据泵工具是在oracle10g 10.1中提出.作为imp/exp工具的替代,它可以高速的在oracle数据库(oracle10g以后)之间传输数据。Expdp/impdp数据泵工具工作方法与Exp/imp导出/导入工具相比,数据传输方法做了很大的改进,传输速度大大提高了,而且它们的转储(dump file)文件的格式互不兼容,但是它们的使用方法很接近,详细情况可以参考oracle提供的文档。

Expdp/impdp数据泵工具可以在数据库,表空间,模式和表级实现数据传输,可以满足各种不同数据传输的需求。但是在不同的oracle数据库版本之间移动数据,Expdp/impdp数据泵的方法比Exp/imp导出/导入更易于使用,Expdp/impdp数据泵的方法不需要考虑export工具的兼容性问题,可以使用任意版本的export工具,仅仅用参数version指定目标数据库的版本,该参数用来指明数据库对象的版本,创建一个与以前数据库版本兼容的转储文件集。

例如:从oracle 10.0.0向当前数据库传输表employees的数据,进行报表处理:

首先,创建一个与oracle 10.0.0版本兼容的转储文件集,选择VERSION=10.0.0

expdp hr/hr TABLES=hr.employees VERSION=10.0.0 DIRECTORY=dpump_dir1 DUMPFILE=emp.dmp NOLOGFILE=y

接着,向当前数据库导入oracle 10.0.0版本兼容的转储文件集,选择VERSION=LATEST

impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=exp.dmp TABLES=employees  VERSION=LATEST

32  Expdp/impdp在不同的数据库版本之间传输数据注意事项:

1. .如果version指定的数据库版本早于当前数据库版本.那么当前数据库的一些特性不会出现在转储文件集中。

2. 对于Expdp/impdp数据泵export.如果version指定的数据库版本早于当前数据库的版本,那么转储文件集只能导入那个旧的数据库中。

3. Expdp/impdp数据泵Import总是能读旧版数据库创建的转储文件。

4 Expdp/impdp数据泵import不能读高于当前数据库的版本创建的转储文件集,除非用version参数指定当前数据库的版本后创建转储文件集。总之,version参数总是与目标库的版本相同。

4 表空间传输(Transportable tablespace

可以使用表空间传输特性在oracle数据库之间传输表空间集,自从oracle8i引入表空间传输特性,在以后的版本中逐渐增强它的适用性,不断消除其在数据传输中的一些限制,比如表空间管理方式的限制,数据块大小的限制等,不但可以跨数据库版本传输表空间,而且在oracle10g以后还可以跨不同操作系统平台实现表空间传输。与Exp/imp导出/导入、Expdp/impdp数据泵工具相比,它是实现数据移动速度最快的工具,这是因为仅需要用Exp/imp导出/导入、Expdp/impdp数据泵工具传输表空间对象的元数据,而包含实际数据的数据文件可以使用操作系统工具拷贝到目标数据库,不用卸载和装载数据。

4.1 跨平台表空间传输的实现

oracle10g开始,oracle提供了跨平台传输表空间的特性,如果源平台与目标平台的字节顺序(endian format)不同,那么,传输表空间时,需要在源平台或目标平台转换要传输的表空间为目标平台的字节顺序格式。如果两个平台的字节顺序相同,那么不需要任何转换,表空间可以直接传输。可以查询V$TRANSPORTABLE_PLATFORM视图察看表空间传输特性是否支持某个平台,并可确定该平台的字节顺序。

4.2 表空间传输兼容性问题

当创建可传输表空间集时,oracle数据库计算目标数据库必须运行的最低兼容性级别,称为可传输表空间集的兼容性级别。从oracle10g开始表空间可以传输到相同或更高级别的兼容性级别的目标数据库。如果传输兼容性级别高于目标库的兼容性级别,数据库会发出一个错误信号。

下表列出了源数据库和目标数据库要求的最低可传输表空间兼容性级别:

数据传输方式

最低兼容设置

源数据库

目标数据库

相同平台的数据库

8.0

8.0

源、目标数据库表空间数据块大小不同

9.0

9.0

不同平台的数据库

10.0

10.0

4.3 实现表空间传输的方法

有两种方法实现表空间传输,一种是手工的方法,可以分别用exp/impexpdp/impdprman transport tablespace实现。其中exp/impexpdp/impdp工具操作方法类似,都需要传输的表空间只读,影响数据库的可用性;而rman transport tablespace是利用数据库的rman备份,不影响数据库的可用性。关于如何利用这些工具进行表空间传输的详细操作可以参阅oracle的文档。另一种方法使用oracle企业管理器图形界面的Transport Tablespaces向导。

5 Dbms_streams_tablespace_adm数据库包

oracle 10g提供了Dbms_streams_tablespace_adm包,可以高速地在数据库之间拷贝表空间,或从一个数据库向另外一个数据库移动表空间。这个包的实质是利用数据泵(data Pump. 可传输表空间(

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9599/viewspace-473002/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9599/viewspace-473002/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值