天天看点

对在adminstrator assistant forwindows这个工具里有一个“实例随服务启动而启动”选项的说明Linux下让Oracle服务自动启动与停止在Windows平台下修改Oracle实例不随服务启动

一个进程由多个线程组成的。

在windows操作系统下的oracle.exe进程由许多线程组成,其中也包括组成数据库实例的那些线程,下图显示的就是组成数据库实例的那些线程:

对在adminstrator assistant forwindows这个工具里有一个“实例随服务启动而启动”选项的说明Linux下让Oracle服务自动启动与停止在Windows平台下修改Oracle实例不随服务启动

启动一个叫OracleserviceXXXX的服务,其实就是启动运行了oracle.exe这个可执行文件的一个进程。【一个服务(对象)启动时就是在启动该服务对象对应的进程的运行。】

但是启动运行了一个oracle.exe进程,并不意味着该oracle.exe进程里的组成数据库实例的那些线程启动运行了。组成数据库实例的那些线程只是组成oracle.exe进程的一部分线程,不是全部。所以即使组成数据库实例的那些线程没有运行,只要有其他线程运行,oracle.exe进程也就算是运行了。一个进程运行时,必定就会创建一个主线程启动运行。而主线程(Oracle.exe进程)会根据情况(如在sqlplus里执行startup命令时)创建从线程(会创建启动数据库实例的相关线程)。

要启动数据库实例,即要启动组成数据库实例的那些线程,就得sqlplus / as sysdba后执行startup命令。

在adminstrator assistant forwindows这个工具里有一个“实例随服务启动而启动”选项,其实就是启动运行了一个oracle.exe进程(即启动了服务)后在自动把该oracle.exe进程里的组成数据库实例的那些线程给启动运行起来(即启动了数据库实例)。

停止运行一个oracle.exe进程时当然也就意味着该oracle.exe进程里的组成数据库实例的那些线程也会被(强制)停止运行了。故而在adminstrator assistant forwindows这个工具里有一个“实例随服务关闭而关闭”选项选不选,停止OracleserviceXXXX的服务时数据库实例都是会被关闭的,当然此时数据库实例应该是以强制关闭方式关闭的。在adminstrator assistant forwindows这个工具里选了“实例随服务关闭而关闭”选项,只是设置了实例随服务关闭而关闭时是以何种方式关闭的而已。

参考:

Linux下让Oracle服务自动启动与停止

在Windows平台下修改Oracle实例不随服务启动 查看window下默认ORACLE_SID

在Windows平台下修改Oracle实例不随服务启动

Windows服务的本质以及具体实现

继续阅读