ITPub博客

首页 > 数据库 > Oracle > oracle体系结构梳理----各种进程

oracle体系结构梳理----各种进程

原创 Oracle 作者:lff1530983327 时间:2015-01-23 21:10:20 0 删除 编辑
 

oracle 体系中的进程主要三类:

系统进程

后台进程

服务进程

----后台进程

SELECT NAME,DESCRIPTION FROM V$BGPROCESS GROUP BY NAME ,DESCRIPTION

?¤数据写入进程(DBWn)db writer process

?¤日志写入进程(LGWR)Redo etc.

?¤检查点进程(CKPT)checkpoint

?¤系统监控进程(SMON)System Monitor Process

?¤进程监控进程(PMON)process cleanup

?¤恢复进程(RECO)distributed recovery

?¤作业队列进程(Job Queue Processes)

?¤归档进程(ARC0)Archival Process 0

?¤队列监控进程(QMNn)AQ Coordinator

?¤其他后台进程 DMON DG Broker Monitor Process

LNS0 Network Server 0

--LGWR进程的触发条件:

日志写入进程log writer process (LGWR)负责管理日志缓冲区,将日志缓冲区写入磁盘上的日志文件。LGWR将从上次之后才复制到buffer中的重做条目写入磁盘。

1.commit 提交数据时,在oracle中只保证redo日志文件是完整的,而数据文件可能是未被更改的

2.when it is 1/3 :full redo log buffer 达到1/3慢的时候

3. 1 meg of data appears in the log buffer :达到1M 的时候

4. every 3 seconds :

5. dbwr写数据文件之前

日志文件首先会写入redo log buffer 后写入redolog file 后来再写入归档日志文件,一般会写入这三个位置

--DBWR的触发条件如下:

数据库写入进程database writer process (DBWn),将buffer中的内容写入数据文件中。DBWn进程负责将在buffer cache中的那些修改的buffer,也就是脏数据写入磁盘中

1. 检查点发生时

2. 脏缓冲量达到一定量

脏块:已经被修改但未被写入数据文件的块

操作均在database buffer cache中

3. 没有空闲的空间填充脏块了

4. DBWR时间超时了

5. RAC的PING时 

6. 表空间OFFLINE时(normal)

7. 表空间设置成只读时

8. DROP表和TRUNCATE表时 在执行drop和trunctate之前会将数据写入数据文件,因为假如原来t1表所在的块在t1表被drop或truncate后被t2表占用了,

如果没有将t1表在内存中的脏块写入数据文件,那么在t2表写数据进入数据文件时可能会出现t1表和t2表脏数据混乱的情况。

9.表空间BEGIN BACKUP

SMON在实例恢复过程中较重要,巡检的,系统监控

1.实例恢复/崩溃恢复(RAC/单实例)是oracle自动完成的

--SMON是系统监控

实例启动时如有需要,系统监控进程(system monitor process,SMON)将负责进行恢复(recovery)工作。

此外,SMON 还负责清除系统中不再使用的临时段(temporary segment),以及为数据字典管理的表空间(dictionary managed tablespace)合并相邻的可用数据扩展(extent)。

在实例恢复过程中,如果由于文件读取错误或所需文件处于脱机状态而导致某些异常终止的事务未被恢复,SMON 将在表空间或文件恢复联机状态后再次恢复这些事务。

SMON进程定期检查自己是否被需要,系统内的其他进程发觉需要时也能够调用SMON 进程。

1. 实例恢复:前滚,打开数据库,回滚 ,前滚是redo,回滚是undo

实例恢复

介质恢复

实例恢复 --- 崩溃恢复

2.整理区碎片:字典管理表空间才用,本地管理表空间由位图自动整理 --只有数据字典表空间还要管理

3.清理临时空间 :事务提交或则是数据清理了都是smon来清理

---PMON事务监控

当一个用户进程(user process)失败后,进程监控进程(process monitor,PMON)将对其进行恢复。

PMON 进程负责清理数据缓冲区(database buffer cache)并释放用户进程使用的资源。例如,它可以重置活动事务表(active transaction table)的状态,

释放锁,将某个进程ID从活动进程列表中移除。

1. 回滚没提交的事务。这里是指rollback,释放锁资源

2. 释放进程相关的锁资源。

3. 释放其他资源,比如进程号等信息,v$process可以看到的一些信息。

4. 监视Oracle 后台进程,必要时(如果可能的话)重启这些后台进程,甚至关闭实例

5. PMON还有一个任务,它可以实现服务注册
动态注册过程中,由PMON每隔60秒,去看一下监听有没有启动,如果启动了,将信息注册到监听

---归档进程ARCn

1)当设置成归档模式的时候,自动归档. 

2) 保存所有改变数据库的记录

MMAN:内存管理器(Memory Manager)

MMON、MMNL和Mnnn

---事务的生命周期

1、事务开始;(insert,update,delete,select ... for update等)

2、在buffer cache中找需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;

3、事务修改buffer cache的数据块,该数据被标识为“脏数据”,并把相关的redo信息写入log buffer中.

4、事务提交,LGWR进程将log buffer中的日志写入redo log file中;

5、当发生checkpoint,CKPT进程更新控制文件和所有数据文件的文件头中的信息,DBWn进程则负责将Buffer Cache中的脏数据写入到数据文件中。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30018455/viewspace-1412611/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-11-12

  • 博文量
    72
  • 访问量
    49748