Oracle进程结构

在oracle数据库启动时,首先启动oracle实例,系统将自动分配sga(系统全局区)并启动多个后台进程,在系统启动后异步地为所有数据库用户执行不同的任务

通过查询字典V$bgprocess 可以了解数据库中启动大后台进程信息,其中,oracle数据实例的后台进程主要有DBWn进程,LGWR进程,SMON进程,PMON进程、ARCn进程、RECO进程、LCKn进程、Dnnn进程以及SNPn进程

1.DBWn进程

   DBWn(Database Writer,数据库写入)进程,是Oracle中采用LRU(Least Recently Used,最近最少使用)算法将数据缓冲区大火数据写入数据文件大进程。

      LRU(LEAST RECENITY USED),是数据缓冲区大一种管理机制,只保留最近数据,不保留旧数据

      DIRTY 表示脏列或者叫“弄脏了大数据”,实际上就是指被修改但还没有被写入数据文件的数据

DBWn进程的作用主要有以下几个方面

      管理数据缓冲区,以便用户进程能找到空闲的缓冲区。

       将所有修改后大缓冲区数据写入数据文件

      使用LRU算法将最近使用过的块保留在内存中

     通过延迟写来优化磁盘I/O读写。

  DBWn进程大工作流程如下,

(1)当一个用户进程产生后,服务器进程查找内存缓冲区中是否存在用户进程所需要的数据。

(2)如果内存中没有需要的数据,服务器进程就从数据文件中读取数据,此时,服务器进程会首先从LRU中查找是否有存放数据的空闲块

(3)如果LRU没有空闲块,则将LRU中的DIRTY的数据移入DIRTY LIST(弄脏表)。

(4)如果DIRTY LIST 超长,服务器进程通知DBWn进程将数据库写入磁盘,刷新缓冲区


2.LGWR (log writer,日志写入)进程

 ORACLE数据库运行时,对数据库的修改操作将被记录到日志信息中,而这些日志将首先保存在日志缓冲区中。当日志信心达到一定数量时,由LGWR进程将日志数据写入日志文件中。

  使用LGWR进程将缓冲区中的日志数据写入磁盘的情况主要有以下那几种

   @用户进程提高事物。

   @日志缓冲区已满1/3

   @出现超时

   @DBWn进程为检查点清楚缓冲区块

   @一个实例只有一个日志写入进程

   @事务被写入日志文件,并确认提交


3.SMON进程

   SMON(System Monitor,系统监控)进程,用与数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中大条目应用于数据文件来执行崩溃恢复,SMON进程一般用于定期合并字典管理的表空间中的空闲空间,此外,她还用与在系统重新启动期间清理所有表空间的临时段。


4.PMON进程

  PMON(process monitor,进程监控)进程,用于清楚失效大用户进程,释放用户进程所用的资源。PMON 进程周期性检查条读进程和服务器进程的状态,释放用户进程所用大资源。PMON 进程周期性检查调度进程和服务器进程的状态,如果发现进程已死,则重新启动它,PMON进程被有规律地唤醒,检查是否需要使用,或者其他进程发现需要是也可以调用此进程

你可能感兴趣的:(ORACLE)