简单摘要:
1、内网系统出现故障需要排查 2、运维人员不熟悉数据库操作,没法通过连接数据库和执行SQL语句的方式排查数据库及数据是否正常
3、解决方案:编写一个bat脚本,运维人员双击运行即可。
原文链接:
http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=d861e977-87d1-4ac0-ab63-91dacb9ccc9e
背景说明:
车辆管理系统涉及2台服务器: 101:数据接收程序、应用 102:数据库 凌晨遇到定位数据接收不到的问题,需要排查原因和维护。 定位数据接收不到通常有几种原因: 1、数据接收程序宕机,需要重新启动该程序。(通常原因) 程序名:GPS-Server 进程名:VTS.exe 程序路径:D:\GPS\server\VTS.exe 2、移动网络故障,GPS定位数据不能回传 3、应用程序和数据库之间通信出问题,数据无法写入。 本文主要将bat脚本的作用和实现功能,问题排查和维护相关指引另外文章介绍
写BAT脚本的原因 1、系统出了问题需要维护,电话请求运维人员协助远程服务器并做重启服务操作。结果发现服务重启后,数据还是不能接收(因为原因2和3); 2、因为数据能否接收成功,我写了一个监控程序定时去扫数据库和告警的,定时程序运行有一定时间间隔,运维人员没法直接帮我看到数据是否接收成功,只能等监控程序通知; 3、这就有问题了,不能直接通过数据库确认数据是否接收,运维响应就滞后了 4、但运维人员不熟悉系统,没法要求运维人员懂oracle和表结构,通过电话协助方式去直接查表和数据。
解决办法 解决方法有多种:可以是完善监控程序代码;这里用的方案是写一个bat脚本,放在电脑桌面上辅助给运维人员执行。
效果
运维人员在双击bat文件,即可看到数据库的数据效果
实现步骤
1、在D:\Apps\Bats目录下编写sql脚本的sql文件GpsDbCheckSql.sql
GpsDbCheckSql.sql
-- 获取数据库当前时间 -- select to_char(sysdate,‘yyyy-MM-dd HH24:mi:ss‘) as "数据库当前时间" from dual; -- 查询vt_last_location_data (最新定位数据表) -- -- 获得最新的定位时间 -- select vid as "车辆id" , to_char(gpstime,‘yyyy-MM-dd HH24:mi:ss‘) as "定位数据时间" from (select * from vt_last_location_data where gpstime > sysdate - 1 order by gpstime desc ) where rownum < 6; -- 退出Oracle -- exit;
2、编写bat脚本 GpsDbCheck.bat
GpsDbCheck.bat
: 连接数据库,并执行SQL语句,判断是否有数据写入到db sqlplus gpsmisuser/******@HNAGPS @"D:\Apps\Bats\GpsDbCheckSql.sql" : 等待输入,退出cmd窗口 pause


