数据库实时同步技术解决方案_第1页
数据库实时同步技术解决方案_第2页
数据库实时同步技术解决方案_第3页
数据库实时同步技术解决方案_第4页
数据库实时同步技术解决方案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库实时同步技术解决方案数据库实时同步技术解决方案一、前言随着企业的不断进展,企业信息化的不断深入,企业内部存在着各种各样的异构软、硬件平台,形成了分布式异构数据源。当企业各应用系统间需要进展数据沟通时,其效率及准确性、准时性必定受到影响。为了便于信息资源的统一治理及综合利用,保障各业务部门的业务需求及协调工作,常常涉及到相关数据库数据实时同步处理。基于数据库的各类应用系统层出不穷,可能涉及到包括 ACCESS、SQLSERVER、ORACLE、DB2、MYSQL等数据库。目前国内外几家大型的数据库厂商提出的异构数据库复制方案主要有:Oracle的透亮网关技术,IBM的CCD表〔全都变化数据表〕方案,微软公司的出版者/订阅等方案。但由于上述系统致力于解决异构数据库间简洁的交互操作,过于大而全而且费用较高,并不符合一些中小企业的实际需求。本文结合企业的实际应用实践阅历,依据不同的应用类型,给出了相应的数据库实时同步应用的具体解决方案,主要包括:SQLSERVERSQLSERVER同步方案ORACLE到SQLSERVERACCESS到SQLSERVER/ORACLE同步方案二、异构数据库异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透亮访问,每个数据库系统在参与异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成局部具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性把握和安全性把握。异构数据库的异构性主要表达在以下几个方面:1、计算机体系构造的异构各数据库可以分别运行在大型机、小型机、工作站、PC嵌入式系统中。2、根底操作系统的异构各个数据库系统的根底操作系统可以是 Unix、WindowsNT、Linux等。3、DMBS可以是同为关系型数据库系统的Oracle、SQLServer等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面对对象,函数型数据库共同组成一个异构数据库系统。三、数据库同步技术对于异构数据库系统,实现数据共享应当到达两点:一是实现数据库转换;二是实现数据的透亮访问。所谓透亮访问,就是在异构数据系统中用户可以将异构分布式数据库系统看成一般的分布式数据库系统,用自己生疏的数据处理语言去访问数据库,如同访问一个数据库系统一样。但目前还没有一种广泛使用的数据定义模型和数据查询语言,实现数据的透亮访问可以承受多对一转换、双向的中间件等技术。开放式数据库互连〔OpenDataBaseConnectivityODBC〕是一种用来在相关或不相关的数据库治理系统中存取数据的标准应用程序接口〔API〕。ODBC为应用程序供给了一套高层调用接口标准和基于动态链接库的运行支持环境。目前,常用的数据库应用开发的前端工具如PowerBuilder、Delphi等都通过开放数据库互联(ODBC)接口来连接各种数据库系统。而多数数据库治理系统〔如: Oracle、Sybase、SQLServer等〕都供给了相应的ODBC驱动程序,使数据库系统具有很好的开放性。ODBC接口的最大优点是其互操作力气,抱负状况下,每个驱动程序和数据源应支持完全一样的ODBC函数调用和SQL语句,使得ODBC应用程序可以操作全部的数据库系统。然而,实际上不同的数据库对SQL语法的支持程度各不一样,因此,ODBC标准定义了驱动程序的全都性级别,ODBCAPI的全都性确定了应用程序所能调用的ODBC函数种类。数据库同步是在两个不同的数据库之间进展数据交换,以使得任何一个数据库的转变,会以同样的方式消灭在另一个数据库里。数据库同步可以是单向的,也可以是双向的。单向同步也叫主从同步,也就是说,其中的一个数据库是主数据库,另一个数据库是从数据库。只有主数据库的转变可以被复制到从数据库里去,从数据库是被动的。使用数据库同步技术,用户可以将一份数据公布到多台效劳器上,从而使不同的效劳器用户都可以在权限的许可的范围内共享这份数据。同步技术可以确保分布在不同地点的数据自动同步更,从而保证数据的全都性。1数据库同步示意图目前国内外几家大型的数据库厂商提出的异构数据库复制方案主要有:Oracle的透亮网关技术,IBM的CCD表〔全都变化数据表〕方案,微软公司的出版者/订阅者方案。国外的如土耳其中东科技大学的MIND系统,美国密歇根-迪尔波恩大学、斯坦福大学的TSUNMMIS工程,国内的如中关村科技软件、华中科技大学的Panorama系统都有过类似系统的争论。但是由于上述系统致力于解决异构数据库间简洁的交互操作,大而全,并不符合一些中小企业IBM的CCDCD表占用资源较多维护费用昂扬,微软公司的出版者/订阅者方案只能在NT运行等。而其它的系统大多都存在此类问题。四、局域网数据同步解决方案(一).SQLSERVERSQLSERVERSQLSERVER同类数据库之间实现同步,可直接参照Microsoft的公布/订阅模式。具体方法步骤如下:SQL出版效劳器、订阅效劳器、分发效劳器、出版物、文章。SQLSQLSERVER主要承受出版物、订阅的方式来处理复制。源数据所在的效劳器是出版效劳器,负责发表数据。出版效劳器把要发表的数据的全部转变状况的拷贝复制到分发效劳器,分发效劳器包含有一个分发数据库,可接收数据的全部转变,并保存这些转变,再把这些改变分发给订阅效劳器。SQLSERVERSQLSERVER供给了三种复制技术,分别是:1、快照复制/2、事务复制/3、合并复制。公布/订阅方案第一步:来配置出版效劳器1、选中指定[效劳器]节点。2、从[工具]下拉菜单的[复制]子菜单中选择[公布、订阅效劳器和分发]命令。3、系统弹出一个对话框点[下一步]然后看着提示始终操作到完成。4、当完成了出版效劳器的设置以后系统会为该效劳器的树形构造中添加一个复制监视器。同时也生成一个分发数据库(distribution)。其次步:创立出版物1、选中指定的效劳器。2、从[工具]菜单的[复制]子菜单中选择[创立和治理公布]命令。此时系统会弹出一个对话框。3、选择要创立出版物的数据库,然后单击[创立公布]。4、在[创立公布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照公布(其他两个大家可以去看看帮助)。5、单击[下一步]系统要求指定可以订阅该公布的数据库效劳器类型,SQLSERVER允许在不同的数据库如ORACLE或ACCESS之间进展数据复制。但是在这里我们选择运行“SQLSERVER2023“的数据库效劳器。6、单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表。7、然后[下一步]直到操作完成。当完成出版物的创立后创立出版物的数据库也就变成了一个共享数据库。第三步:设计订阅1、选中指定的订阅效劳器。2、从[工具]下拉菜单中选择[复制]子菜单的[恳求订阅]。3、依据单击[下一步]操作直到系统会提示检查SQLSERVER代理效劳的运行状态,执行复制操作的前提条件是SQLSERVER代理效劳必需已经启动。4、单击[完成]。完成订阅操作。完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。开放出版服务器下面的复制——公布内容——右键公布内容——属性——击活——状态然后点马上运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是推断复制是否成功了翻开。C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。假设不确定是否创立成功,翻开你的数据库看在订阅的效劳器的指定订阅数据库下看是否能够看到刚刚所公布的表。(二)、OracleSQLServer不同数据库平台的互连一般称之为数据库的异构效劳,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQLSERVER里面叫做LINKEDSERVER,通过ODBC实现与其它数据库的互联。而ORACLE实现异构效劳的技术叫做透亮网关TransparentGateway,固然之前ORACLE还承受过通用连接技术。目前ORACLE利用透亮网关可以实现和SQLSERVER、SYBASE、DB2等多种数据库的互联。透亮网关的体系构造也很简洁,在ORACLE和SQLERVER之间使用ORACLE透亮网关效劳器实现互连互通,其中透亮网关效劳器可以与ORACLE或SQLSERVER数据库在同一台主机上,也可以是在独立的一台主机上。测试步骤如下:、在SQLSERVER数据库上创立测试账号和表数据库:PUBScyx,createtablet(cchar(10));、测试用数据库和透亮网关在同一台机器上,透亮网关在oracle默认安装时是担忧装的,所以假设你想用需要选择这一选项。、安装透明网关 forsqlserver 的软件后,可以在$ORACLE_HOMEtg4msql$ORACLE_HOME/tg4msql/admin/inittg4msql.sql文件确认这一 行 正 确 :HS_FDS_CONNECT_INFO=“SERVER=IP;DATABASE=pubs“server上的listener.ora,在SID_LIST以下内容:(SID_NAME=tg4msql)#SID(ORACLE_HOME=c:)(PROGRAM=tg4msql)、在oracleserver上的tnsnames.ora中参与到透亮网关的tnsname,内容如下:sql2k=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.16.98.16)(PORT=1521))#此处HOSTSERVER)(CONNECT_DATA=(SID=tg4msql))SIDSERVERSID(HS=OK))、修改ORACLESERVER的初始化参数,将global_namesfalseGLOBALNAME。然后重起数据库。ORACLESERVERDBLINK以上测试实现通过透亮网关来访问sqlserver的数据,只需要留意ORACLE[留意事项]:1、OracleForSQLServerUNIX下无法实现,目前只支持WIN;缘由很简洁,SQLServer本身不支持UNIX,所以OracleUNIXSQLServer。2、OracleForSYBASE等有UNIXUNIX3、Oracle透亮网关软件在Oracle8i时是需要花钱另买的,大约1万$;到Oracle9i时是作为数据库的一个组件免费公布的,安装时在组件种选择即可。4、针对我们的实际应用,假设有需要实现Oracle到SQLServer的互连,我们需要另外用一台WIN下的Oracle9i来做透亮网关效劳UNIXOracleSQLServer。5SQL来实现。6、各数据库中特别的数据类型,需要在程序中实现转换,应尽量避开使用无法转换的数据类型。(三)、OracleSQLServer尽管透亮网关技术实现了OQACLE与SQLSERVER的互连,但在同步应用中不便于把握同步数据的要求,特别是ORACEL与SQLSERVER存在数据类型转换时存在困难。以下给出同步数据代码样例如下:为实现ORACLE到SQLSERVER的数据同步,首先需在ORACLE中建一需同步的数据视图,以便于操作访问。1、在ORACLE中创立需同步的数据视图2、配置局域网客户端建立tnsname.ora文件,使其能访问远程ORACLE3、在SQLSERVERORACLE视图同构的数据库表4、定义同步方式及步骤5VBSEXE文件,并将EXE程序制作成windows效劳,以便在后台运行。6、以下是ORACLE到SQLSERVER数据同步主要VBS例如代码;==========oracleTOsqlserver数据同步脚本=====================检测远程oracle效劳器网络是否连通,通则连接;连接oracle;连接sqlserver;取Ncklsz取oracle的dataset;notinsqlserver中的inserttosqlserver;日志写入txt7天的日志;============================================================DoWhileTruedimf,txtfile----创立日志文件对象,判定7天前的log文件是否存在,存在则删除!----Setf=CreateObject(“Scripting.FileSystemObject“)settxtfile=f.opentextfile(“D:\wxjl\oracleTOsqlserver\“&date&“.txt“,8,True)If

f.FileExists(“D:\wxjl\oracleTOsqlserver\“&date-7&“.txt“)Thenf.DeleteFile(“D:\wxjl\oracleTOsqlserver\“&date-7&“.txt“)endif------pingoracle效劳器,连通-->则连接oracle/sqlserver------------ip=“10.98.51.82“SetFileSys=CreateObject(“Scripting.FileSystemObject“)SetWShShell=CreateObject(“WScript.Shell“)RetCode=WShShell.Run(“ping-n1“&IP,0,True)ifRetCode=0Thentxtfile.write(date&““&time&“---pinganywherehostok!“)---------测试连接远程oracle----(OraOLEDB.Oracle.1/MSDAORA.1)conn_ora=“Provider=OraOLEDB.Oracle.1;PersistSecurityInfo=True;UserID=qyselect;Password=qy08select12;DataSource=hydata“setrs_ora=createobject(“adodb.recordset“)sql_ora=“select*fromHybjsb.V_QY_CKLSZ“Err.clearOnErrorResumeNext---出错不显示,执行下一条rs_ora.opensql_ora,conn_ora,1,1rs_ora.closeIfErr.Number=0Thentxtfile.writeline(“---connectanywheredatabasesuccessful!sqlserver,insertsqlserverconn_local=“PROVIDER=SQLOLEDB;DATASOURCE=local;UID=sa;PWD=sa“createobject(“adodb.recordset“)--更30Nday=30dept=“卷包车间“DB=“wxjl_1bjb“callxcopy

set rs_local =elsetxtfile.writeline(“---*****远程数据库连接失败!*****“)endifelsetxtfile.writeline(date&““&time&“---#####网络故障#######“)endifreleaseconnectionconn_orareleaseconnectionconn_localsetf=nothingsettxtfile=nothingsetrs_local=nothingsetrs_ora=nothing5WScript.Sleep300000Loop 数据同步过程 --Subxcopydimrecordstemp是否存在,存在则删除sql_local=“select count(1) as rec from“&DB&“.dbo.sysobjectswherename=tempandxtype=U“rs_local.opensql_local,conn_local,1,1records=rs_local(“rec“)rs_local.closeifrecords>0thensql_local=“droptable“&DB&“.dbo.temp“rs_local.opensql_local,conn_local,1,1endifNdaytempsql_local=“SELECT * INTO “&DB&“.dbo.temp FROMOPENROWSET(MSDAORA.1,hydata;qyselect;qy08select12,SELECT*FROMHybjsb.V_QY_CKLSZ)“sql_local=sq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论