程式執行結果之自動檢查

更新於 發佈於 閱讀時間約 9 分鐘

1.    問題:

資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。

 

2.    改善:

2.1 設計一執行檔,功能為打開備份程式執行後產生之紀錄檔(log file),檢查該log file 內是否有備份程式成功完成;若備份工作失敗,隨即自動寄出備份失敗之email,若有發現其他錯誤,亦於email上註明錯誤訊息,通知相關負責人員,以便可以盡快及時對應。

2.2 上述檢查log file之結果,不論成功或失敗均寫入一個檢查結果紀錄檔案內,該記錄檔案出力,可以當作日後稽查時,提供說明對備份工作之檢查證明。

2.3 上述檢查結果每日寫入紀錄檔案內,翌月時自動更改為以該月份命名之記錄檔檔名

2.4排程自動寄出email,含每日自動確認結果,及每月初一寄出上月份之月份確認表

 

3.方法:

  3.1設計bat 執行檔,讀取log file,若讀取之log檔內 沒有找到 "  successfully completed " ,表示備份失敗,隨後自動寄出JOB備份失敗之警告信email給負責人員

  3.2 確認log file檔名之日期是否正確?

  3.3 今日系統月份是否大於log file 檔名之月份,

      若是: 記錄檔名DMP_C.txt 改檔名為 xxx_YYYYMM.txt, 如”DMP_C_202403.txt”當作上月份之記錄檔案,並email 寄出上月份記錄之確認表。而原有DMP_C.txt因rename 後,已不存在,故當新的月份來時,會新增一txt檔,當作本月每日紀錄用 。

  3.4 自動寄信所需之參數檔,於Bat內依據當日執行狀況作成

  3.5 於Windows自動排程,設定為每日自動執行該bat檔

  3.6 bat檔, email自動寄信程式,自動寄信之參數檔,置放於同一目錄內

 

  4. 範例:

   4.1 bat 設計內容如下

set /a  Today = %date:~0,4%%date:~5,2%%date:~8,2%

if not exist G: (
net use G: \\10.XX.80.XX\e$\Datapump\XXX\Export\Dump /user:XXU\XXuser XX1234 /yes /persistent:NO
)
G:

rem ----STEP1 skip 6 log files, for getting the lastest F_Date log file
set r= NG
set logF=notfound log file
rem ----先跳開6筆較舊log,第七筆應最新,但若有重複Export場合,會取出第七筆以後最新log file

for /f "skip=6 delims=" %%A in ('dir /b /OD "G:\xxpack_XXX_XLIVE*.log" ') do (
set logF=%%A
CALL :FINDSucce %%A )

rem ----STEP 3 Today月份 GTR > LogFile 月份 ,then 寄出月份記錄確認表,及 rename to DMP_C_%logF:~17,6%.txt
D:
cd d:\XXX-IT\find_DMP_log
if %logF:~17,6% LSS 202008 (
pause ### ERROR lof file name : %logF:~17,6% is not normal
exit )
if %logF:~17,6% GTR a (
pause ### ERROR lof file name : %logF:~17,6% is not normal
exit )
if exist d:\XXX-IT\find_DMP_log\DMP_C_history\DMP_C_%logF:~17,6%.txt (
pause ### ERROR histoty month file DMP_C_%logF:~17,6%.txt is already exist
exit )

rem for 月份MAIL need apend 2, par records . for月份附檔 , echo. >> XXX.txt for換行
if %Today:~0,6% GTR %logF:~17,6% (
move DMP_C.txt d:\XXX-IT\find_DMP_log\DMP_C_history\
rename d:\XXX-IT\find_DMP_log\DMP_C_history\DMP_C.txt DMP_C_%logF:~17,6%.txt

type mail_par.txt > mail_par_WK.txt
echo. >> mail_par.txt
echo 2,D:\XXX-IT\find_DMP_log\DMP_C_history\DMP_C_%logF:~17,6%.txt >> mail_par.txt
CAll XXX_mail_ReadF.exe
type mail_par_WK.txt > mail_par.txt
)

rem ----STEP 4 出力DMP_C.txt。判斷log 是否成功? 失敗場合寄出 警告MAIL
rem for 警告MAIL need apend 0,,4 records , echo. >> X XX.txt for add new line to txt file
if %r% == OK (
echo %date% %time% DMP JOB OK, logFile= %logF% >> DMP_C.txt
) else (
echo %date% %time% DMP JOB NG, logFile= %logF% , need to check ! >> DMP_C.txt

type mail_par.txt > mail_par_WK.txt
echo. >> mail_par.txt
echo 0,[ Warning ] XXXPACK DB DMP job was unsuccessful-- sent >> mail_par.txt
echo 4,### ERROR--> logFile=%logF% is unsuccessful, 需調查! ### >> mail_par.txt
CAll XXX_mail_ReadF.exe
type mail_par_WK.txt > mail_par.txt
)
rem pause --4 final ---
exit

rem ----STEP2 findSTR of " successfully completed " in the lastest F_date log file
:FINDSucce
set r= NG
FOR /F " delims= tokens=1-13 " %%i in ('findstr /C:" successfully completed " "%logF%" ') do (
set r= OK )
exit /b %r% %logF% %errorlevel%


4.2 本例每日檢查紀錄檔出力之內容如下:


2024/2/24 週六 12:14:52.95 DMP JOB OK, logFile=LIVE_20240224.log 
2024/2/25 週日 12:22:23.60 DMP JOB NG, logFile= LIVE_20240225.log, need to confirm !      
2024/2/26 週一 12:14:52.95 DMP JOB OK, logFile=LIVE_20240226.log
2024/2/27 週二 12:14:50.75 DMP JOB OK, logFile=LIVE_20240227.log
2024/2/28 週三 12:17:26.31 DMP JOB OK, logFile=LIVE_20240228.log
raw-image

----------------recorded by linct-----------------

avatar-img
63會員
165內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
留言
avatar-img
留言分享你的想法!

































































linct的沙龍 的其他內容
新系統建構時,可考慮採購建置VM機器,DB機器,備份機器以及網路設備等硬體機器。
設計程式來讀取欲傳送訊息之參數txt檔案,再利用程式自動傳出訊息至LINE群組。能簡易使用於任何場合。
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
如何將LINE訊息自動傳出,利用curl工具
LINE 在台灣有許多人使用,是一天裡開啟次數最多的APP,是生活中最重要的社群平台。 但很多人不知道LINE官方有個免費推播訊息的服務LINE Notify
新系統建構時,可考慮採購建置VM機器,DB機器,備份機器以及網路設備等硬體機器。
設計程式來讀取欲傳送訊息之參數txt檔案,再利用程式自動傳出訊息至LINE群組。能簡易使用於任何場合。
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
如何將LINE訊息自動傳出,利用curl工具
LINE 在台灣有許多人使用,是一天裡開啟次數最多的APP,是生活中最重要的社群平台。 但很多人不知道LINE官方有個免費推播訊息的服務LINE Notify
你可能也想看
Google News 追蹤
Thumbnail
本文分享了一些實用的VBA優化技巧,幫助提升VBA程式碼的執行效率。包括避免重複計算、最小化與工作表的互動、選擇有效率的迴圈以及優化程式碼邏輯等建議。此外,文章還提到記憶體管理及效能分析工具的使用,讓您的VBA程式運行得更快、更流暢,提升整體工作效率。透過這些技巧,您將能夠編寫出更高效的VBA程式碼
Thumbnail
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
Thumbnail
有別於先前利用time模組做成裝飾器計算程式執行的時間,Python 標準庫中的timeit 模組是專門用來測量小段程式碼的執行時間。 [Python][裝飾器]計算函式(CT)處理時間 這篇文章將介紹如何使用 timeit.timeit() 函數,並提供一些範例來展示它的應用。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
可能包含敏感內容
計畫執行順利,但還不夠,還需要更多更多,目的逐漸明確,但再這樣下去的話⋯
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
Thumbnail
本文分享了一些實用的VBA優化技巧,幫助提升VBA程式碼的執行效率。包括避免重複計算、最小化與工作表的互動、選擇有效率的迴圈以及優化程式碼邏輯等建議。此外,文章還提到記憶體管理及效能分析工具的使用,讓您的VBA程式運行得更快、更流暢,提升整體工作效率。透過這些技巧,您將能夠編寫出更高效的VBA程式碼
Thumbnail
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
Thumbnail
有別於先前利用time模組做成裝飾器計算程式執行的時間,Python 標準庫中的timeit 模組是專門用來測量小段程式碼的執行時間。 [Python][裝飾器]計算函式(CT)處理時間 這篇文章將介紹如何使用 timeit.timeit() 函數,並提供一些範例來展示它的應用。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
可能包含敏感內容
計畫執行順利,但還不夠,還需要更多更多,目的逐漸明確,但再這樣下去的話⋯
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備