作用:把SGA中被修改的数据同步到磁盘文件中。保证Buffer Cache中有足够的空闲数据块数量。
触发条件:1,检查点
2,一个服务进程在设定的时间内没有找到空闲块。
3,每3秒自动唤醒一次。
设置:DB_WRITER_PROCESSES用来定义DBWn进程数量。(commit命令只是把记录修改写入日志文件,不是把修改后的数据写入数据文件,下面还会提到。)
二:log write LGWR:日志文件写入
作用:把log buffer中的日志内容写入联机的日志文件中,释放log用户buffer空间呢。
触发条件:1,用户发出commit指令。(在oracle中称为快速提交机制(fast commit):把redo log buffer中的记录写入日志文件,写入一条已提交的记录)。
2,三秒钟定时唤醒。
3,log buffer超过1/3,或日志数量超过1M。
4,DBWR进程触发:DBWn试图将脏数据块写入磁盘先检查他的相关redo记录是否写入联机日志文件,如果没有就通知LGWR进程。在oracle中称为提前写机制(write ahead):redo记录先于数据记录被写入磁盘。
三:checkpointCKPT:检查点事件
作用:维护数据库一致性状态。检查点时刻数据文件与SGA中的内容一致。这不是一个单独的进程,要和前两个进程一起工作。DBWR写入脏数据,同时触发LGWR进程。
CKPT更新控制文件中的检查点记录。
触发条件:日志切换(log switch)会触发检查点。
四:process monitorPMON :维护用户进程
作用:1,发现用户进程异常终止,并进行清理。释放占用资源。(清理异常终止用户使用的锁)。
2,向监听程序动态的注册实例。
触发条件:定时被唤醒,其他进程也会主动唤醒他。
五:system monitorSMON:实例维护
作用:1,负责实例恢复,前滚(Roll Forward)恢复到实例关闭时刻的状态,使用最后一次检查点后的日志进行重做。这时包括提交和未提交的事务。打开数据库,进行回滚(Roll Back):回滚未提交的事务。
(Oracle承诺commit之后的数据不会丢失,现在我们可以大致的了解Oracle是如何实现这个承诺的,以及在数据的安全性和数据库性能之间的平衡选择。)
2,负责清理临时段,以释放空间;
触发条件:定期被唤醒或者被其他事务主动唤醒。
六:archiveARCn:归档 *** 作
作用:发生日志切换时把写满的联机日志文件拷贝到归档目录中。
触发条件:日志切换时被LGWR唤醒。
设置:LOG_ARCHIVE_MAX_PROCESSES可以设置oracle启动的时候ARCn的个数。
七:manageability monitorMMON:AWR主要的进程。
作用:1收集AWR必须的统计数据,把统计数据写入磁盘。10g中保存在SYSAUX表空间中。
2,生成server-generated报警。
每一个小时把shard pool中的统计信息写入磁盘,或shard pool占用超过5%。
八:manageability monitor lightMMNL:轻量级的MMON;
九:memory managerMMAN:自动内存管理
作用:每分钟都检查AWR性能信息,并根据这些信息来决定SGA组件最佳分布。
设置:STATISTICS_LEVEL:统计级别
SGA_TARGET:SGA总大小
十:job queue coordinator CJQO:数据库定时任务
十一:recover writer RVWR:为flashback database提供日志记录。把数据块的前镜像写入日志。
进程数越来越多的原因比较多。例如:客户端增多、一个客户端打开多个任务、失败进程增多、应用程序没能正常结束等等。对于客户端的增多和多开任务是人为的比较好控制,而应用程序不能正常退出可以调整应用程序即可。问题失败进程,它是属于系统问题,与服务器的连接模式和网络通讯稳定性直接相关。
Oracle的后台进程PMON进程监控进程是专门清理死进程的。它定期被唤醒进行清理死进程,但出现的死进程过多来不及清理,那么进程数就会不断地增多最后可能出现客户端无法登入的现象了。
Oracle服务器目前主要采用两种连接方式:专用方式DEDICATED和共享方式SHARED。专用方式是每一个客户端的用户进程对应一个服务器进程为其服务,即使该服务器进程失败变成死进程了也不会影响其他用户的请求。而共享连接方式下,一个服务器进程为很多个客户的用户进程服务的,它是按照队列一个一个进行处理的,当第一个用户进程结束之前后面用户进程需要进行等待。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)