Oracle 服务控制批处理

来自http://tunps.com/oracle-service-control-batch-script

@echo off
rem author tunpishuang(http://tunps.com)
title Oracle服务控制
goto menu
 
:view
tasklist /fi "imagename eq oracle.exe" | find /i "oracle.exe" >null
cls
if errorlevel 1 (echo 【oracle没有运行】) else (echo 【oracle正在运行】)
goto menu
 
:start
net start OracleOraDb10g_home1TNSListener
net start OracleOraDb10g_home1iSQL*Plus
net start OracleServiceORCL
net start OracleDBConsoleORCL
rem net start OracleJobSchedulerORCL
echo 【已成功开启】
goto menu
:kill
net stop OracleDBConsoleORCL
rem net stop OracleJobSchedulerORCL
net stop OracleOraDb10g_home1iSQL*Plus
net stop OracleOraDb10g_home1TNSListener
net stop OracleServiceORCL
echo 【已成功关闭】
goto menu
:manual
sc config OracleDBConsoleORCL start= demand
sc config OracleOraDb10g_home1iSQL*Plus start= demand
sc config OracleOraDb10g_home1TNSListener start= demand
sc config OracleServiceORCL start= demand
echo 【已设定成功】
goto menu
:quit
exit /b
 
:menu
echo v - 查看oracle服务状态
echo s - 开启oracle服务
echo k - 关闭oracle服务
echo m - 设定oracle服务为手动
echo q - 退出
set /p inputStr=请选择:
if "%inputStr%"=="v" goto view
if "%inputStr%"=="s" goto start
if "%inputStr%"=="k" goto kill
if "%inputStr%"=="q" goto quit
if "%inputStr%"=="m" goto manual
因为Oracle数据库确实是一个庞然大物,在测试环境中使用Oracle,希望能随时轻松的启动或者停止Oracle的服务,所以想到了写个批处理脚本出来。我股沟了一下,发现网站的控制脚本都分为两个bat文件,一个专门用来开,一个专门用来关。比如这个这个…,不爽,集成到一个文件。通过判定当前是否存在oracle.exe进程来判定服务是否启动才是王道。 有几个需要注意到的地方。
  1. 首先是通过tasklist来判定进程状态,返回的errorlevel就能知道oracle进程是否运行。
  2. 需要将所有服务设定为手动,这样服务才不会随系统启动而启动,也就是不会让系统开机的时候一直卡在“欢迎”界面。
  3. oracle这几个服务各司其职,并且互相具有依赖性,所以启动的时候要找准启动顺序 TNSListener->Service->DBConsole,那个JobScheduler服务一般不需要,关闭服务的时候就不需要顺序了,系统自动解决依赖性。详见此文
  4. 这个脚本控制的服务名称根据不同的环境是有变化了,我这个oracle版本是10g,sid名是ORCL,HOME_NAME是home1,所以使用前需要更改,也许有时间我会找找方法能得到这些变量值,然后改进,改成通用的,那就牛逼了。

About tunpishuang

just 4 fun·····
This entry was posted in 未分类 and tagged . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>