来着TOM的《oracle 编程艺术 9i,10g,11g》
PMON
PMON,进程监视。PMON主要有3个用途:
1,在进程非正常中断后,做清理工作。例如:dedicated server失败了或者因为一些原因被杀死,这是PMON的工作分两种。第一,是对dedicated server所做的工作进行恢复或撤销。第二:是释放dedicated server占用的资源。PMON会把失败进程的未提交的工作进行rollback,释放锁,释放SGA空间
2,在进程abort后,PMON进行清理工作。PMON会监视oracle其他的后台进程,并在需要的时候对它们进行重建。如果shared server或者dispatcher失败后,PMON会介入其中,并在清理完失败进程后,重建一个shared server或dispatcher。例如:在数据库进行写日志的时候LGWR进程失败,这是个很严重的错误。解决这种问题最安全的方法是立即中断实例,并恢复。
3,PMON的第三个用途是,向Oracle TNS listener注册实例信息。在实例启动的时候,PMON会查询oracle的默认端口(1521端口)是否处于工作状态。如果这个端口已经处于工作状态,那么该实例就可以启动,PMON把实例的相关信息告诉listener,包括服务名、实例的信息等。如果listener没有启动,PMON就会定期的尝试去连接listener。这里要注意如果oracle没有是默认的1521端口,而是使用其他的端口时,PMON和listener的连接过程和使用1521端口还是很相似的,除了,在使用非默认端口时,listener的地址要在参数LOCAL_LISTENER中指定。
SMON
SMON,系统监视。SMON的工作如下:
1,清理临时空间。
2,聚合空闲空间。如果使用dictionary-managed 方式来管理表空间,SMON就要负责把空闲的extent聚合成大的空闲extent。这种情况只有在表空间的管理方式是dictionary-managed ,且参数PCTINCREASE被设置成非零值的时候才会发生。
3,对不可用文件的事务恢复。在数据库启动的时候,SMON会恢复失败的事务,这些事务是在实例恢复或crash恢复的时候被跳过的。例如:在磁盘上某哥文件不可用了,在这个文件又重新可用后,SMON会恢复它。
4,在RAC的单节点故障上进行实例恢复。在RAC 环境下,如果cluster(簇群)中有一个实例失败了(如:实例所在的机器挂掉了),在这个cluster上的其他的节点会打开失败实例的redo log,并恢复失败实例
5,清理OBJ$。OBJ$是个低级别的数据字典,它几乎包含了数据库中所有的objects的entry。多数时候,有的entries的objects已经被删除了,或者当前的entry代表的不再是最新的objects。SMON就负责删除这些entry信息了
6,收缩undo segments。SMON会自动把rollback segment收缩到最优的大小
7,离线rollback segments。DBA可能需要把一个处于active状态的事务的rollback segment离线。此时如果事务正在使用这个已经离线的rollback segment,那么这个segment并未真的离线,而是被标记为“pending offline"。在后台,SMON会一直尝试离线这个segment,直到成功。
此外,SMON还会刷新视图DBA_TAB_MONITORING的统计信息等。SMON会消耗大量的CPU。SMON会定期地,或被其他后台进程唤醒,来执行清理工作。
CKPT
CKPT,检查点进程。CKPT进程并不像它的名字说的那样进行checkpoint,执行checkpoint是DBWn的工作。它只是来更新数据文件头的。oracle8.0之前,CKPT只是一个可选的进程。但oracle8.0之后,CKPT进程就进程被打开。过去更新数据文件头的checkpoint 信息是LGWR的工作,然而,随着数据库文件的增加,LGWR的负担也变得越来越重。如果LGWR要更新100,甚至1000哥文件头,那么就会有很多的session等待很长时间去commit。所有CKPT就把这个工作承担下来了
DBWn
DBWn,数据写进程。DBWn负责把缓冲区的脏数据写到磁盘上。在oracle发生switch log files的时候,会发生checkpoint。checkpoint发生后,在redo log中的数据就可以被覆盖了。如果在redo log被填满,且要重新利用redo log 来存放新的数据时,而此时checkpoint还为完成,oracle就会返回”checkpoint not complete“。
DBWn的性能相当重要。如果DBWn写数据的速度不够快,这样释放出空闲buffer的速度也就不会快。那么Free Buffer Waits 和Write Complete Waits的值就会很快的增长。
oracle可以配置多达36个DBW进程。从DBW0到DBW35.多数系统只有一个DBW进程,但在多CPU系统中就可能不止一个DBW进程了。这样做的目的是分散写数据的负担,保证SGA中有足够的空闲空间。
优化情况下,DBW是通过异步(asynchronous)I/O向磁盘写数据的。通过异步I/O,DBW先把blocks组成一个batch(一捆),再把batch递交给OS,DBW不会等待OS把batch写入到磁盘,而是返回,继续收集下一个batch。当OS完成写后,会异步通知DBW进程,已经把batch成功的写入到磁盘了。
最后,DBW进程是分散地把数据写到磁盘上的。而LGWR是连续写redo log。分散写要比连续写耗时的多。但是,DBW是在后台进行分散写的,而LGWR做连续写是为了减少用户等待的时间。
疑问:TOM说DBWn是把blocks组成一个batch,然后异步交给OS,让OS写到磁盘的。为啥又说DBWn是分散写数据的,写数据的活不是OS干的吗?
LGWR
LGWR,日志写进程。LGWR是把SGA中redo log buffer的信息写到redo log file的进程。LGWR会在下面情况发生:
1,每个3秒钟,进行一次LGWR
2,任何事务进行了commit
3,当redo log buffer是1/3满,或者里面有1MB的数据
基于以上的原因,把redo log buffer设置的很大就没必要的。
ARCn
ARCn,归档进程。ARCn的工作是在LGWR把onlone redo log填满后,ARCn把redo log file的内容copy到其他的地方。归档日志可以用来做media recovery。online redo log 是被用来为实例失败的时候,恢复数据文件。而归档日志是被用来在media recovery的时候,恢复数据文件。
分享到:
相关推荐
CKPT进程的工作原理与DBWn和LGWR紧密相关,三者协同工作,共同保障了数据库数据的安全性和可用性。 #### 系统监控进程(SMON) 系统监控进程(SMON),全称System Monitor Process,是Oracle数据库中负责维护...
后台进程如SMON(System Monitor)负责数据库的初始化和恢复,PMON(Process Monitor)监控和清理挂起的进程,DBWn(Data Buffer Writer)将数据缓冲区的内容写入数据文件,CKPT(Checkpoint)进程协调检查点操作,...
用户进程代表连接到数据库的用户,服务器进程处理用户进程的请求,后台进程如PMON(进程监控器)、SMON(系统监控器)、DBWN(数据写入器)、LGWR(日志写入器)、CKPT(检查点进程)和ARCn(归档进程)则执行数据库...
- 定期检查“dispatcher”和服务器进程的状态,并重启那些非正常终止的Oracle进程。 #### RECO:恢复进程 **功能介绍**: RECO(Recoverer Process)主要用于处理分布式事务中的故障。在一个具有分布式事务支持的...
- 服务器进程:包括PMON(进程监控器)、SMON(系统监控器)、RECO(恢复进程)、ARCn(归档进程)、DBWn(数据写入进程)、LGWR(日志写入进程)、CKPT(检查点进程)等,以及其他各种辅助进程。 4. 存储结构:...
当处理查询时,Oracle服务器进程会在数据库缓冲区高速缓存中查找所需的所有数据块。如果未在数据库缓冲区高速缓存中找到数据块,则服务器进程会从磁盘读取数据块并将其放入缓存中。这种方式极大地提高了数据访问的...
后台进程如PMON、DBWn、SMON、LGWR、CKPT、ARCn和RVWR等执行各种数据库管理任务。 数据库结构分为逻辑结构和物理结构。逻辑结构包括表空间、数据文件、段、区和Oracle数据块,而物理结构涉及实际存储在磁盘上的数据...
确保关键进程如DBWn(写数据文件)、LGWR(写日志文件)、SMON(系统监控)、PMON(进程监控)、ARCn(归档进程)、CKPT(检查点)和RECO(恢复)正常运行,以维持数据库的正常操作。 1.3 检查Oracle监听状态 使用...
- **服务流程**:在共享服务器模式下,请求由调度进程 (Dispatcher) 放入 common 队列,然后被共享服务器进程处理。调度进程负责调度共享服务器进程和客户端之间的通信。 - **内存管理**:会话内存从共享全局区 (SGA...
Oracle数据库在运行时有多个后台进程,包括SMON(系统监控进程)、PMON(进程监控进程)、DBWn(数据库写入进程)、CKPT(校验点进程)和LGWR(日志写入进程),这些是数据库正常运行所必需的。SMON负责启动时的恢复...
- **系统全局区**(SGA):这是一个被所有服务器进程共享的内存区域,包含多个子组件,如数据库缓冲区缓存(Database Buffer Cache)、共享池(Shared Pool)、大池(Large Pool)和Java池(Java Pool)等。...
Oracle数据库采用了一种分布式计算模型,其中包括用户进程、服务器进程、监听器、实例、共享池、数据库缓冲区高速缓存、流池、大型池、Java池、DBWn、CKPT、LGWR、SMON、PMON、RECO和ARCn等组件。这些组件协同工作,...
- **ARCn(归档进程)**:当Oracle运行在归档模式下时,该进程负责将已经填满的日志文件归档,以便于后续的备份和恢复操作。 ##### 其他进程 - **LCKn(锁进程)**:在并行服务器环境中提供锁定机制。 - **Dnnn...
6. **大型池**:为大内存分配、Oracle XA接口、I/O服务器进程和备份操作提供内存。 **进程结构**方面,Oracle数据库涉及三类进程: 1. **用户进程**:当用户连接到数据库时启动,负责与数据库实例通信。 2. **...
- **服务器进程 PGA**:每个服务器进程都有独立的PGA。 - **后台进程 PGA**:后台进程也拥有独立的PGA。 #### 五、Oracle进程 - **系统监视器 (SMON)**:负责清理失败的进程和实例恢复。 - **数据库写进程 (DBWn)*...
主要包括数据库服务器进程(DBWn)、日志写入进程(LGWR)、检查点进程(CKPT)等。 2. **后台进程**:这些进程支持数据库的正常运行,如系统监控(SMON)、进程监控(PMON)、归档进程(ARCn)等。 3. **共享内存...