11g之前, ORACLE前台进程和后台进程要想获取时间信息,就需要调用linux系统函数gettimeofday(),系统繁忙时,这样的频繁调用无疑是个很大的开销。
从11g开始,ORACLE搞出来一个新的后台进程VKTM,这个进程就是专门用来获取时间信息的,并把获取的结果放在SGA里,这样ORACLE的前台进程或者后台进程要想得到时间信息,就直接到SGA里找,从而提高效率。
有测试结果显示11.1.0.7版本可以从VKTM进程获得70%的速度提升。其实本质上就是减少进程对系统函数的调用次数。
ORACLE官方对VKTM的描述是这样的:
VKTM acts as a time publisher for an Oracle instance. VKTM publishes two sets of time: a wall clock time using a seconds interval and a higher resolution time (which is not wall clock time) for interval measurements. The VKTM timer service centralizes time tracking and offloads multiple timer calls from other clients.
VKTM充当ORACLE实例的时间发布者。VKTM发布两组时间:使用秒间隔的挂钟时间和用于间隔测量的更高分辨率时间(非挂钟时间),VKTM计时器服务集中时间跟踪并从其他客户端卸载多个计时器调用。
这个进程是一个基础进程,如果是RAC环境,在每一个节点上都存在一个VKTM进程,当数据库启动时,可以在alert日志里看到以下关于VKTM的记录。

我们可以通过视图v$bgprocess来查看对VKTM的简要描述(short description)





