软件运行网络环境:局域网中两台机器,其中只有一台是主控机,一台副控机数据:数据库为Access,主控机实时的从串口采集数据,数据量大概10000/日实现:在另一台机器死机、掉电,串口断开时,由另一台副控机接管串口发来的数据并处理,要求两台机器的数据要保持一致,即当一台机是主机时,另一台机器在接管之前要尽可能的与出问题的主机的数据一致。我的思路:为每条要同步的记录增加一个时间戳的字段,每隔5秒定时从主机把最新数据更新到这副控机,获取最新数据时候时是通过访问局域网中另一台机器的Access实现。这样当判断到另一台主机出问题时,这台机器转为主机,继续接收数据,当出问题的那台机器正常时,也通过上述方式获取最新数据!请大家提建议。

解决方案 »

  1.   

    这个问题不应当要我们的软件来解决,这个应当是硬件供应商的问题,
    别把什么问题都拉来软件解决,增加程序的不必要的开支,
    我觉得你可以去找IBM服务提供商,他们有很好的双机热备份方案,
    从硬件的角度解决这个问题了.
      

  2.   

    问IBM也没用~~~
    我们公司的双击热贝最后还是我们自己搞的
     双机容错的实现  1. 操作系统的安装  我们用A机表示数据库服务器,用B机表示备份数据库服务器。首先在物理上将所需硬件设备连接好,分别在各自服务器上安装Windows NT Server 4.0操作系统及补丁包等。然后,进入磁盘管理器,将磁盘阵列划分为2个逻辑盘D和E,此时2台服务器都可访问磁盘阵列。  2.Oracle数据库的安装  先关闭B机,在A机上安装Oracle数据库,安装路径默认为D盘,归档日志放在E盘。安装完毕后,将Oracle的3个服务(此处SID为ORCL,所以3个服务就是OracleServiceORCL、OracleStartORCL和OracleTNSlistener)的启动方式改为手动并将此3个服务停止。注意: 改为手动的目的是为了让这3个服务由双机容错软件来启动,而不是由操作系统启动。  然后,关闭A机,启动B机,格式化D盘,将刚刚由A机建立在磁盘阵列上的Oracle目录也格式化掉; 在B机上安装Oracle数据库,安装路径默认为D盘,安装完毕,同样将Oracle的3个服务的启动方式改为手动并停止3个服务。  双机上安装Oracle的实质就是将Oracle系统分别装在2台服务器上,而数据只存储在磁盘阵列上。  3.双机容错软件的安装及双机容错环境的建立  双机容错软件的安装非常简单,只需启动A机和B机,在2台服务器上分别安装该软件即可。建立双机容错环境是将磁盘阵列上的D盘和E盘以及Oracle 的3个服务交由双机容错软件控制,并由双机容错软件进行切换。  在双机容错软件SLHA的"Configuration"选项中将数据库服务器设为Active状态,即平时正常工作状态时,此时数据库服务器工作,备份服务器等待。当A机Active时,只有A机可以访问磁盘阵列,B机不能访问磁盘阵列。此时,Oracle数据库服务器实际上是A机,A机的IP地址就是Active IP Address,同时A机的主机名为Active Host Name; 当A机因故不能工作时,A机的状态会被"心跳线"侦测到,这时B机开始切换到Active状态,接管磁盘阵列,此时的Oracle数据库服务器改为B机,B机的IP地址就是Active IP Address,同时B机的主机名为Active Host Name。上述操作均由系统自动完成,实践证明切换所需的时间很快,对客户端的影响很小。  需要注意的问题  1.当在A机安装完Oracle数据库后在B机安装Oracle数据库时,一定要先将磁盘阵列D盘格式化,而不是只将D盘中已由A机安装的Oracle数据库删除,否则可能会出现意想不到的错误,例如Oracle侦听服务失败等;  2.最终安装好Oracle数据库后,要对D:\Oracle\Orant\network\Admin\ Listener.ora文件进行修改,其中Server名称一定要改为Active host name Alias,如不进行修改将使客户端的Oracle数据库用户无法连接到Oracle数据库中。  3.在Hosts文件中增加一条记录,使Active IP Address和Active Host Name相互对应,这样系统就会自动起到解析作用。Hosts文件位于c:\Winnt\ system32\drivers\etc目录下。  4.要注意不到万不得已,不要强行切换,避免产生数据错误。如必须对双机进行切换,可先进入Svrmgr Oracle服务器控制台,用Shutdown命令关闭Oracle数据库,再进行切换。  双机容错的原理  2台服务器共享一个外部存储设备,通过心跳检测的方法监听对方的工作状态,当一台服务器因为某种原因不能提供相应服务时,另一台服务器将启动相应服务功能,使主服务器提供的应用继续运行。  2台服务器安装相同的操作系统(硬件配置不必相同),如Windows NT Server 4.0,每台服务器安装2块网卡。服务器的一块网卡连接交换机,与局域网相连(即图2中Public Net); 另一块网卡和对方服务器的一块网卡相连,构成Private Net; 同时2台服务器由串口线相连,2台服务器间相连的串口线和服务器之间的RJ-45网线共同构成2台服务器之间的"心跳线"。2台服务器就是通过心跳线来互相监听对方工作状态的。注意: 同时采用网线和串口线组成"心跳线"的目的是为了确保"心跳线"的冗余。图2中的Public Drives(即双机共享磁盘阵列)是2台服务器都可以访问的磁盘,它实际上是一台磁盘阵列柜,由六块SCSI硬盘组成。磁盘阵列通过SCSI电缆分别连向2台服务器。2台服务器共用一个Active IP地址和Active Host Name。当某台服务器Active(即激活)时,Active IP Address和Active Host Name就指向那台服务器。  双机环境下的Oracle数据库机理  Oracle数据库安装在磁盘阵列上,2台服务器都可以访问它,但不能同时访问。Oracle Server for NT主要提供3个服务:OracleServiceSID、OracleStartSID和OracleTNSlistener。在数据库服务器正常工作时,由数据库服务器控制磁盘阵列柜,此时只有该服务器可以访问磁盘阵列,该服务器上的Oracle服务处于启动(Active)状态,此时该服务器就扮演Active Server的角色,备份服务器处于等待(Standby)状态,即图2中Backup Server。  当数据库服务器发生故障不能工作时,双机容错系统会检测到数据库服务器的状态,从而使备份服务器自动激活,接管磁盘阵列并自动启动Oracle的3个服务,而对于客户端来说,只经历一个短暂的服务器重启过程,访问的数据仍是磁盘阵列中的数据。  注意: 是双机容错软件而不是操作系统来控制Oracle 的启动和停止,即由双机容错软件来控制这3个Oracle服务的启动和停止,实现Oracle数据库在双机之间的切换。