关于Oracle在Windows操作系统上的服务解析
当在Windows操作系统上部署Oracle数据库系统时,会将起动过程写入到操作系统的服务列表中。并且一些主要的服务都会被设置为自动启动。如此的话,当操作系统启动的时候,数据库会自动启动。当关闭操作系统时这些服务也会自动关闭。如下图所示,就是在Windows操作系统下的Oralce数据库系统的典型服务。
一、了解主要的数据库服务。
虽然上图中列举出了很多的Oracle数据库服务,但是在实际过程中我们用到的只是其中的四种。分别为OracleTNSListener(上图中的第二个服务,这服务对应于数据库的监听程序)、OracleServiceDTM123(上图中的第一个服务,对应于数据库例程)、OracleDBConsoledmt123(上图中最后一个服务,对应于数据库的企业管理器)、OracleiSQL*Plus(上图中的第五个服务,对应于数据库的Isql*plus工具)。数据库管理员必须要对这四个服务的作用以及相互之间的关系了如指掌。因为有时候处于维护的需要,数据库管理员需要通过这个服务列表来管理数据库的启动与关闭。
如当启动这些数据库服务的时候,会占用比较多的内存、CPU等系统资源。有时候在Windows操作系统上安装Oracle数据库系统可能只是出于测试、培训等目的。为此没有必要让这些数据库服务一直运行着,而影响操作系统上的其它服务。所以有时候数据库管理员不希望这些数据库服务随着操作系统的启动而自动启动。他们希望能够在需要的时候手工启动这些服务。如此的话,在不需要用到数据库的时候,这些服务就不会占用宝贵的例程。此时数据库管理员就需要更改这些服务的启动方式。如上图所示,可以将以上四种服务设置为“手动”启动方式。如此的话,数据库系统不会随着操作系统的启动而自动启动。如果需要更改这些服务的启动方式,只需要选中以上对应的服务,双击这个服务,会打开一个服务管理的对话框。在这个对话框内我们可以发现有一个启动类型的下拉列表,只要选择“手动”,即可以更改这些服务的启动方式。默认情况下,这个启动类型为“自动”。如果一直不需要使用这些服务,甚至可以将启动类型设定为“已禁用”。
二、了解各种服务之间的关系。
Oracle各种服务之间有着比较复杂的关系,这个复杂性主要体现在他们有很严格的相互依存关系。当启动某个服务或者关闭某个服务的时候往往需要按照一定的顺序来启动或者关闭。否则的话,可能会出现错误信息。如就以上面四种主要服务来说,他们之间的关系就比较复杂。一般情况下,只有先启动OracleTNSListener(监听程序)服务,才可以打开启动服务。如果在没有打开这个服务的情况下,而打开其他数据库服务,如OracleDBConsoledmt123(数据库企业管理器)服务,就会出现错误。系统会提示:“一些服务依赖于其它服务、系统驱动程序或者组的加载顺序,如果系统组建被停止或者运行不正常,则依赖于它的服务会受到影响”。简单的说,就是监听程序服务没有打开的话,企业管理器服务就无法启动。这两个服务之间存在着依存的关系。类似的,企业管理器服务跟OracleServiceDTM123(数据库例程)服务之间也存在着千丝万缕的关系。如果要使用企业管理器服务,那么必须先启动数据库例程服务。否则的话,又会抛出以上的异常信息。
数据库服务在启动的时候会受到以上限制因素的影响。在关闭这些服务的时候也是如此。不过比服务启动的时候好的多,操作会在关闭服务的时候去自动检测是否存在相关的依存服务。如果存在的话,会先自动关闭其它的服务,然后再关闭这个服务。如现在操作系统中同时启动了数据库企业管理器服务与数据库例程这两个服务。现在数据库管理员暂时不用Oracle数据库了,他就要关闭数据库例程服务以释放其占用内存与CPU资源。此时在关闭这个服务的时候,操作系统发现现有启动的服务(企业管理器)需要用到这个正在关闭的服务。此时操作系统会先关闭企业管理器服务,然后再关闭数据库例程服务。也就是说,服务在启动的时候,如果服务之间存在依存关系,操作系统是不会自动启动的。而是抛出异常信息,让数据库管理员手工启动相关联的服务。但是在关闭服务的时候,则如果遇到相互依存的服务,操作系统会自动关闭相互依存的服务。为此在关闭某个服务的时候,数据库管理员一定要了解他们之间相互依存关系。要防止为了关闭某个服务,而同时关闭其它正在使用的服务。此时可能会给用户造成不必要的损失。