进程结构
用户进程:在数据库用户请求连接到oracle服务器时启动
服务器进程:与oracle例程相连接,在用户建立会话时启动
后台进程:在oracle例程启动时启动
用户进程
需要从数据库请求信息的数据库用户必须先建立与oracle服务器的连接。连接有SQL*Plus这类的数据库接口工具请求,并开始用户进程。用户进程并不与oracle服务器直接进行互交操作,而是通过用户程序接口(UPI)生成各种调用。用户程序接口则可以创建会话并启动服务器进程。
服务器进程
用户建立连接后,服务器进程便会启动,以处理用户进程的请求。服务器进程可以是专用服务器进程或共享服务器进程。在专用服务器环境中,服务器进程只处理一个用户的请求。用户进程断开连接后,服务器进程就会终止。在共享服务器环境中,服务器进程将处理多个用户进程的请求。服务器进程可以通过oracle程序接口(OPI)与oracle服务器进程通信。
后台进程
维护并加强物理结构与内存结构之间的关系
·必备的后台进程:
DBWn PMON CKPT LGWR SMON
·可选的后台进程:
ARCn LMDn RECO CJQ0 LMON Snnn Dnnn Pnnn LCKn QMNn
数据库写入程序(DBWn)
服务器进程在数据库缓冲区高速缓存中记录对还原块和数据块所做的更改。DBWn将数据库缓冲区高速缓存中的灰数据缓冲区写入数据文件。这可确保数据库缓冲区高速缓存中有足够数量的空闲缓冲区(即当服务器进程需要读取数据文件中的块时可以覆盖的缓冲区)可用。由于服务器进程只在数据库缓冲区高速缓存中进行更改,因此提高了数据库的性能。DBWn延迟写入数据文件,直到发生下列事件之一:
·增量或正常检查点
·灰数据缓冲区的数量达到阈值
·进程扫描指定数量的块而无法找到任何空闲缓冲区时
·出现超时
·实时应用集群(Real Application Clusters,RAC)环境中出现ping请求
·使一般表空间或临时表空间处于脱机状态
·使表空间处于只读模式
·删除或截断表
·执行ALTER TABLESPACE 表空间名 BEGIN BACKUP 操作
日志写入器(LGWR)
LGWR在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:
·当提交事务时
·当重做日志缓冲区的三分之一填满时
·当重做日志缓冲区中记录了超过1MB的更改时
·在DBWn将数据库缓冲区高速缓存中修改的块写入数据文件之前
·每隔三秒
因为恢复操作需要重做,所以LGWR只在重做写入磁盘后确认提交操作。
LGWR还可以调用DBWn来写入数据文件。
系统监控程序(SMON)
如果oracle例程失败,那么SGA中尚未写入磁盘的所有信息都会丢失。例如,操作系统的失败导致例程失败。例程丢失后,后台进程SMON在数据库重新打开时自动执行例程恢复。恢复例程需要执行以下步骤:
1.前滚以恢复尚未记入数据文件但已经记入联机重做日志中的数据。由于例程失败时SGA的丢失,所以尚未将致谢数据写入磁盘。在该进程中,SMON读取重做日志文件并将重做日志中记录的更改应用到数据块中。由于提交的所有事务处理都已写入重做日志,因此该进程完全恢复了这些事务处理。
2.打开数据库以便用户可以登录。未被未恢复事务处理锁定的任何数据都立即可用。
3.回退未提交的事务处理。它们由SMON回退,或在访问锁定的数据时由单个服务器进程回退。
SMON也执行一些空间维护功能:
·它联合或合并数据文件中空闲空间的邻近区域。
·它回收临时段,将它们作为数据文件中的空闲空间返回。
过程监视器(PMON)
进程失败后,后台进程PMON通过下面的方法进行清理:
·回退用户的当前事务处理
·释放当前保留的所有表锁或行锁
·释放用户当前保留的其它资源
·重新启动已失效的调度程序
检查点(CKPT)
每隔三秒,CKPT进程就会向控制文件存储数据,以标识重做日志文件中恢复操作的起始位置,该操作称作检查点。检查点的用途是确保数据库缓冲区高速缓存中在时间点之间发生修改的所有缓冲区内容都已写入数据文件。这个时间点(称作检查点位置)是例程失败时开始恢复数据库的位置。DBWn应将数据库缓冲区高速缓存中在该时间点之前发生修改的所有缓冲区内容写入数据文件。对于oracle9i之前的版本,这项操作在重做日志的结尾处执行。切换日志时,CKPT还将这个检查点的信息写入数据文件的头部。
启动检查点的原因如下:
·确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据
·缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目已启动恢复操作
·确保提交的所有数据在关闭期间均已写入数据文件
由CKPT写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。
注:CKPT并不将数据块写入磁盘,或将重做块写入联机重做日志。
归档程序(ARCn)
ARCn进程对于丢失磁盘数据后的数据库恢复起着至关重要的作用。当联机重做日志文件填满时,oracle服务器开始写入下一个联机重做日志文件。从一个重做日志到另一个重做日志的切换过程称为日志切换。ARCn进程在每次日志切换时备份或归档已满的日志组。在日志能够重新使用之前,它自动将联机重做日志归档,从而保留对数据库所作的全部更改。这样,即使磁盘驱动器损坏,DBA也能够将数据库恢复到出现故障前的状态。
归档重做日志文件:
DBA必须做出一个重要决策时配置数据库以ARCHIVELOG模式还是以NOARCHIVELOG模式操作。
NOARCHIVELOG模式:在NOARCHIVELOG模式下,每次发生日志切换时,就会覆盖联机重做日志文件。只有重做日志组的检查点完成后,LGRW才会覆盖该日志组。这就确保发生例程崩溃时提交的数据能够得以恢复。在例程崩溃的过程中,只会丢失SGA中的数据。磁盘数据不会丢失,而只会丢失内存中的数据。例如,当操作系统的崩溃引起例程崩溃时。
ARCHIVELOG模式:如果将数据库配置为以ARCHIVELOG模式运行,那么已满的联机重做日志文件的非活动组必须归档之后才能再次使用。因为对数据库所做的更改记录在联机重做日志文件中,所以数据库管理员能够使用数据文件的物理备份和归档的联机重做日志文件恢复数据库,而不会由于任何单点故障(包括磁盘数据的丢失)而丢失任何已提交的数据。通常应将生成数据库配置为以ARCHIVELOG模式运行。

浙公网安备 33010602011771号