Limewire Tramadol cod Allstate car insurance Rivotril Cheap hotel Adalat Nfl handicapping Adipex phentermine Credit card debt help Child care Pharmacies Sex video Order phentermine Betting Amoxicillin rash Flowers Ultram online Free porn Nfl football predictions Buy adipex p Cheap fioricet Consolidate credit card Online casino gambling site Buy online viagra Youporn Football pool Travelocity Forex broker Nfl pool pick Xanax online Auto insurances Nolvadex Ambien Levaquin Casino bonus Buy nolvadex Casino online gambling Purchase phentermine Ritalin Caverta Debt negotiation Service Viagra cialis Wellbutrin sr Buy ultram Buying viagra online Cosmetologist Propecia online Adware Allegra Job Buy phentermine online Debt consolidation program Cheap viagra County Get fioricet Lortab Generic nexium Ultram online from dreampharmaceuticals Party poker bonus 
Home > Oracle RDBMS > Why VKTM background process in Oracle 11g

Why VKTM background process in Oracle 11g

July 18th, 2008

在Oracle11g中,我们可以发现一个新的基础后台进程叫做VKTM (virtual keeper of time),这个进程是必须存在的。

在数据库启动时候的告警日志中可以看到:
VKTM started with pid=3, OS id=2256 at elevated priority
VKTM running at (20)ms precision

在数据字典中也可以查询到如下信息:

  1. SQL> select name,description  from v$bgprocess where name='VKTM';
  2.  
  3. NAME  DESCRIPTION
  4. ----- -----------------------------------------
  5. VKTM  Virtual Keeper of TiMe process

阅读Concepts文档可以看到对这个后台进程的解释是:

VKTM (virtual keeper of time) is responsible for providing a wall-clock time (updated every second) and reference-time counter (updated every 20 ms and available only when running at elevated priority).

我想这个解释仍然不足以描述这个进程到底是做什么的。

好吧,那这个进程到底是做什么的?

在11g之前所有的Oracle数据库后台或者前台进程如果需要获得当前时间信息,就需要调用操作系统的gettimeofday()函数或者说是相类似的函数。而VKTM进程就是专门用来获得时间信息然后将信息存放在SGA中供其它进程使用,这样其它进程当需要时间信息的时候,只要到SGA的某个内存位置去获得就好,而不用频繁调用gettimeofday()函数。毫无疑问,这样效率会更高。

在RAC测试中,Oracle 1.1.0.6版本LMSx进程获取时间信息时,可以从VKTM进程中获益大概70%的速度提升,而11.1.0.7将会更高。

同时,因为gettimeofday()函数也引发了很多bug,所以无论是RAC还是NORAC库,都将从VKTM进程中获益。

kamus Oracle RDBMS ,


  1. July 18th, 2008 at 14:46 | #1

    对于RAC模式,在各个实例上获取时间还是各访问各的sga?

  2. July 19th, 2008 at 01:03 | #2

    有深度, 解释的透彻.

  3. July 21st, 2008 at 11:08 | #3

    进程就是专门用来获得时间信息然后将信息存放在SGA中供其它进程使用和函数gettimeofday()获取有什么区别,从原理上来说应该是一样的,进程还是需要计算机上的晶振来提供时间的。

    我认为好处只能是这个进程提取时间防到sga中,需要的话直接从sga读,而不是晶振中读,这样就减少与硬件打叫道的次数来提高性能。

    gettimeofday()函数也引发了很多bug,这一点就不能保证这个进程就没有bug

    版主觉的哪?

  4. July 21st, 2008 at 14:51 | #4

    @thomas
    是的,每个节点有自己的VKTM进程

    @康
    没错,只要是操作系统之上的软件一定是受操作系统制约的。VKTM的出现除了提高性能,也大幅度减少了多进程同时调用gettimeofday()函数的次数,这也是稳定性的体现。

  5. 红颜知己
    July 22nd, 2008 at 21:18 | #5

    胳膊好点儿了吗?坚持!!!

  6. July 22nd, 2008 at 23:07 | #6

    谢谢,呵呵,还是吊着,还是有些肿,一按一个坑,不能使劲,有时候会有些疼,除这些之外,一切都好。

  1. No trackbacks yet.
o-o >:) >:( :D :? :-S :) :( :! *(
Proudly using Dynamic Headers by Nicasio Design