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

启动一个叫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这个工具里选了“实例随服务关闭而关闭”选项,只是设置了实例随服务关闭而关闭时是以何种方式关闭的而已。
参考:

本文介绍了Windows下Oracle服务与数据库实例的关系。启动OracleserviceXXXX服务会运行oracle.exe进程,但并不自动启动数据库实例。使用管理员Assistant工具的"实例随服务启动而启动"选项,才能确保数据库实例启动。停止服务时,无论该选项是否选中,数据库实例都会强制关闭。参考内容涉及Linux下Oracle服务的自动启动与停止以及Windows服务原理。
1万+

被折叠的 条评论
为什么被折叠?



