有没有感觉到,自从装上Oracle之后,电脑变卡了?卡是正常的,Oracle作为大型数据库软件,运行起来是非常吃内存的。
所以对于自用的电脑来说,不使用Oracle的时候,应该把Oracle的一系列服务关掉。你可以把Oracle的服务设置为手动开启,但是这样的话就需要你一个一个去开启服务,关闭服务,很麻烦。
我们可以有更简便都方法:写个脚本文件,把开启/关闭服务都命令写入脚本,运行脚本文件就可以。
在写脚本文件之前,我们先来看一下哪些Oracle服务是必须开启的,成功安装Oracle 11g后,共有7个服务。
这七个服务的含义分别为:
Oracle ORCL VSS Writer Service:
Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)
OracleJobSchedulerORCL:
Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)OracleMTSRecoveryService:
服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)OracleOraDb11g_home1ClrAgent:Oracle数据库
.NET扩展服务的一部分。 (非必须启动)OracleOraDb11g_home1TNSListener:
监听器服务,服务只有在数据库需要远程访问的时候才需要。(非必须启动,下面会有详细详解)。OracleServiceORCL:
数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)
如果只是用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。
注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名。
所以咱们平常学习使用的话,只需要开启OracleOraDb11g_home1TNSListener服务和OracleServiceORCL即可,其他五个服务可选择禁用掉。
下面来为剩下两个服务编写个脚本:
@echo off
title Oracle服务管理
cls
color 2f
goto MENU
:MENU
cls
echo. =-=-=-=-=Oracle服务管理=-=-=-=-=
echo.
echo. 1 开启服务
echo.
echo. 2 关闭服务
echo.
echo. 3 退 出
echo.
echo. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
echo. 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto cmd1
if "%id%"=="2" goto cmd2
if "%id%"=="3" exit
echo 请输入正确序号!&ping -n 2 127.1>nul&goto MENU
:cmd1
echo.
echo 开启Oracle服务中...
net start|findstr /i /c:"OracleOraDb11g_home1TNSListener">nul&&set k=1||set k=0
if %k%==0 (net start OracleOraDb11g_home1TNSListener)
net start|findstr /i /c:"OracleServiceORCL">nul&&set k=1||set k=0
if %k%==0 (net start OracleServiceORCL)
echo.
echo Oracle服务已经成功开启...
echo.
pause
exit
:cmd2
echo.
echo 关闭Oracle服务中...
net start|findstr /i /c:"OracleOraDb11g_home1TNSListener">nul&&set k=1||set k=0
if %k%==1 (net stop OracleOraDb11g_home1TNSListener)
net start|findstr /i /c:"OracleServiceORCL">nul&&set k=1||set k=0
if %k%==1 (net stop OracleServiceORCL)
echo.
echo Oracle服务已经成功关闭...
echo.
pause
exit
运行测试(以管理员身份运行该脚本):
① 输入 1 回车即可开启服务:
cmd —>services.msc,查看服务是否开启。
②输入 2 回车即可关闭服务:
cmd —>services.msc,查看服务是否关闭。
可以看到脚本起作用了,以后我们不使用Oracle服务的时候执行脚本一键就可以关闭这些占资源的服务,想用都时候也可以一键开启服务,很方便。
希望能够帮到大家。