Summary

This blog outlines the top 10 causes of Oracle VKTM time drift (OS/VM issues and bugs) and offers practical solutions.

Introduction

As a senior Oracle DBA, I encounter a recurring alert in 11g, 12c, and even some 19c environments: the dreaded “VKTM detected a time drift” message. While it might look alarming at first glance, understanding what the Virtual Keeper of Time (VKTM) process does—and why it complains—can save hours of troubleshooting and stress. Just this week, a client emailed asking if they should be worried about seeing these warnings in their alert log. The client was running Oracle 11.2.0.3 on a Windows VM. Both of those facts triggered me to write this blog.

Understanding VKTM

VKTM acts as a time publisher for an Oracle instance. Its role is critical yet straightforward: to provide consistent, precise timing for internal database operations, such as Resource Manager scheduling and timeouts.

VKTM publishes two sets of time:

  • a wall clock time using a seconds interval 
  • a higher resolution time for interval measurements. 

The VKTM timer service centralizes time tracking and offloads multiple timer calls from other clients. Before VKTM, each Oracle process needing the current time had to make an individual system call to the operating system. Now that info is immediately available in the SGA.

It runs on a tight schedule, usually every 10 milliseconds, constantly comparing the system clock to its own internal clock. A time drift warning occurs when VKTM detects a jump or shift in the OS clock—something that violates its expectation of a smooth, continuous timeline.

Note: in the vktm trace file, you can see the precision interval: “VKRM uses low-res time, scheduling interval=10 ms”.

Criticality of VKTM in RAC Environments

In an Oracle RAC environment, precise time synchronization across all nodes is a critical requirement. Unchecked time discrepancies can lead to severe failures.

  • Node Eviction and Reboots
  • Clusterware (CRS) and Application Failures
  • Service Timeouts and Hangs
  • Instance Crashes with the VKTM warning being the last message written to the alert log.

Core Causes of VKTM Time Drift

While the reasons behind a VKTM alert can vary, most fall into two categories: core OS/virtualization issues and configuration or bug-related problems. Here’s my top 10 list based on experience and severity.

1. Aggressive NTP Adjustments (Time Jump)

The most common cause is a sudden OS clock correction by NTP. If the jump exceeds ~1 second forward or ~5 seconds backward, VKTM immediately flags a drift. Use slewing mode in NTP or chronyd to avoid these abrupt changes.

2. Virtual CPU/Resource Throttling

In VMs, host overcommitment can starve the guest of CPU cycles. When the VM finally resumes, the OS clock has advanced significantly, triggering a forward drift detection.

3. VMware Snapshot or Live Migration

Snapshots, vMotion, or live partition migrations pause the VM. On resume, the wall clock has advanced, often triggering VKTM alerts.

4. Missing or Outdated VM Tools

VMware Tools or Oracle VM Tools synchronize the guest clock with the host. Without them, or if they’re outdated, time drift issues are magnified.

5. Host OS Contention (High Load)

Severe CPU or I/O load on the host can delay VKTM execution. Since VKTM expects precise 10ms intervals, any execution lag may appear as a drift.

1. Multiple Time Services Running

Conflicts arise when multiple time services run concurrently (e.g., NTP + timedatectl on Linux and w32time on Windows + a third-party NTP client), leading to erratic time adjustments.

2. Insufficient OS Privileges for Oracle

On UNIX/Linux, VKTM may need elevated priority (RTPRIO/RTSCHED) to maintain its high-resolution schedule. Without it, drift warnings can appear. Likewise, on Windows, set High or Realtime priority class.

3. Oracle Software Bugs

Older versions, such as 11.2.0.2 and 11.2.0.3, had known bugs (e.g., MOS Bug 11837095) that caused minor, non-critical drifts to trigger repeated warnings. Patching or applying an event can suppress these.  Refer to Oracle Doc ID 1347586.1 for more information on 11g issues.

4. Memory Management Configuration

Some users report that disabling Automatic Memory Management (MEMORY_TARGET) in favor of dedicated SGA/PGA targets reduces drift occurrences, suggesting AMM scheduling can interfere with VKTM timing.

5. OS-Level Timer Configuration

If the OS isn’t using a high-resolution timer (TSC vs. HPET on Linux), VKTM can’t maintain precise time, especially under heavy load.

Management and Fixes – Practical Advice

1. Tune NTP Properly: Prefer slew mode over sudden jumps.

2. Ensure VM Resource Reservation: Guarantee CPU and memory for the Oracle VM to prevent host-induced pauses.

3. Update VM Tools: Use the latest virtualization tools and configure them for minimal interference with NTP.

4. Apply Oracle Patches: Check MOS notes for your version; many drift warnings are patchable or suppressible. (Doc ID 1347586.1)

5. Elevate OS Privileges: Ensure Oracle binaries have RTPRIO/RTSCHED permissions for precise VKTM scheduling.

6. Suppress Minor Warnings (Last Resort):

ALTER SYSTEM SET EVENT="10795 trace name context forever, level 2" SCOPE=SPFILE;

This prevents verbose alert log entries while leaving the underlying time discrepancy unchanged.

Final Thoughts

VKTM alerts are often more about host system behavior than Oracle itself. Most drift stems from virtualization, NTP misconfiguration, or OS-level timing issues. As DBAs, understanding VKTM’s purpose and the common causes helps us focus our efforts on root causes rather than chasing every alert.

When it comes to time drift, the best defense is a stable OS clock, well-tuned virtualization, and the right Oracle patches.

For more information, please contact us.

Check out more Oracle blogs!