欢迎来到天天文库
浏览记录
ID:34725120
大小:154.68 KB
页数:5页
时间:2019-03-10
《oracle数据库进程之服务器进程详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Oracle实例主要有3类进程:(1)服务器进程(serverprocess):这些进程根据客户的请求来完成工作。我们已经对专用服务器和共享服务器有了一定的了解。它们就是服务器进程。(2)后台进程(backgroundprocess):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。(3)从属进程(slaveprocess):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。在某些操作系统(如Windows)上,Oracle使用线程实现,所以在这种操作系统上,就要把我
2、们所说的“进程”理解为“线程”的同义词。“进程”一词既表示进程,也涵盖线程。如果你使用的是一个多进程的Oracle实现,比如说UNIX上的Oracle实现,“进程”就很贴切。如果你使用的是单进程的Oracle实现,如Windows上的Oracle实现,“进程”实际是指“Oracle进程中的线程”。所以,举例来说,当我谈到DBWn进程时,在Windows上就对应为Oracle进程中的DBWn线程服务器进程服务器进程就是代表客户会话完成工作的进程。应用向数据库发送的SQL语句最后就要由这些进程接收并执行。(1)专用服务器(dedicatedserver
3、)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程或线程之间存在一对一的映射。(2)共享服务器(sharedserver)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。注意连接和会话之间的区别:(1)连接(connection)就是客户进程与Oracle实例之间的一条物理路径(例如,客户与实例之间的一个网络连接)。(2)会话(session)则不
4、同,这是数据库中的一个逻辑实体,客户进程可以在会话上执行SQL等。多个独立的会话可以与一个连接相关联,这些会话甚至可以独立于连接存在。专用服务器进程和共享服务器进程的任务是一样的:要处理你提交的所有SQL。当你向数据库提交一个SELECT*FROMEMP查询时,会有一个Oracle专用/共享服务器进程解析这个查询,并把它放在共享池中(或者最好能发现这个查询已经在共享池中)。这个进程要提出执行计划,如果必要,还要执行这个执行计划,可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。这些服务器进程是干重活的进程。在很多情况下,你都会发现
5、这些进程占用的系统CPU时间最多,因为正是这些进程来执行排序、汇总、联结等等工作,几乎所有工作都是这些进程做的。专用服务器连接在专用服务器模式下,客户连接和服务器进程(或者有可能是线程)之间会有一个一对一的映射。如果一台UNIX主机上有100条专用服务器连接,就会有相应的100个进程在执行。可以用图来说明,如图5-1所示。客户应用中链接着Oracle库,这些库提供了与数据库通信所需的API。这些API知道如何向数据库提交查询,并处理返回的游标。它们知道如何把你的请求打包为网络调用,专用服务器则知道如何将这些网络调用解开。这部分软件称为OracleN
6、et,不过在以前的版本中可能称之为SQL*Net或Net8。这是一个网络软件/协议,Oracle利用这个软件来支持客户/服务器处理(即使在一个n层体系结构中也会“潜伏”着客户/服务器程序)。不过,即使从技术上讲没有涉及OracleNet,Oracle也采用了同样的体系结构。也就是说,即使客户和服务器在同一台机器上,也会采用这种两进程(也称为两任务)体系结构。这个体系结构有两个好处:(1)远程执行(remoteexecution):客户应用可能在另一台机器上执行(而不是数据库所在的机器),这是很自然的。(2)地址空间隔离(addressspaceis
7、olation):服务器进程可以读写SGA。如果客户进程和服务器进程物理地链接在一起,客户进程中一个错误的指针就能轻松地破坏SGA中的数据结构。共享服务器连接共享服务器连接强制要求必须使用OracleNet,即使客户和服务器都在同一台机器上也不例外。如果不使用OracleTNS监听器,就无法使用共享服务器。如前所述,客户应用会连接到OracleTNS监听器,并重定向或转交给一个调度器。调度器充当客户应用和共享服务器进程之间的“导管”。图5-2显示了与数据库建立共享服务器连接时的体系结构。在此可以看到,客户应用(其中链接了Oracle库)会与一个调度
8、器进程物理连接。对于给定的实例,可以配置多个调度器,但是对应数百个(甚至数千个)用户只有一个调度器的情况并不鲜见。调度器只
此文档下载收益归作者所有