Oracle SMON进程中系统监视进程SMON


  本文标签:Oracle SMON

  在Oracle中有很多的东西值得我们大家学习的地方,在这里我们主要描述的是Oracle SMON进程,也包括介绍归档进程ARCH等相关方面的内容  。在Oracle数据库中有两个进程非常的渺小,但是其作用却是非常的巨大  。由于其比较小而往往被数据库管理员所忽视  。

  笔者这次就给大家提醒提醒,不要忽视了这两个进程的作用  。如果利用的好的话,会减少系统管理员不少的工作  。

  Oracle SMON进程中系统监视进程SMON

  这个进程对于Oracle数据库来说,可以利用一句话来概括,即人小鬼大  。其负责的内容并不是很多,但是对于数据的安全与数据库的性能却有很关键的作用  。如随着表空间中的数据不断的建立、删除、更新等等,在表空间中难免会产生碎片  。由于这些碎片的存在,数据库的性能会逐渐的降低  。而现在系统监视进程SMON的作用,就可以解决这些碎片  。

  Oracle SMON进程会将各个表空间的空闲碎片合并在一起,让数据库系统更加容易分配  。从而提高数据库的性能  。另外,在数据库运行的过程中,会因为断电或者其他的原因而发生故障  。此时由于数据高速缓存中的脏缓存块还没有来得及写入到数据文件中,从而导致数据的丢失  。

  在数据库启动的时候,系统监视进程OracleSMON会在下一次启动例程的时候,自动读取重做日志文件并对数据库进行恢复  。也就是说,进行将已提交的事物写入数据文件(已经写入到日志文件中而没有写入到数据文件中的数据)、回退未提交的事务操作  。可见,Oracle SMON进程是一个比较小但是却非常重要的角色  。

  在管理这个进程的时候,笔者认为主要需要注意两个问题  。一是其启动的时机  。一般情况下,例程重新启动的时候,会启动这个系统监视进程  。然后在这个例程运行期间,这个进程也会被系统定期的唤醒,然后其会检查是否有工作需要其完成  。最重要的是,在有需要的时候,数据库管理员可以通过其他进程来启动这个OracleSMON系统系统监视进程,来完成一些特定的工作  。

  第二需要注意表空间配置对这个进程的影响  。在表空间管理中,有一个参数叫做PCTINCREASE  。如果将这个参数设置为0的话,则这个SMON系统监视进程对于这个表空间的作用就要打折扣了  。在设置为0的情况下,SMON进程就不会对这个表空间中的空闲碎片进行整理、合并操作  。

  也就是说,需要数据库管理员通过数据的导出导入等手工操作,才能够解决表空间的碎片问题  。显然这会增加数据库管理员的工作量  。为此笔者建立,除非有特别的需要,不要将这个参数设置为0  。让Oracle SMON进程自动对表空间中的碎片进行管理,自动合并表空间中的空闲碎片  。

  不过如果某个表空间这个参数设置为0的话,不会影响到系统监视进程的其他用途,如不会影响到在例程非正常关闭时对数据的恢复操作  。即即使这个参数设置为0 ,在有需要的时候其仍然可以利用重做日志文件中的记录来恢复相关的数据  。

  归档进程ARCH

  在重做日志文件管理中有归档与非归档两种模式  。在日志进行切换时,如果不对原先的日志文件进行归档,而直接覆盖的话,就叫做非归档模式  。相反,在写入下一个日志文件的时候,会先对目标日志文件进行归档,这就叫做归档模式  。

  归档进程ARCH就是负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志文件中,以防止循环写入重做日志文件时将其覆盖  。所以说,只有数据库运行在归档模式时,这个ARCH进程才会被启动  。

  在任何一中操作模式下,重做日志文件都会被循环使用  。所以当LGWR进程在进行日志切换,需要用到下一个日志文件时,则数据库会被暂时的挂起,进行目标日志文件的归档工作  。直到这个目标重做日志文件归档完毕后,数据库才会恢复正常  。所以说,归档日志的操作,有时候也会影响数据库的性能,特别是当需要进行频繁的大批量数据更改的时候  。

  以上的相关内容就是对Oracle SMON进程中系统监视进程SMON的介绍,望你能有所收获  。