自从安装了Oracle数据库后,我电脑的运行速度满了很多。为此我想了一个办法,让我在不需要使用Oracle数据库的时候,可以轻松地关掉Oracle相关服务。
我安装的Oracle版本为Oracle11g,与Oracle有关的服务如下图所示:
这些服务包括:
1、Oracle ORCL VSS Writer Service(手动启动)
2、OracleDBConsoleorcl(自动启动)
3、OracleJobSchedulerORCL(禁用)
4、OracleMTSRecoveryService(自动启动)
5、OracleOraDb11g_home1ClrAgent(手动)
6、OracleOraDb11g_home1TNSListener(自动启动)
7、OracleServiceORCL(自动启动)
其中,需要我们用脚本关闭的服务,都是开机自启动且当前已启动的服务,一共有四个(2、4、6、7)。
我们可以使用WQL查出这四个服务,逐一关闭即可。
VBS脚本(StopServiceLikeOracle.vbs)如下:
Set ServiceSet = GetObject("winmgmts:"). _
ExecQuery("select * from Win32_Service where name like 'Oracle%' and started = true")
For Each Service In ServiceSet
WScript.Echo "Deal with service: " & Service.Name
RetVal = Service.StopService()
If RetVal = 0 Then
WScript.Echo "Service stopped: " & Service.Name
ElseIf RetVal = 5 Then
WScript.Echo "Service already stopped: " & Service.Name
Else
WScript.Echo "Return value: " & RetVal
End if
Next
其中Service下的StopService函数返回值,可以参阅MSDN文档:
https://msdn.microsoft.com/en-us/library/aa393673%28v=vs.85%29.aspx
调用这个VBS脚本的BAT脚本如下:
call C:\Users\Tsybius\Desktop\StopServiceLikeOracle\StopServiceLikeOracle.vbs
pause
注意要使用管理员身份调用此BAT脚本,否则会在关闭服务的时候触发权限不足的错误。使用管理员身份调用BAT脚本时,里面的VBS脚本地址,要写绝对地址(或相对于System32目录的相对地址)。
使用效果如下:
执行完毕后,可以看到各服务都已停止(或在停止的过程中,此时状态列会显示为“停止”)
顺便总结一下,在写WQL查询时,可以使用Windows自带的测试工具wbemtest.exe,步骤如下:
步骤1,在开始菜单中输入wbemtest.exe,找到这个程序后打开改程序。
(限于图片大小限制,上图中省去了开始菜单中间大片的白色无内容区域)
步骤2,点击【连接】按钮,进入连接界面,再点击【连接】
步骤3,连接成功后,点击【查询】按钮,弹出查询界面,在查询界面中输入查询WQL语句,再点击【应用】按钮
步骤4,此时会弹出一个查询结果页面,显示WQL语句的查询结果
END