背景:
作为一个程序员,在日常的工作中,我们电脑经常需要同时运行很多程序,如:Eclipse、浏览器、即时通讯软件等,甚至经常需要打开几个Office文档或者pdf文档。这时候你的内存估计已经爆表了吧,尤其是现在想Chrome和FireFox这类的浏览器,随便安装几个插件,内存占用就大得惊人。而我们为了满足需要又不得不安装各种各样的插件,因为这两款浏览器在不安装任何插件的情况下跟IE没什么分别。
如上图所示,FireFox、Java的两个进程还有Eclipse稳稳地占据了内存使用的前四,而这时候如果你电脑还开着Oracle的服务,那么你的电脑会卡到令人发指。
把电脑升级到8G内存,刚开始觉得很爽,没过多长时间,又变得很慢了。还真是给它多少内存,它就敢给你用多少内存呀。无限制的升级硬件显然是不实际的方法,所以我们需要从软件上动脑筋,这句需要我们把平时不常用的服务以及后台进程关掉。
浏览器我们每天都离不开,而且关掉主程序也不会有后台进程,所以我们的目标不是它;Java进程和Eclipse每天开放也离不开它们,所以也不能对它们下黑手;嘿嘿,Oracle不好意思啦,只能将你干掉了,因为有了Hibernate之类的框架,让我们在写代码的时候不需要知道我们将要面向什么数据库。所以我们完全没有必要在自己的机器上每天开着Oracle的那些笨重的后台服务。一个小小的MySQL完全可以应付,所以我们只需要将它的服务全部关掉,用的时候再打开即可。
但是新的问题又来了,每次需要开启服务的时候,还需要打开系统的服务管理,找到Oracle的相关服务,然后挨个右击点击启动,我想有过类似操作经验的朋友,都会觉得这是一个非常令人烦躁的工作。
但是身为程序员的我们,应该很自然的想到,这些繁杂的工作肯定可以通过程序来自动帮我们解决。没错,而且非常简单,只需要几行代码就可以搞定!
解决方案:
首先,到服务(按“Win”键,输入“服务”,回车)里找到Oracle的相关服务,我安的是11g,相关服务如下:
我们并不需要将所有服务全部开启,基本的功能只需要开启如下两个服务即可:
OracleServiceORCL
OracleOraDb11g_home1TNSListener
将以下代码保存成”.bat“文件或”.cmd“文件即可。
具体代码:
@echo off net start OracleServiceORCL net start OracleOraDb11g_home1TNSListener pause
运行效果:
运行完成以后,可以看到两个服务的状态已经变成了“已启动“:
停止服务代码只需将“start”改成“stop”:
@echo off net stop OracleServiceORCL net stop OracleOraDb11g_home1TNSListener pause
运行效果:
好了,有了这两段代码Oracle的服务就对我们唯命是从了,招之则来,挥之则去。想想都觉得爽歪歪了。下面为大家附上Oracle各个服务的详细说明:
1. Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)
2. OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)
3. OracleJobSchedulerORCL:Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)
4. OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)
5. OracleOraDb11g_home1ClrAgent:Oracle数据库.NET扩展服务的一部分。 (非必须启动)
6. OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候才需要。(非必须启动,下面会有详细详解)。
7. OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)那么在开发的时候到底需要启动哪些服务呢?
对新手来说,要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于WEB的EM必须开启的,其余服务很少用。
注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名。