Oracle服务自动启动bach文件

时间:2016-12-09 07:49:22

标签: batch-file service

我的应用服务器上运行了6个Java服务和1个Oracle服务。 RAM已满时Oracle服务停止。当Oracle服务停止时,我需要一个批处理文件自动运行。

但是应该连续检查这个批处理文件。但我不知道批处理文件是如何创建的。

Windows Server任务管理器:

windows server task manager

1 个答案:

答案 0 :(得分:0)

您可以创建一个在事件时触发的任务,但将事件配置为在服务停止时触发并不容易。

另一种观点

您可以设置计划任务以运行批处理脚本以测试服务是否正在运行。如果不是,它将启动它。

@echo off
SetLocal EnableDelayedExpansion

set "user=username"
set "pass=p@ssword"
set "host=server_name"

set "OracleServiceTime=3"
set "OracleServiceTask=CheckOracle"
set "OracleServiceName=the_name_of_the_service"

rem schtasks /query /TN "%OracleServiceTask%" /S "%host%" >NUL 2>&1
schtasks /query /TN "%OracleServiceTask%" >NUL 2>&1
if %ERRORLEVEL% EQU 1 (
  rem schtasks /create /SC MINUTE /MO %OracleServiceTime% /TN "%OracleServiceTask%" /RL HIGHEST /TR "%~dpnx0" /S "%host%" /RU "%user%" /RP "%pass%" /F >NUL 2>&1
  schtasks /create /SC MINUTE /MO %OracleServiceTime% /TN "%OracleServiceTask%" /RL HIGHEST /TR "%~dpnx0" /F >NUL 2>&1
  if !ERRORLEVEL! NEQ 0 (
    rem if task couldn't be created, message user or whatever.
  )
)

tasklist /FI "imagename eq %OracleServiceName%" | find /I "RUNNING" > NUL 2>&1
if %ERRORLEVEL% EQU 0 goto :EOF

rem sc "\\%host%" start "%OracleServiceName%" > NUL 2>&1
sc start "%OracleServiceName%" > NUL 2>&1 
if %ERRORLEVEL% NEQ 0 (
 rem if service couldn't be started, message user or whatever.
)

EndLocal
exit/B

此脚本检查任务是否存在,如果不存在则创建它(在这种情况下,每3分钟运行一次)

然后测试服务是否正在运行,如果没有,则启动它。

schtask /createsc start有两个命令行。如果脚本可以在远程系统上运行,则需要host user pass语法。