LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 数据库 >

oracle后台进程(background process)详解

时间:2012-07-01 00:39来源:未知 编辑:admin 点击:
查看已运行background process $ps -ef | grep ora SQL select name,description from v$bgprocess where paddr !=00 1. DBWn (database writer,数据库写入进程) 将数据缓冲的数据写入数据文件,是负责数据缓冲区管理的
查看已运行background process
$ps -ef | grep ora
SQL> select name,description from v$bgprocess where paddr !=’00’
1. DBWn (database writer,数据库写入进程)
将数据缓冲的数据写入数据文件,是负责数据缓冲区管理的一个background process,默认数量1个,最多10个。参数为db_writer_processes
dbwr的作用:
·通过LRU算法管理数据缓冲区,将dirty buffer写入到datafile中,维护数据缓冲区的clean,以使用户进程总能找到足够的空闲缓冲区。
·通过延迟写数据来优化disk I/O读写。
Dbwr writes when:
·no free buffers
·dirty buffer threshold reached
·checkpoint
·tablespace offline
·time out
·drop table/truncate table
 
2. LGWR(log writer,日志写入进程)
将redo log buffer写入redo log file
logr的作用:
·管理日志缓冲区,将数据库的更改写入日志文件,以便维护数据的一致性,并为数据丢失后进行恢复提供依据。
·通过延迟写日志来优化disk I/O读写
lgwr writes when:
·3s,commit,redo log buffer 1/3,1M满时,都会触发lgwr写
·beforc dbwn writes
 
3. ARCH(archiver,归档进程)
当数据库运行在archivelog模式下时,将循环使用的redo log file组在被复写覆盖前进行归档备份。
arch的作用:
·管理redo log file,归档保存因循环复写而将被覆盖的log file,为数据丢失后进行恢复提供依据。
Arch works when:
·Redolog file switch
 
4. CKPT (check point,检查点进程)
负责通知dbwn和lgwr将dirty buffer写入disk,以及时消除因dbwn/lgwr延迟写所造成的数据不一致情况,确保内存中的数据块被规律地写入file,并对数据库数据库控制文件和数据文件进行更新同步(修改文件时间头部),以记录下当前的数据库结构和状态。
ckpt的作用:
·及时保证进行延迟写,防止数据库出现不一致情况。
·及时同步各类数据文件,防止各类数据文件出现不一致情况。
Ckpt works when:
·redolog switch
·database shutdown
·alter tablespace begin/end backup
·alter tablespace/datafile readonly
·log_checkpoint_timeout value reached
·log_checkpoint_interval value reached
 
5. SMON (system monitor,系统监控进程)
smon负责对数据库进行恢复操作,若上次数据库为非正常关闭,则下次启动时smon会自动读取重做日志文件,对数据库进行恢复,同时还负责在临时段或临时表空间中回收不再使用的存储空间,并将各个表空间中的空间碎片进行合并。
Smon’s works
·clean up临时空间:真正的临时段不需要clean up,但某些操作,比如create index产生的临时段当create index的session不正常终止时,此时需要smon来清理;
·Recovers transactions active against unavailable files: 这个过程和实例启动时进行的instance crash recovery(自动前滚和回滚)相似,只不过由于实例启动时某些文件无法访问,而实例启动后的某个时间这些文件可以访问时,smon就会对其执行recover;
·Coalesces free space:如使用字典管理表空间,smon负责将连续的空闲extent合并
·Performs instance recovery of a failed node in RAC: 当rac的某个节点失败时,某个剩余的节点会打开失败节点对应的redo log,进行recover;
·Cleans up OBJ$: obj$是个底层的数据字典,包括所有的数据库对象信息,很多时候,某些对象被删除时,由smon进程来clean up 该视图;
·Shrinks rollback segments:如果设置了optimal size参数,smon进程负责执行回滚段的自动收缩
·"Offlines" rollback segments:当用户offline某个回滚段,但此时该回滚断有active trancsaction,这是回滚段的状态其实是pending offline,而smon进程会定期的检查该回滚段的事务是否完成,完成即将其变为offline;
 
6. PMON (process monitor,进程监控进程)
pmon在用户进程出现故障时进行恢复,清除失效的用户进程,负责清理内存区域和释放该进程所使用的资源,同时监控oracle所有background process。
Smon’s works:
·connection在不正常终止时,pmon负责释放资源,rollback未提交的事务;
·监控后台进程,如果某些后台进程不正常终止,则会重启它(比如dispatcher),或者直接终止实例;
 
7. RECO(recovery,恢复进程)
reco用于分布式数据库,维持在分布式环境中的数据的一致性。
reco有个主要工作,就是recover那些两阶段提交的但由于网络或其它原因造成状态为prepared 的挂起事务。
当某些节点反馈yes给事务协调器可以提交时,但事务协调器还未正式发出可以提交的最后指示时,由于网络的原因,这些节点失去了和事务协调节点的联系,此时这些事务就成为了an in-doubt distributed transaction。此时,RECO就负责定期的联系事务协调器,当联系到时,就会提交或者回滚这些事务了。
 
8. LCKn (lock,锁进程)
在具有并行服务器环境下使用,最大可启用10个lckn进程,哟娜与实例间的封锁。
 
9. Dnnn (dispatcher,调度进程)
dnnn存在于MTS体系结构中,负责接受用户进程的请求,将其放入请求队列中,并为之分配一个服务进程。
 
10. server process服务器进程
是用户进程与服务器交互的桥梁,在oracle server与用户之间,处理用户启动用户进程(如sqlplus)后对oracle server的连接请求,用户进程不能直接连接oracle服务器,而必须通过服务器进程进行交互。
Service process的作用:
·分析并执行用户提交的sql语句
·在sga区缓存中搜索用户进程访问的数据,不存在则访问disk并将其复制在缓存中
·将数据返回给用户进程。
服务器进程的分类:
·Dedicated server process (默认)每个用户单独一份PGA
·MultiTreaded server process      多用户共用一份PGA
SQL>select server,count(*) from v$session group by server;查询当前服务器运行模式
 
11. Uer process (用户进程)
由用户创建,通过服务器进程连接数据库,将用户的sql语句传递给服务器进程并接收运行结果反馈给用户

转载请保留固定链接: https://linuxeye.com/database/657.html

------分隔线----------------------------
标签:oracle后台进程
栏目列表
推荐内容