原文链接:http://www.dbform.com/html/2008/504.html
在Oracle11g中,VKTM是一个新增的后台进程,Concepts文档中对VKTM的解释:
VKTM (virtual keeper of time) is responsible for providing a wall-clocktime (updated every second) and reference-time counter (updated every 20 ms andavailable only when running at elevated priority).
在数据库启动时候的告警日志中可以看到:
VKTM started with pid=4, OS id=8574 at elevatedpriority
VKTM running at (1)millisec precision with DBRMquantum (100)ms
在数据字典中也可以查询到如下信息:
SQL> select name,description from v$bgprocess where name='VKTM';
NAME DESCRIPTION
----- -----------------------------------------
VKTM VirtualKeeper of TiMe process
在11g之前所有的Oracle数据库后台或者前台进程如果需要获得当前时间信息,就需要调用操作系统的gettimeofday()函数或者说是相类似的函数。而VKTM进程就是专门用来获得时间信息然后将信息存放在SGA中供其它进程使用,这样其它进程当需要时间信息的时候,只要到SGA的某个内存位置去获得就好,而不用频繁调用gettimeofday()函数。毫无疑问,这样效率会更高。
VKTM日志文件:
$ORACLE_BASE/diag/rdbms/orcl/orcl/trace/sid_vktm_8574.trc
VKTM进程信息:
[@localhosttrace]$ ps -ef|grep -i vktm
oracle 8574 1 0 Aug20 ? 00:00:00 ora_vktm_orcl
oracle 23554 1 0 Aug20 ? 00:00:00 ora_vktm_apex