Oracle数据库从入门到精通系列之十九:服务器进程

Oracle数据库从入门到精通系列之十九:服务器进程

  • 一、服务器进程
  • 二、Oracle连接方式
  • 三、专用服务器连接
  • 四、共享服务器连接

一、服务器进程

  • 服务器进程就是执行客户端会话指令的进程。
  • 服务器进程负责接收由应用发给数据库的SQL语句,并在数据库中执行。

二、Oracle连接方式

专用服务器连接:

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

共享服务器连接:

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

专用服务器进程和共享服务器进程的任务是一样的:

  • 当你向数据库提交一个SELECT * FROM EMP查询时,就会有一个Oracle专用/共享服务器进程来解析这个查询,把它放到共享池中。
  • 这个进程要自行制定查询计划,然后执行它,并尽可能地在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存。

三、专用服务器连接

  • 在专用服务器模式下,客户端连接和服务器进程之间会有一个一对一的映射关系。如果一台UNIX/Linux主机上有100个专用服务器连接,就会有相应的100个进程在执行。
  • 你的客户端应用链接着Oracle库文件,这些库文件提供了与数据库通信所需的API。这些API知道如何向数据库提交查询,并处理返回的游标。它们知道如何把请求打包为网络调用,而专用服务器则知道如何解包。这部分软件被称为Oracle Net。
  • Oracle利用这个软件来支持客户端/服务器处理,即在一个n层体系结构中也会潜伏着客户端/服务器程序。也就是说,即使客户端和服务器在同一台机器上,也会采用这种双进程体系结构。

这个体系结构有两个好处:

  • 远程执行:客户端应用和数据库可以在不同的机器上运行。
  • 地址空间隔离:服务器进程可以读写SGA的。如果客户端进程和服务器进程物理地链接在一起,客户端进程中一个错误的指针就会轻易破坏SGA中的数据结构。

四、共享服务器连接

  • 共享服务器连接要求必须使用Oracle Net,即使客户端和服务器都在同一台机器上也不例外。如果不使用Oracle TNS监听器,就无法使用共享服务器。
  • 客户端应用会连接到Oracle TNS监听器,并重定向或转交给一个调度器程序。
  • 客户端应用会与一个调度器程序物理连接在一起。对于一个实例,可以配置多个调度器。
  • 而一个调度器对应数百个用户。
  • 调度器程序只负责从客户端应用接收入站请求,并把它们放入SGA中的一个请求队列。
  • 共享服务器进程池(包含了一些预先创建好的共享服务器进程)中第一个可用的进程会从队列中依次获取请求,并附加上相关会话的UGA。
  • 共享服务器进程会处理这个请求,并把得到的输出放在响应队列中。
  • 调度器程序持续监视着响应队列中的结果,并把结果传回给客户端应用。
  • 对客户端而言,在连接到数据库之后,是分不清到底是专用服务器连接还是共享服务器连接的,看上去都一样,只是在数据库级别二者才会有显著区别。

你可能感兴趣的:(日常分享专栏,Oracle数据库,服务器进程)