簡單摘要:
1、內網系統出現故障需要排查
2、運維人員不熟悉數據庫操作,沒法通過連接數據庫和執行SQL語句的方式排查數據庫及數據是否正常
3、解決方案:編寫一個bat腳本,運維人員雙擊運行即可。
原文鏈接:
背景說明:
車輛管理系統涉及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