windows的定时bat脚本

引言

之所以要写windos bat定时脚本,是因为oracle ogg方案中extract莫名的进程夯住,本人才疏,解决不掉。也不能去买oracle的服务

所以,解决办法是定时的检测进程是否ok,如果进程夯住,就重启extract。

由于oracle使用的系统都是windows service,所以自然是使用bat,并没有使用power shell

开始

extract进程莫名夯住,手动解决办法是执行kill extract,并且start extract, brreset

那么,我们就基于手动解决问题的思路,去实现自动定时去检测进程,基本的操作步骤如下:

  • 源数据库中新增一条数据
  • 等待一段时间,查询目标库中是否数据新增
  • 如果数据新增了,那么表示extract进程是ok,只删除源库中新增的数据
  • 如果数据没有新增,表示extract进程夯住了,那么需要执行下一步
  • kill extract进程
  • start extract进程
  • 启动成功后,删除源端新增的数据

脚本的实现

@echo off
set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo [%date%][%time%]:insert test_data in t_user>>%today%_log.txt
D:\app\Administrator\product\11.2.0\dbhome_2\BIN\sqlplus.exe <oracle_user>/<oracle_password>@<oracle_instance> @insert.sql
timeout /t 40 /nobreak > null
D:\app\Administrator\product\11.2.0\dbhome_2\BIN\sqlplus.exe <oracle_user>/<oracle_password>@<oracle_instance> @select.sql > result.txt
set /p result=<result.txt
for /F %%i in (result.txt) do (
    if "%%i"=="extatest"  (
        echo [%date%][%time%]:ogg is ok, will delete test_data.>>%today%_log.txt
        D:\app\Administrator\product\11.2.0\dbhome_2\BIN\sqlplus.exe <oracle_user>/<oracle_password>@<oracle_instance> @delete.sql
        echo [%date%][%time%]:delete test_data sucessed.>>%today%_log.txt
        exit
    )
)
echo [%date%][%time%]:will kill ogg extract process.>>%today%_log.txt
echo obey D:\script\ogg\kill.txt | D:\app\Administrator\product\12.1.2\oggcore_1\ggsci
echo [%date%][%time%]:kill ogg extract process sucessed.>>%today%_log.txt
echo [%date%][%time%]:will start ogg extract process.>>%today%_log.txt
echo obey D:\script\ogg\start.txt | D:\app\Administrator\product\12.1.2\oggcore_1\ggsci
echo [%date%][%time%]:start ogg extract process sucessed.>>%today%_log.txt
echo [%date%][%time%]:will delete ogg test_data.>>%today%_log.txt
D:\app\Administrator\product\11.2.0\dbhome_2\BIN\sqlplus.exe <oracle_user>/<oracle_password>@<oracle_instance> @delete.sql
echo [%date%][%time%]:delete ogg test_data.>>%today%_log.txt
exit

其中需要注意*.sql文件表示操作oracle的语句

定时任务

使用windows的定时任务工具去设置

推荐阅读更多精彩内容