1概述

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

2Exp/imp导出/导入工具

2.1 Exp/imp导出/导入工具是最常用的oracle工具,它提供了一种在oracle数据库之间传输数据对象的简单方法,即使oracle数据库安装在不同的硬件或操作系统平台,如unix、linux和nt等操作系统平台。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.执行新数据库的全库备份,这样实现了数据库跨平台传输。

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

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

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

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

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

3.Expdp/impdp数据泵工具:

3.1Expdp/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.0DIRECTORY=dpump_dir1 DUMPFILE=emp.dmp NOLOGFILE=y接着,向当前数据库导入与oracle 10.0.0版本兼容的转储文件集,选择VERSION=LATEST。impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=exp.dmp TABLES=employeesVERSION=LATEST3.2Expdp/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.08.0

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

不同平台的数据库10.010.0

4.3实现表空间传输的方法

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

5Dbms_streams_tablespace_adm数据库包

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

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

oracle 数据库网络传输,Oracle数据库之间数据传输方法探讨相关推荐

  1. oracle增加网络服务,Oracle 配置监听和本地网络服务

    一.配置监听 在oracle的配置和移植工具中打开Net Configuration Assistant,然后点击下一步. 点击下一步,然后输入监听的名称点击下一步 点击下一步后如图 点击下一步如图 ...

  2. Oracle数据二进制传输,Oracle数据库插入二进制字段数据

    oracle数据库喜欢搞特殊,二进制字段数据不能直接插入,需先再该字段插入oracle函数返回的的初始数据,然后在查询更新该字段.下面以Blob字段类型为例: 1.插入初始数据 Class.forNa ...

  3. matlab与python通信_python和matlab之间数据传输方法

    转自链接:https://www.jianshu.com/p/8da7398fa889 1..mat文件 matlab和python间的数据传输一般是基于matlab的文件格式.mat,python中 ...

  4. Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例

    天萃荷净 Database Advanced Security,Oracle研究中心学习笔记:分享一篇关于Oracle数据库网络传输加密笔记,通过配置SQLNET.ora文件使网络传输加密即将客户端也 ...

  5. Oracle数据库网络详解

    数据库网络(监听) 1. 理解监听器 # 启动和关闭监听(oracle用户下执行) [oracle@kevin ~]$ lsnrctl start [oracle@kevin ~]$ lsnrctl ...

  6. oracle 数据库基础配置,Oracle数据库网络服务配置基础、SQL编程详解-Oracle

    Oracle数据库是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.Oracle数据库的主要内容包括:表空间.用户权限.四种约束等基础概念,DDL ...

  7. 直播预告丨Oracle数据库网络及存储技术详解-2022云和恩墨大讲堂

     文末有惊喜福利哟~ Oracle数据库网络及存储技术详解 点此" 预约 ",即刻报名↓ DBA需要掌握些什么?这是一个老生常谈的话题了.很多时候数据库出了问题,到底是数据库本身的 ...

  8. Oracle数据库网络连接模式

    目录 一.概述 1.1.专用模式 1.2.共享模式 1.3.监听器的特点 二.专有服务器配置 2.1.服务器端监听器listener 2.2.客户端 2.3.客户端申请链接的过程 2.4.ORACLE ...

  9. oracle数据库赋权_oracle数据库用户之间授权

    今天遇到一个数据库的问题: 系统数据库用户下创建了几个视图用于外部系统开发报表使用,当外部系统提取视图数据时,需要通过一个只能访问需要视图权限的用户,于是想到给他创建一个新的用户,并给这个用户分配只能 ...

最新文章

  1. python自动化从零开始_从零开始的自动化测试框架——Python篇
  2. 沟通篇:产品经理如何与UI进行沟通
  3. 苹果雪豹操作系统正式版_苹果文件泄密?3 款新 iPhone 正式命名曝光
  4. P1527 [国家集训队]矩阵乘法 整体二分 + 二维树状数组
  5. 面试经验分享|精华版
  6. ApacheCN PHP 译文集 20211101 更新
  7. Android 常用数据操作封装类案例
  8. Linux系统中运行jar包的四种方式
  9. .NET 指南:构造器的设计
  10. 页面加载完就执行的设置?
  11. Oracle数据库编译存储过程挂死问题解决办法
  12. C++ - Sodoku Killer(DFS) - 实现一个数独解算器
  13. Matlab机器学习之SVM工具箱
  14. t分布 u分布 卡方分布_t分布曲线和正太分布,和z分布,和卡方分布,和方差分析的f分布曲线有什么区别?...
  15. 程序员面试需要出示身份证和毕业证原件吗
  16. ps关于去除脸上的痘痘问题和美白问题
  17. Flutter支付宝授权登录
  18. 菜鸟和计算机高手的差别
  19. 第一天的学习内容----Excel自动化处理
  20. linux目录和文件

热门文章

  1. python np.random.seed直观程序理解
  2. Cocos 2dx - lua Layer注册点击事件
  3. 调查计算机对运算能力的影响,计算器对运算能力的影响
  4. halcon之测量和拟合
  5. 高德地图缩放比例问题解决
  6. 擦地机器人排行榜_十大扫地机器人品牌排行榜扫地机器人哪个牌子好
  7. iPhone轻松共享wifi密码给好友
  8. 送书 | 新书《Python量化金融编程从入门到精通》
  9. Windows优化大师已经成为“流氓大师”
  10. (C++题目)定义一个描述学生基本情况的类Student,数据成员包括姓名、学号、英语成绩和高数成绩;成员函数包括构造函数、析构函数、获取姓名、获取学号、求出平均成绩,以及显示各