[发明专利]一种异构环境中复制数据库数据的方法无效
申请号: | 200710115097.0 | 申请日: | 2007-12-11 |
公开(公告)号: | CN101187888A | 公开(公告)日: | 2008-05-28 |
发明(设计)人: | 王守昊;苑鸿剑 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F17/30 |
代理公司: | 济南信达专利事务所有限公司 | 代理人: | 姜明 |
地址: | 250014山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种在异构环境中实现数据库数据复制的方法,该方法是通过对源端数据库的日志进行分析,获取引起源端数据库变化的SQL语句,并把这些SQL语句按照事务进行组织,然后将这些组织好的SQL语句传输到目标端数据库,并在目标端数据库按照其在源端数据库执行的顺序来执行这些SQL语句,实现数据库数据的复制。该方法能够适应异构环境,对源端和目标端的存储设备、服务器、操作系统和数据库软件没有同构要求。该方法具有适用性好,占用系统资源和网络带宽资源少的优点。 | ||
搜索关键词: | 一种 环境 复制 数据库 数据 方法 | ||
【主权项】:
1.一种异构环境中复制数据库数据的方法,特征在于,通过对源端数据库的日志进行分析,获取引起源端数据库变化的SQL语句,并把这些SQL语句按照事务进行组织,然后将这些组织好的SQL语句传输到目标端数据库,并在目标端数据库按照其在源端数据库执行的顺序来执行这些SQL语句,实现数据库数据的复制,数据复制步骤如下:1)日志获取和分析:由日志分析模块实时读取源端数据库的控制文件,分析检查引起源端数据库改变的SQL语句执行,如果有,就将引起源端数据库改变的SQL语句保存在一个文件中;对数据的获取是通过安装在数据库源端的代理模块定时分析数据库重做日志来获取数据库源端的交易类型及数据的,代理通过定期检查数据库控制文件中记录的当前SCN号来判断源端数据库是否有新的交易产生,这样避免每次检都通过读取日志文件来判断是否有新的交易产生时造成的系统影响,在控制文件中确认有新的交易产生时,可以同时获得当前的重做日志组,以及最新日志在日志文件的最新位置,代理模块根据这些信息将上次获取时记录的日志位置与本次读取的最新位置之间的日志读取并加以分析,然后将这些数据保存在在线日志Cache文件中,等待下一步作交易合成处理;2)SQL语句的合成:将分析后得到的SQL语句进行重组,为了提高系统的可控制性、保证逻辑完整性、避免数据丢失,SQL语句按照事务进行组织,以保证只复制提交的交易SQL语句;3)操作的传输:在传输过程中数据在传输之前首先存入源端数据库的Cache,传输进程从Cache中按照先进先出的原则读取交易数据封装为TCP/IP数据包传送给目标端数据库的导入进程,在封装的数据包的包头部分描述了包的特征信息,在目标端数据库,导入进程在收到传输的交易数据包后,首先根据包头描述包的特征信息进行传输的合法性检查,判断是否传输完整,如果传输完整,则存入队列,接着由导入进程从队列中严格按照其在源端数据库的执行顺序装载交易信息;如果传输不完整,则给源端数据库导出进程发送一个重传请求;4)当源端数据库和目标端数据库为不同数据库品牌的数据库时,预先在代理上设置其数据库类型,当传输结束后在目标端进行SQL语句转换。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200710115097.0/,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置