欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windows的定时bat脚本

程序员文章站 2022-05-08 19:15:28
...

引言

之所以要写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的定时任务工具去设置