Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435486
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-18 00:22:37

数据库系统

ORACLE数据库系统采用多进程体系结构,所有的功能模块是使用进程来实现的。除前面已经讲到的进程之外,ORACLE系统还有一些比较关键的的进程,如:SMONPMON等。

 

1. 监听进程

 

ORACLE系统的监听进程在系统之外运行,因此严格来说,监听进程并不属于ORACLE系统。由于这种实现方式,监听进程和ORACLE系统实例之间拥有多对多的关系:

1)一个监听进程可以为多个ORACLE系统服务。同一台服务器上的多个ORACLE系统实例可以使用同一个端口,监听进程使用用户请求中的实例名称,来决定将用户请求发送给那一个ORACEL系统实例进行处理。

2)可以为一个ORACLE系统实例设置多个监听端口,启动多个监听进程同时为该实例提供连接服务。

命令行工具lsnrctl,用来启动、关闭以及监测监听进程。对监听进程的配置,可以使用图形化工具netca,也可以直接修改配置文件。和监听进程有关的配置信息存放在以下三个文件中:

1listener.ora:存放一个或多个监听进程的定义

2sqlnet.ora:决定通讯连接所有服务名的解析方式

3tnsnames.ora:在使用本地(local)方式进行服务名的解析时,存放服务所使用协议、端口等信息。

 

2. 代理进程

 

ORACLE系统中,代理进程称为服务器进程(server process),它可以是专用的,也可以是共享的。

在专用的服务器进程(dedicated server process)环境中,一个服务器进程只为一个客户端应用程序服务,服务器进程和客户端应用程序一一对应,它和第2.2.2一节讲到的代理进程大体上一致。

在共享的服务器进程(shared server process)环境中,一个服务器进程能够为多个客户端应用程序服务。在这种环境中,服务器进程和客户端应用程序之间并没有直接的联系,系统需要启动一个新的进程:分发进程(dispacher process)。

分发进程作为客户端应用程序在数据库系统中的代理人,建立和客户端应用程序的连接,并接收用户请求。然而,分发进程不会去处理用户请求,在收到用户请求后,放入自己的请求队列。系统中任何处于空闲状态的服务器进程,会不断地去检查分发进程的请求队列。如果发现需要处理的用户请求,就取出该请求并处理,然后将结果放入分发进程的响应队列,最后由分发进程将结果返回客户端应用程序。一个分发进程能够为多个客户端应用程序服务,分发进程和客户端应用程序之间是一对多的关系。

下列配置参数和服务器进程的配置有关,在专用的服务器进程环境中,只需要配置PROCESSESSESSIONS参数,其余参数均设为0即可。

PROCESSES:设定系统进程的最大数目,包括ORACLE系统本身启动的后台进程。

SESSIONS:设定用户会话的最大数目。由于每一个用户连接需要一个会话,因此该参数决定了系统中的并发用户数目。

CIRCUITS:设定系统使用的VIRTUAL CIRCUITS的数目。在共享的服务器进程环境下,应设定该参数等于参数SESSIONS

DISPATCHERS:设定实例启动时,启动的分发进程数目。

MAX_DISPATCHERS:设定实例中可以启动的分发进程的最大数目。

SHARED_SERVERS:设定实例启动时,启动的共享服务器进程的数目。

MAX_SHARED_SERVERS:设定实例中可以启动的共享服务器进程的最大数目。

SHARED_SERVERS_SESSIONS:设定系统的所有用户会话中,有多少可以在共享的服务器进程环境下使用。通过该参数,可以在共享的服务器进程环境中,建立专用的服务器进程环境。

 

3. 异步预取进程

 

ORACLE系统没有异步预取功能。代理进程在处理用户请求时,所需数据完全由代理进程从磁盘中读入。

 

4. 页清除进程

 

ORACLE系统的页清除进程被称为数据库书写器(DBWn)。下列参数和数据库书写器的配置有关;

DB_WRITER_PROCESSES:设定实例启动时,启动的数据库书写器的数目。

内存中已更新数据页达到总数据缓冲区的40%时,数据库书写器就被激活,将脏数据写入磁盘。该百分比为系统的缺省设置,不允许用户修改。

 

5. 日志写进程

 

ORACLE系统采用事务提交前必须将日志写入磁盘的机制,日志写进程称为日志书写器(LOG WRITERLGWR)。除了事务提交、数据库书写器将内存中的脏数据写入磁盘之外,下列事件也将触发日志书写器的磁盘写操作:

1)重做日志内存缓冲区中的三分之一已经被使用

2)写入重做日志缓冲区中的日志信息已经超过1M字节

3)每间隔三秒钟

 

6. 检查点进程

 

ORACLE系统监测数据的更新,根据已更新数据的数量,来决定何时启动检查点操作。在执行检查点操作时,除了要在日志文件中写入检查点信息,还要使用检查点信息修改控制文件以及数据文件的文件头。正是这个特性,使得ORACLE数据库系统可以在数据文件的级别上进行备份和恢复,当然系统性能受到影响是不可避免的。下列参数和检查点进程的配置有关:

FAST_START_MTTR_TARGET:设定系统崩溃恢复时需要花费的时间。数据库系统根据此参数,决定执行多少更新后就触发检查点进程。

 

7. 优化器进程

 

ORACLE系统中,除了常用的基于费用的优化方式外,优化器还可以使用基于规则的优化方式。下列参数和优化器进程的配置有关:

OPTIMIZER_MODE:设定优化器使用的优化方式。

OPTIMIZER_MAX_PERMUTATIONS:设定连接查询中数据表的置换次数。

OPTIMIZER_INDEX_COST_ADJ:设定优化器对于索引访问的费用估计方式。

OPTIMIZER_INDEX_CACHING:设定索引中数据被装入内存的百分比。优化器使用该参数估计嵌套循环连接的费用。

OPTIMIZER_FEATURES_ENABLE:设定系统使用的优化器版本。

OPTIMIZER_DYNAMIC_SAMPLING:设定数据库对象的统计信息不可使用时,优化器进行动态地采样。

 

8. 死锁监测进程

 

ORACLE系统采用独特的并发处理结构,因此它的锁管理方式不同于其它的数据库系统,在系统正常运行过程中一般不会出现锁的问题。死锁监测由ORACLE系统自动进行管理,用户不需要进行配置。

 

9. 系统监控进程(system monitorSMON

 

ORACLE的系统监控进程在系统启动时,检查数据库系统是否处于一致状态。如果数据库系统处于不一致状态,就执行系统的崩溃恢复。

除此之外,在系统正常运行过程中,系统监控进程还要执行以下的处理:

1)每3秒钟一次合并数据文件中的自由空间

2)从临时表空间中回收不再使用的临时段

系统监控进程由ORACLE系统自动进行管理,用户不需要进行配置。

 

10. 进程监控进程(process monitorPMON

 

ORACLE的进程监控进程,用来管理系统中的其它进程,监测它们的运行状况。如果发现失败的代理进程,就回收由这些代理进程使用的相关资源;如果发现失效的系统后台进程,就重新启动这些后台进程。

进程监控进程由ORACLE系统自动进行管理,用户不需要进行配置。

阅读(676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~