ITPub博客

首页 > 数据库 > Oracle > oracle 11g vktm进程占用CPU高 【转载】

oracle 11g vktm进程占用CPU高 【转载】

原创 Oracle 作者:rh_linux 时间:2014-06-08 00:34:51 0 删除 编辑

估计不少朋友在virtualBox中进行oracle11g练习时会有CPU高的情况吧!下面是我从网上转载的一篇文章,同时在我的电脑上测试了一下,进行了图解!

 

 

11g中引入了VKTM后台进程,VKTM是virtual keeper of time的缩写

该进程负责提供时钟时间(每秒更新一次)以及参考时间服务(每20ms更新一次,仅在进程高优先级情况下可用),该参考时间服务用于各种基于时间间隔的度量。

VKTM在SGA中发布这些计时信息,以便各种RDBMS Client可以廉价和快速了解时间信息。

Wall-clock 时钟时间每一秒更新一次且单调递增。 

而参考时间计数(Reference-time)则每20ms更新一次,且仅当VKTM运行在高优先级情况下时可用。

 

在某些环境下VKTM持续消耗较多的CPU,特别是在虚拟化的环境中例如Vmware、Vbox等;

对于这些虚拟化环境若是非产品production环境,则可以考虑将VKTM进程不要运行在高优先级上,虽然这会导致Reference-time参考时间计数不可用,但是实际不会产生必要的性能度量不可用的问题。 

在11g中默认 _high_priority_processes 隐藏参数指定了 LMS*|VKTM 运行在高优先级下,可以通过修改该参数,仅让LMS运行在高优先级下,这样VKTM所消耗的CPU将明显下降。 当让我们不建议在产品环境中这样做,如果你确实要这样做,建议优先咨询Oracle Support。

 

使用方法如下,注意需要重启RDBMS实例方才生效:

  SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ

  FROM SYS.x$ksppi x, SYS.x$ksppcv y

  WHERE x.inst_id = USERENV ('Instance')

  AND y.inst_id = USERENV ('Instance')

  AND x.indx = y.indx

  AND x.ksppinm like '%high_priority_%' ;

 

接下来是我在虚拟机上测试的结果:

----------------------------------------------------------------------------------------------------------------------------------------------

clipboard

 

 

下图是在没有做修改前top的结果图:

clipboard[1]

将TOP中CPU占用最高的两个进程拿出来一看,果然是vktm进程啊!

clipboard[2]
 

果断开始更新:

SQL> alter system set "_high_priority_processes"='LMS*' scope=spfile;
 

重启之后再看看效果:

clipboard[3]



clipboard[4]

将spfile生成为pfile之后,看到有一个 *._high_priority_processes的选项了
clipboard[5]
 
看看我自己电脑上资源管理的图标已经不再是往上高冒了
image
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1696240/viewspace-1177927/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-05-18

  • 博文量
    43
  • 访问量
    173994