编写一个BAT脚本协助运维人员遇到问题时候调测数据库是否有效连接成功的操作攻略

简单摘要:

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检查GPS系统定位数据的桌面效果

  运维人员在双击bat文件,即可看到数据库的数据效果  

bat检查GPS系统定位数据的执行效果

 
实现步骤   

bat脚本和sql语句的存放目录

  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