---------oracle 进程概述:
1.进程概念:
进程是操作系统中一个独立的可以调度的活动,用于完成指定的任务。进程与程序的区别在于:
》》进程是动态的概念,即动态创建,完成任务后立即消灭;而程序是一个静态实体;
》》进程强调执行过程,而程序仅仅是指令的有序集合。
2.进程类型:
在oracle 数据库服务器中,进程分为 用户进程、服务器进程、后台进程3种。
(1)、用户进程:
当用户连接数据库执行一个应用程序时,会创建一个用户进程,来完成用户所指定的任务。
(2)、服务器进程:
oracle 服务器进程由 oracle 自身创建,用于处理连接到数据库实例的用户进程所提出的请求。
服务器进程主要完成以下任务:
》》解析并执行用户提交的SQL语句和 PL/SQL 程序
》》在SGA 的数据高速缓冲区中搜索用户进程所要访问的数据,如果数据不在缓冲区中,则需要从硬盘数据文件中读取所需的数据,再将它们复制到缓冲区中
》》将用户改变数据库的操作信息写入到日志缓冲区中
》》将查询或执行后的结果数据返回给用户进程
(3)、后台进程:
为了保证oracle 数据库在任意一个时刻都可以处理多用户的并发请求,进行复杂的数据操作,而且优化系统性能,oracle 数据库启用了一些相互独立的附加进程,
称为后台进程。服务器进程在执行用户进程请求时,会调用后台进程来实现对数据库的操作。
----------oracle 后台进程:
oracle 实例的主要后台进程包括:数据库写入进程(DBWR)
日志写入进程(LGWR)
检查点进程(CKPT)
系统监控进程(SMON)
进程监控进程(PMON)
归档进程(ARCH)
恢复进程(RECO)
锁进程(LCKn)
调度进程(Dnnn)
(其中前5个后台进程是必需的。)
数据库的后台进程随数据库实例的启动而自动启动,它们协调服务器进程的工作,优化系统的性能。可以通过初始化参数文件中的参数的设置来确定启动
后台进程的数量。
------------DBWR:
数据库写入进程负责把数据高速缓冲区中已经被修改过的数据(脏缓存块)成批写入数据文件中永久性保存,同时使高速缓冲区有更多的空闲缓存块,保证
服务器进程将所需要的数据从数据文件中读取到数据高速缓冲区中,提高缓存命中率。
当下面某个条件满足的时候,DBWR 进程将启动,将数据高速缓冲区中的脏数据写入到数据文件中:
》》服务器进程在数据高速缓冲区中搜索一定数量的缓存块后,仍然没有找到可用的空闲缓存块,此时 DBWR 进程将被启动
》》检查点发生时,将启动 DBWR进程
》》当数据高速缓冲区中 LRU 列表长度达到初始化参数 DB_BLOCK_WRITE_BATCH 指定值的一半时,DBWR 进程将被启动
》》DBWR 进程发生超时(约3秒),DBWR 进程将被启动
注意:DBWR 进程启动的时间与用户提交事务的时间完全无关。
-------------LGWR:
日志写入进程负责将重做日志缓冲区的重做记录写入重做日志文件中永久性保存。
DBWR 进程在工作之前,需要了解 LGWR 进程是否已经把相关的日志缓冲区中的重做记录写入重做日志文件中。如果还没有写入重做日志文件,
DBWR 进程将通知 LGWR进程完成相应的工作,然后 DBWR 进程才开始写入。这样可以保证先将与脏缓存块相关的重做记录信息写入重做日志文件,
然后将脏缓存块写入数据文件,即先写重做日志文件,后写数据文件。
当下列事件发生时,LGWR 进程会将重做日志文件缓冲区写入重做日志文件:
》》用户通过 COMMIT 语句提交当前事务
》》重做日志缓冲区被写满三分之一
》》 DBWR 进程开始将脏缓存块写入数据文件
》》LGWR 进程超时(约3秒),LGWR 进程将启动
-------------CKPT:
检查点进程是一个事件,当该事件发生时(每隔一段时间发生),DBWR 进程把数据高速缓冲区中的脏缓存块写入数据文件中,同时oracle 将对数据库
控制文件和数据文件的头部同步序号进行更新,以记录下当前的数据库结构和状态,保证数据同步。
在执行一个检查点事件后,oracle 知道所有已提交的事务对数据库所做的更改已经全部被写入到数据文件中,此时数据库处于一个完成状态。在发生数据库
崩溃后,只需要将数据库恢复到上一个检查点即可。因此,缩短检查点执行的间隔,可以缩短数据库恢复所需要的时间。
CKPT 进程的作用就是执行检查点,完成下列操作:
》》更新控制文件和数据文件的头部,使其同步
》》触发 DBWR 进程,将脏缓存块写入数据文件
------------SMON:
如果由于某种原因系统崩溃了,那么 SGA 中任何没有来得及写入磁盘文件中的信息都将丢失。如果有些已经提交的数据还没有真正写入数据文件中就会
丢失了,当数据库重新启动时, SMON 进程将自动执行 Oracle 实例的恢复工作。
除了进行数据库实例恢复外,SMON 进程还具有以下功能:
》》回收不再使用的临时空间
》》将各个表空间的空闲碎片合并(表空间的存储参数 PCTINCREASE 不为 0 时)
SMON 进程除了在实例启动时执行一次外,在实例运行期间,它会被定期唤醒,检查是否有工作需要来完成。如果有其他任何进程需要使用 SMON 进程的
功能,它们将随时唤醒 SMON 进程。
-----------PMON:
PMON进程的主要功能包括:
》》负责恢复失败的用户进程和服务器进程,并且释放进程所占用的资源
》》清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA 、 PGA等资源
》》监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用各种资源
与 SMON 进程类似,PMON 进程在实例运行期间会被定期 ,检查是否有工作需要它们来完成。如果有其他任何进程需要使用 PMON 进程的功能,它们
将随时唤醒 PMON 进程
-----------ARCH:
ARCH 进程负责在日志切换后将已经写满的重做日志文件复制到归档目标,以防止写满的重做日志文件被覆盖。
只有当数据库运行在归档模式,并且初始化参数 LOG_ARCHIVE_START 设置为 TRUE ,即启动自动归档模式,才能启动 ARCH 进程;否则当重做日志文件
全部被写满后,数据库将被挂起,等待 DBA 进程手工归档。