oracle进程(第一节 服务器进程)

    我们都知道oracle数据库实例简单的说就是:进程+进程所使用的内存(SGA),那么oracle进程在后台到底干了些什么事情呢?

    首先,oracle进程分成三种类型:

    服务器进程(server process):这些进程根据客户的请求来完成工作。我们已经对专用服务器和共享服务器有了一定的了解。它们就是服务器进程。(下面会再介绍专用服务器和共享服务器)

    后台进程(background process):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。

    从属进程(slave process):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。

    下面介绍服务器进程:

    服务器进程就是代表客户会话完成工作的进程。应用向数据库发送的SQL语句最后就要由这些进程接收并执行。由于oracle有两种连接方式,所以产生服务器进程有点不同:

    专用服务器(dedicated server)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程或线程之间存在一对一的映射。

     共享服务器(shared server)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。

    专用服务器进程和共享服务器进程的任务是一样的:要处理你提交的所有SQL。当你向数据库提交一个SELECT * FROM EMP查询时,会有一个Oracle专用/共享服务器进程解析这个查询,并把它放在共享池中(或者最好能发现这个查询已经在共享池中)。这个进程要提出查询计划,如果必要,还要执行这个查询计划,可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。
    这些服务器进程是干重活的进程。在很多情况下,你都会发现这些进程占用的系统CPU时间最多,因为正是这些进程来执行排序、汇总、联结等等工作,几乎所有工作都是这些进程做的。我的理解是:服务器进程就像一位主人,为每一位来访者提供优质服务。

    参考书籍:oracle9i&10g编程艺术

你可能感兴趣的:(Oracle,应用服务器,Oracle,SQL,Server,SQL,编程)