水情信息交换系统原理及常见故障分析处理
2014-12-12司存友崔彦萍
司存友 刘 淼 崔彦萍
(江苏省水文水资源勘测局,江苏 南京 210029)
1 概述
根据水利部办公厅《关于做好水情信息交换有关工作的通知》(办汛﹝2011〕119 号)文件精神,2011年江苏省水文水资源勘测局在全省范围内开展了《实时雨水情数据库表结构与标识符》(SL323-2011)贯标和水情信息交换系统的试运行工作。水情信息交换系统不再采用《水情信息编码标准》(SL330-2005)进行数据交换,而是直接基于数据库进行水情数据交换。由于省去了编码、译电过程,交换效率明显提升,故障率大为减少。
2011年6月以来,全省13 个地市水文分局和6 个厅属工程管理处全部采用水情信息交换系统传输水情数据。系统运行两年多以来,总体稳定,为防汛防旱提供了大量、实时的雨水情数据。
2 水情交换系统原理
水情信息交换系统利用Web Service、数据库触发器、自定义控制表等技术,建立了基于不同数据库平台之间的水情数据交换机制,实现了网络内任何节点水情基础数据、实时数据、统计数据、预报数据的可靠快速传输。系统采用微软的DotNet FrameWork、Spring.net 技术框架,实现程序层次结构的清晰分割,同时,采用Ibatis.net 实现数据层访问,采用Web Service 技术实现远程数据传输,利用Ajax 技术实现良好的界面交互效果。软件系统架构采用了MVC 三层结构设计,层次和逻辑清晰,降低了系统开发和维护的成本,并提高了系统的可扩展性。
2.1 网络拓扑结构
系统运行环境的网络设备主要由应用服务器、数据库服务器、监控终端组成。系统应用服务器在运行数据轮询程序时,可同时通过IIS 提供数据接收Web 服务。通过软件的配置,信息交换节点可以同时作为发送节点和接收节点(见图1)。
2.2 系统架构
交换系统采用分层架构,数据层基于实时雨水情数据库,应用层核心模块主要包括:数据轮询模块、数据发送模块、数据接收模块、数据入库模块等(见图2)。
2.3 数据交换处理过程
数据详细交换流程如下(见图3):
(1)外部系统对发送节点实时雨水情数据库中基本信息类、实时信息类、预报信息类、统计信息类的数据进行插入(修改、删除)操作时,启动水情数据库相关表的触发器;
(2)触发器将发生变动的数据记录保存到待交换信息记录表中;
(3)系统定时对待交换信息记录表进行轮询检查,发现有待发送数据后,根据系统设置的转发关系,为各接收单位生成相应的数据文件,并启动发送模块;
(4)发送模块负责把数据文件分别发送给各接收节点;
图1 系统网络拓扑结构图
图2 水情信息交换系统架构图
图3 数据交换流程图
(5)接收节点通过Web Service 接口,接收上传的文件,并启动入库模块;
(6)入库模块负责解读数据文件,并把数据记录插入到已接收信息记录表中,同时,插入(修改、删除)相应的基本类、实时类、预报类和统计类信息。
2.4 目录结构
系统安装后,文件目录组成如图4 所示。
2.5 文件格式
2.5.1 文件数据格式
文件中每行数据对应一条【待交换信息表】的记录,每行数据的格式如图5 所示。
2.5.2 发送文件名命名规则
SEND_YYYYMMDDHHMMSS_###.TXT
SEND_:固定前缀
YYYYMMDDHHMMSS:文件生成时间
###:分割文件编号
2.5.3 接收自动上传文件名命名规则
RECEIVE_发送单位代码_上传文件名.TXT
RECEIVE_:固定前缀
上传文件名:发送方本地的文件名称(系统自动生成)
2.6 核心交换控制表
2.6.1 交换单位信息表
用于存储各交换单位的基本信息,主要包括:单位代码、单位名称、交换类型、IP 地址、端口号、服务名、是否启动交换等。
2.6.2 交换站点信息表
用于存储对外交换信息的测站的相关信息,主要包括:单位代码、测站编码等。
2.6.3 交换表单信息表
用于存储对外交换信息表单的相关信息,主要包括:单位代码、表标识、是否启动交换等。
2.6.4 待发送信息记录表
用于记录待发送的水情信息,数据进入水情库后,通过触发器生成的待发送数据进入此表。主要包括:发送流水号、测站编码、表标识、数据时间、扩展关键字、操作类型、交换信息、轮询状态等。
2.6.5 已处理信息记录表
图4 文件目录组成
图5 每行数据格式
用于记录已经轮询处理过的水情信息,主要包括:发送流水号、测站编码、表标识、数据时间、扩展关键字、操作类型、交换信息、时间戳等。
2.6.6 发送文件信息表
用于存储信息交换发送文件的相关信息,主要包括:发送文件编号、单位代码、发送类型、发送状态、发送文件名、发送时间、发送次数、错误行号等。
2.6.7 信息配发记录表
用于记录已处理信息和接收信息单位之间的配发关系,主要包括:单位代码、发送流水号、发送文件编号、数据时间、发送状态、统计标记等。
2.6.8 接收文件信息表
用于存储信息交换接收文件的相关信息,主要包括:接收文件编号、单位代码、接收类型、接收状态、接收文件名、接收时间等。
2.6.9 接收信息记录表
用于记录信息交换接收到的水情信息,主要包括:接收流水号、接收文件编号、单位代码、发送流水号、测站编码、表标识、数据时间、扩展关键字、操作类型、交换信息、入库状态、入库时间、错误信息、人工处理时间、统计标记等。
3 常见故障处理
3.1 系统不能相连
正常网络相通的情况下,系统不能相连的原因多数是交换单位相关信息配置错误。某些水情中心因为服务器故障,更换了IP 地址、端口号、密码等信息,而又未通知相关分中心会导致不能相连。另外,各单位的“ISSTARTS”控制启用标识未打开(设置成“0”),也会造成不能相连。发生此类故障时应重点检查ST_INSTCD_E 配置表内容。
3.2 信息不能发送
交换系统界面在一切正常的状态下,仍然出现某些信息不能发送的情况,一般为交换控制表配置错误,以及触发器出现逻辑错误等。
3.2.1 配置错误
报汛数据不能交换的主要原因可能是配置错误。
一是站点漏配。由于交换站点特别多,如果管理人员不细心而漏配了站点,就会导致该站点所有表项信息不能报送,可以在ST_STCD_E 表里对某单位的报送站点情况进行详细检查。
二是发送内容配置错误。水情数据库共有基本信息类、实时类、统计类、预报类4 大类共91 张表项水情信息,所有需发送的表项信息全部配置在ST_TABLE_E 表里,如果漏配某个表项信息,就会导致该表项所有站点信息均不能发送。
三是“ST_TABLE_E ISSTARTS”启用开关未打开,如需发送,应配置为“1”。
3.2.2 触发器逻辑问题
触发器是产生数据交换最原始的动力,任何进入水情表项的数据都是通过触发器生成待发送信息,所以,触发器本身逻辑错误或者触发器被误删,都会造成相关表项内容不能正确发送数据。如:遥测小时时段雨量为零,或日雨量不能发送,就是雨量触发器本身逻辑问题所致。经过降雨量触发器逻辑修正,问题可得以解决。
3.2.3 数据库故障
由于各分中心数据库维护力量较为薄弱,疏于对数据库性能进行优化,导致各类数据库发生故障,从而影响了水情数据交换。一般故障是因数据库空间暴满、硬盘损坏、核心配置参数被误操作等造成,这就要求管理人员应做好数据库日常备份和维护工作。
3.3 循环发送
主要原因是A 分中心代发B 中心站点信息,而省中心又将B 中心站点信息发给了A 分中心,导致循环往复发送,严重消耗系统资源。如遇此种情况,省中心应将发给A 分中心的所有B 中心站点信息删除,待B 分中心恢复后,重新配置给A 分中心。
3.4 收发异常缓慢
水情数据交换缓慢,多为Oracle数据性能故障引起。主要原因是:信息配发记录表、已处理信息记录表、接收文件信息表等控制表信息记录条数过大(几百万条),引起性能故障。处理方法:停止交换系统、IIS 服务、Oracle 数据库服务,重构记录条数过大的表(先建新表,然后移动旧表数据,最后删除旧表),释放空间。
3.5 Oracle 不能登录
3.5.1 密码问题
一是密码过期。Oracle 安装后,在运行过程中,不少单位出现了密码过期不能登录的问题。处理方法:将概要文件(Dba_profiles)的密码有效期由默认的180 天修改为“无限制”。
二是密码遗忘。管理员粗心而忘记数据库密码的事情常有发生。处理方法:通过操作系统超级用户登录后,解除密码锁定,然后重新设置密码。
3.5.2 Oracle 配置文件被篡改
通过Tnsping 数据库地址,报错:TNS-12535操作超时,或ORA-12541 无监听程序,或TNS-01155在LISTENER.ORA 中指定的SID_LIST_LISTENER参数不正确等。这些错误一般是三个配置文件Listener.ora、Sqlnet.orq、Tnsnames.ora 被人为错误篡改造成的。处理方法:详细检查SID_NAME、ORACLE_HOME 等信息是否正确。另外,管理员更改服务器主机名或主机IP 地址时,要修改相关数据库配置信息,否则会导致数据库不能访问。
3.5.3 多个数据库实例
由于反复安装,会导致多个Oracle实例,不仅影响了系统性能,而且导致管理者混淆。处理方法:删除无用的实例。
3.6 Oracle 登录异常缓慢
个别分中心登录数据库时异常缓慢,Tnsping ip 速度很慢,或失败,或报Listener 未启(实际是启动的),登录数据库需7 min 以上;第一个SQL 执行很慢,但其后执行SQL 速度正常。经仔细排查,发现是因Listener.log 文件过大(4G 以上)导致。处理步骤:停止Oracle 服务进程,删除Listener.log 文件。另外,也可以观察一下Sqlnet.log 大小。
3.7 IIS 故障
3.7.1 文件过多过大导致磁盘空间溢出
在inetpublogsLogFilesW3SVC1目录下,IIS 每天产生“U_EX+日期.log”文件。如果不及时作删除处理,会产生大量的日志文件,导致C 盘空间暴满,IIS 无法正常运转。
3.7.2 Asp.net 损坏导致交换系统无法启动
Asp.net 损坏,会导致交换系统出现“无法连接到Web Service,请重新连接测试”等报错信息。处理办法:重新安装Asp.net,并通过“Aspnet_regiis-i ”命令进行重新注册。
3.8 收发文件过多
系统每天产生大量的收发文件,其特点是单个文件小、文件数量多,如果不及时处理,时间久了会造成磁盘性能下降或占满磁盘空间,进而导致系统运行缓慢或不能运行的故障。处理办法:按各单位目录,定期删除过期收发文件。
4 结束语
软件的特点就是其正确性无法自身证明,软件代码或多或少都存在一些缺陷或隐患,在生产运行中就会发生各种各样的故障。作为管理人员,首先必须熟悉交换系统的原理和数据流程及重要控制的表结构内容,才能通过分析故障表象以及数据流转环节,有效地查找问题、解决问题。其次,要加强日常管理,如:编制存储过程,自动清除主要控制表项过大的记录;制作系统脚本,通过计划任务删除过期的收发文件,以保障系统运行足够的空间,并定期进行数据库性能优化。另外,要做好应急备份交换系统,在复杂故障短时间内不能解决时,可启用备份交换系统,以保证报汛数据的时效性和完整性,为防汛防旱提供基础数据保障。