欢迎来到天天文库
浏览记录
ID:52242182
大小:287.25 KB
页数:17页
时间:2020-03-25
《oracle 专家高级编程 中文第五章.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章Oracle进程现在要谈到Oracle体系结构的最后一部分了。我们已经研究了数据库以及构成数据库的物理文件集。讨论Oracle使用的内存时,我们分析了实例的前半部分。Oracle体系结构中还有一个问题没有讲到,这就是构成实例另一半的进程(process)集。Oracle中的各个进程要完成某个特定的任务或一组任务,每个进程都会分配内部内存(PGA内存)来完成它的任务。Oracle实例主要有3类进程:服务器进程(serverprocess):这些进程根据客户的请求来完成工作。我们已经对专用服务器和共享服务器有了一定的了解。它们就
2、是服务器进程。后台进程(backgroundprocess):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。从属进程(slaveprocess):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。其中一些进程(如数据库块写入器(DBWn)和日志写入器(LGWR))在前面已经提到过,不过现在我们要更详细地介绍这些进程的功能,说明这些进程会做什么,并解释为什么。注意这一章谈到“进程”时,实际上要把它理解为两层含义,在某些操作系统(如Windows)上
3、,Oracle使用线程实现,所以在这种操作系统上,就要把我们所说的“进程”理解为“线程”的同义词。在这一章中,“进程”一词既表示进程,也涵盖线程。如果你使用的是一个多进程的Oracle实现,比如说UNIX上的Oracle实现,“进程”就很贴切。如果你使用的是单进程的Oracle实现,如Windows上的Oracle实现,“进程”实际是指“Oracle进程中的线程”。所以,举例来说,当我谈到DBWn进程时,在Windows上就对应为Oracle进程中的DBWn线程。5.1服务器进程服务器进程就是代表客户会话完成工作的进程。应用向数据库
4、发送的SQL语句最后就要由这些进程接收并执行。在第2章中,我们简要介绍了两种Oracle连接,包括:专用服务器(dedicatedserver)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。数据库连接与服务器上的一个进程或线程之间存在一对一的映射。共享服务器(sharedserver)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle实例生成和管理。你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。注意有一点很重要,要知道
5、Oracle术语中连接和会话之间的区别。连接(connection)就是客户进程与Oracle实例之间的一条物理路径(例如,客户与实例之间的一个网络连接)。会话(session)则不同,这是数据库中的一个逻辑实体,客户进程可以在会话上执行SQL等。多个独立的会话可以与一个连接相关联,这些会话甚至可以独立于连接存在。稍后将进一步讨论这个问题。专用服务器进程和共享服务器进程的任务是一样的:要处理你提交的所有SQL。当你向数据库提交一个SELECT*FROMEMP查询时,会有一个Oracle专用/共享服务器进程解析这个查询,并把它放在共享
6、池中(或者最好能发现这个查询已经在共享池中)。这个进程要提出查询计划,如果必要,还要执行这个查询计划,可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。这些服务器进程是干重活的进程。在很多情况下,你都会发现这些进程占用的系统CPU时间最多,因为正是这些进程来执行排序、汇总、联结等等工作,几乎所有工作都是这些进程做的。5.1.1专用服务器连接在专用服务器模式下,客户连接和服务器进程(或者有可能是线程)之间会有一个一对一的映射。如果一台UNIX主机上有100条专用服务器连接,就会有相应的100个进程在执行。可以用图来说
7、明,如图5-1所示。客户应用中链接着Oracle库,这些库提供了与数据库通信所需的API。这些API知道如何向数据库提交查询,并处理返回的游标。它们知道如何把你的请求打包为网络调用,专用服务器则知道如何将这些网络调用解开。这部分软件称为OracleNet,不过在以前的版本中可能称之为SQL*Net或Net8。这是一个网络软件/协议,Oracle利用这个软件来支持客户/服务器处理(即使在一个n层体系结构中也会1“潜伏”着客户/服务器程序)。不过,即使从技术上讲没有涉及OracleNet,Oracle也采用了同样的体系结构。也就是说,即
8、使客户和服务器在同一台机器上,也会采用这种两进程(也称为两任务)体系结构。这个体系结构有两个好处:图图图5-1典型的专用服务器连接远程执行(remoteexecution):客户应用可能在另一台机器上执行(而不是数据库所在的机器),
此文档下载收益归作者所有