Field Notes · Oracle + AI

Deploying a Windows Server 2022 Application KVM on an ODA

A step-by-step walkthrough of deploying Windows Server 2022 as an application VM on Oracle Database Appliance using the built-in KVM virtualization and ODACLI. Provisioning the VM, loading the VirtIO storage drivers, and installing Windows Server through to the desktop.

By Charles May 4, 2026

A step-by-step walkthrough for ODA release 19.12 or later, using KVM virtualization and the ODACLI command-line interface.

1. Overview

In this guide, we will walk through the deployment of a Microsoft Windows Server 2022 virtual machine on an Oracle Database Appliance (ODA) using the built-in KVM virtualization layer. We will start by provisioning the VM instance through the ODACLI command line, then establish VNC console access to the bare metal node, then work through the Oracle VirtIO storage drivers that Windows Setup needs in order to see the underlying virtual disk, and finish with a clean installation of Windows Server 2022 booting into the desktop environment.

My upcoming ODA book covers a wide range of administration topics on Oracle Database Appliance, but application KVM deployment did not make it into the final outline. We are covering that gap here on dbaexpert.com so that the full procedure is available to anyone working through the same problem.

This walkthrough is written for the Database Administrator, system administrator, or IT infrastructure engineer who is responsible for managing an ODA KVM environment running release 19.12 or later.

This walkthrough was produced against ODA release 19.30, which Oracle made available in January 2026 (the release ships with the January 2026 Database Release Update). The Oracle Solution-in-a-Box guide that the procedure follows covers ODA bare metal release 19.18 and later. Reference materials:

2. How ODA Virtualization Works

ODA virtualization does not behave like general-purpose hypervisors such as VMware. A common misunderstanding we run into in the field is that customers want to treat the Oracle Database Appliance like a general-purpose hypervisor. They expect to provision any kind of VM through a vCenter-style management plane. They expect storage to behave like a free form pool that any VM can carve up at will. ODA is not that.

The KVM layer on ODA is purpose-built for two specific workloads:

  1. Oracle Database workloads running as Database System VMs (DB Systems). This is identical to the DB Systems that you see on Oracle Cloud Infrastructure (OCI).
  2. A smaller number of Application VMs running alongside the DB Systems on the same hardware.

The provisioning surface is odacli and the BUI. There is no separate hypervisor management product to install. There is no vCenter equivalent to point at multiple appliances. The design philosophy is built around running Oracle workloads on Oracle hardware, not a generic IT virtualization infrastructure.

That distinction matters because it changes the mental model. You are not building a private cloud on the ODA. Technically, you can, but you are taking what is an engineered system and making it into a complex infrastructure that can break during patching and upgrade cycles. On the ODAs, you can run a small number of defined Oracle workloads, plus a handful of supporting application VMs, on a deeply integrated stack that Oracle owns end to end. Once that thought process sticks with you, the rest of the ODACLI commands in this post stop feeling unfamiliar and start looking like the natural way to manage VMs on this kind of platform.

2.2 Supported List of Guest VM Operating Systems

For the official list of supported guest operating systems on ODA Application KVMs, Oracle's documentation defers to the Oracle Linux KVM User's Guide. The supported list includes recent Oracle Linux releases (7 through 10), Red Hat Enterprise Linux 7 through 10, and several other Linux distributions such as CentOS, AlmaLinux, Rocky Linux, SLES, and Ubuntu.

It also includes Microsoft Windows Server 2016, 2019, 2022, and 2025, plus Windows 10 and 11 on the desktop side.

Last but not least, it includes support for Oracle Solaris 11.4.

The starting points are the Application KVMs FAQ for ODA and the underlying KVM Guest Operating Systems list.

2.3 VM Storage Comes from the ASM Disk Group

The way storage is provisioned for application VMs on ODA also differs from a typical hypervisor. When you run odacli create-vmstorage, you are not creating a generic file system on local disks. You are carving out a slice of an ASM disk group (DATA in our example) and turning that slice into a virtual file system that the VM layer can use as a backing store for VMs and virtual disks.

3. Prerequisites

Before you begin, verify that the following pieces are in place. Each one is needed for the procedure to run cleanly without backtracking:

Note: For ODA releases earlier than 19.12, refer to My Oracle Support Note 2748946.1 for the applicable procedure.

4. Step-by-Step Procedure

Step 1: Create a VM CPU Pool (Optional)

If the Windows VM should have its own dedicated CPU resources rather than share the default pool, you can create a VM CPU pool on the ODA bare metal node ahead of time. The following ODACLI command sets up a pool named odavm_pool with six cores allocated to VM workloads:

# odacli create-cpupool -n odavm_pool -c 6 -vm

Note: This step is optional. You can skip it if the Windows VM will share the default CPU pool.

Step 2: Create VM Storage

Next, we provision VM storage on the ODA shared repository. The example below creates a 100 GB storage volume named vmgstorage on the DATA ASM disk group:

# odacli create-vmstorage -n vmgstorage -s 100G -dg DATA

Step 3: Create a Virtual Disk (Optional)

If the Windows VM needs additional disk capacity beyond the operating system disk, you can create a virtual disk now and attach it during VM creation in the next step. The example below creates a 49 GB shared virtual disk named vmdisk02-vm:

# odacli create-vdisk -n vmdisk02-vm -vms vmgstorage -s 49G -sh

Note: This step is optional and only required if an additional data disk is needed.

Step 4: Create the VM Instance with VirtIO External Source

Now we create the Windows VM instance itself. The odacli create-vm command accepts an -esrc option that attaches the VirtIO drivers ISO as a second virtual CD-ROM alongside the Windows installation ISO. Without that ISO attached at boot time, Windows Setup has no mechanism to load the VirtIO SCSI driver, and it will not be able to see the VirtIO-based virtual disk that the VM is provisioned with.

odacli create-vm -n vnaoda-vm2 -vc 2 -m 4G -vms vmgstorage -s 49G \
  -vd vmdisk02-vm -cp odavm_pool -vn pubnet \
  -src /u05/app/sharedrepo/vmgstorage/SERVER_EVAL_x64FRE_en-us.iso \
  -esrc /u05/app/sharedrepo/vmgstorage/virtio-win-0.1.285.iso

Warning: The -esrc flag requires ODA release 19.11 or later. It is not available in the BUI on releases 19.11 or 19.12. You must use the ODACLI command line.

Step 5: Identify the VNC Display Port

Once the VM is created, we need to find out which VNC display port the guest console is listening on. Run the following command on the ODA bare metal node and locate the Display Port value in the output:

# odacli describe-vm -n vnaoda-vm2

You will need this value for the vncviewer command in Step 9. As a reference, a Display Port of 1 corresponds to TCP port 5901, a Display Port of 2 corresponds to 5902, and so on.

Step 6: Connect to the ODA Bare Metal Node via RealVNC Viewer

From the administrator workstation, open RealVNC Viewer. In the address bar at the top of the RealVNC Connect window, enter the ODA bare metal node IP address followed by the VNC display number (for example, 192.168.254.50:2), then press Enter to initiate the connection.

RealVNC Viewer address bar showing connection target 192.168.254.50:2
Figure 1 — RealVNC Viewer address bar showing connection target 192.168.254.50:2

Step 7: Acknowledge the Unencrypted Connection Warning

RealVNC Viewer will display an Unencrypted connection warning dialog indicating that the session data will not be encrypted in transit. Review the notice and click Continue to proceed with the connection to the ODA bare metal node.

RealVNC Viewer Unencrypted connection warning dialog
Figure 2 — RealVNC Viewer Unencrypted connection warning dialog; click Continue to proceed

Step 8: Authenticate to the ODA Bare Metal Node

The Authentication dialog will appear next, prompting for credentials of the remote device. Enter the VNC server password for the ODA bare metal node in the Password field, leave the Username blank unless your environment requires it, then click OK to authenticate.

RealVNC Viewer Authentication dialog for the ODA bare metal node
Figure 3 — RealVNC Viewer Authentication dialog for the ODA bare metal node at 192.168.254.50:5902

Step 9: Launch vncviewer on the ODA Node to Connect to the VM Guest

Once you are connected to the ODA bare metal node desktop via RealVNC, open a terminal window on the bare metal node. From that terminal, execute the vncviewer command targeting localhost on the VM guest's Display Port from Step 5. For example, if the display port is 1, enter:

vncviewer 127.0.0.1:1

Terminal on ODA bare metal node executing vncviewer 127.0.0.1:1
Figure 4 — Terminal on ODA bare metal node (vnaoda0) executing vncviewer 127.0.0.1:1 to connect to the VM guest console

Step 10: Configure Windows Setup Language and Regional Settings

The Microsoft Server Operating System Setup wizard will launch in the vncviewer session. On the initial screen, verify or select the desired Language to install, Time and currency format, and Keyboard or input method. When the values are correct, click Next.

Windows Server Setup language and regional settings
Figure 5 — Windows Server Setup language and regional settings selection screen; click Next to continue

Step 11: Initiate the Windows Server Installation

On the next Windows Setup screen, click Install now to begin the operating system installation process.

Windows Server Setup main screen
Figure 6 — Windows Server Setup main screen; click Install now to proceed

Step 12: Select the Windows Server 2022 Edition

The operating system selection screen lists the available Windows Server 2022 editions. Select Windows Server 2022 Standard Evaluation (Desktop Experience) to install the full graphical environment, then click Next.

Windows Server Setup OS edition selection
Figure 7 — Windows Server Setup OS edition selection; select Windows Server 2022 Standard Evaluation (Desktop Experience) and click Next

Step 13: Accept the Microsoft Software License Terms

Read the Applicable notices and license terms. Select the checkbox "I accept the Microsoft Software License Terms..." to confirm acceptance, then click Next to continue.

Windows Server Setup license terms screen
Figure 8 — Windows Server Setup license terms screen; check the acceptance checkbox and click Next

Step 14: Select Custom Installation Type

On the "Which type of installation do you want?" screen, select Custom: Install Microsoft Server Operating System only (advanced). This option performs a clean installation without preserving any existing files or settings.

Windows Server Setup installation type selection
Figure 9 — Windows Server Setup installation type selection; choose Custom to perform a clean installation

Step 15: Load the VirtIO Storage Driver

Windows Setup will display the "Where do you want to install the operating system?" screen with no drives visible and the warning "We couldn't find any drives." This is expected, because Windows does not include native support for VirtIO-based storage. Click Load driver to open the Load driver dialog.

Windows Server Setup drive selection screen showing no drives detected
Figure 10 — Windows Server Setup drive selection screen showing no drives detected; click Load driver

Step 16: Click Browse in the Load Driver Dialog

The Load driver dialog will appear with instructions to insert installation media containing the driver files. Click Browse to navigate to the VirtIO ISO that was attached as an external source during VM creation.

Load driver dialog prompting for driver media
Figure 11 — Load driver dialog prompting for driver media; click Browse to locate the VirtIO drivers ISO

Step 17: Navigate to the VirtIO Driver Folder for Windows Server 2022

The Browse for Folder dialog will display the contents of the attached VirtIO drivers ISO (CD Drive E: virtio-win-0.1.285). Expand the amd64 folder and select the 2k22 subfolder. The 2k22 folder contains the VirtIO SCSI storage driver that is compatible with Windows Server 2022. Click OK to confirm the selection.

Browse for Folder dialog showing VirtIO ISO contents
Figure 12 — Browse for Folder dialog showing the VirtIO ISO contents; select amd64 > 2k22 and click OK

Step 18: Select the Red Hat VirtIO SCSI Controller Driver

After browsing to the 2k22 folder, Windows Setup will present the compatible driver: Red Hat VirtIO SCSI controller (E:\amd64\2k22\viostor.inf). Verify that this entry is highlighted in the driver list, then click Next to install the driver.

Driver selection screen showing Red Hat VirtIO SCSI controller driver
Figure 13 — Driver selection screen showing the Red Hat VirtIO SCSI controller driver (viostor.inf); click Next to install

Step 19: Select the Target Drive for Installation

Once the VirtIO driver is loaded, the drive selection screen refreshes and now displays the available virtual disks. Select Drive 0 Unallocated Space (49.0 GB) as the target installation drive, then click Next.

Drive selection screen after VirtIO driver load
Figure 14 — Drive selection screen after VirtIO driver load; select Drive 0 Unallocated Space (49.0 GB) and click Next

Step 20: Confirm Automatic Partition Creation

Windows Setup will display an informational dialog stating that it may create additional partitions for system files. Click OK to acknowledge and allow Windows to automatically partition the selected drive.

Windows Setup partition confirmation dialog
Figure 15 — Windows Setup partition confirmation dialog; click OK to allow automatic partition creation

Step 21: Monitor the Windows Installation Progress

Windows Server Setup will begin the installation, progressing through the following phases: Copying files, Getting files ready for installation, Installing features, Installing updates, and Finishing up. Monitor the status screen and allow the process to complete without interruption. The VM will reboot automatically once the installation finishes.

Windows Server Setup installation progress screen
Figure 16 — Windows Server Setup installation progress screen; allow all phases to complete without interruption

Step 22: Reconnect the VNC Session After Automatic Reboot

When the VM reboots at the end of the installation, the VNC connection to the guest will be dropped. TigerVNC will display a "Connection reset by peer (104)" error and prompt "Attempt to reconnect?". Click No. The session to the bare metal node via RealVNC remains active, which lets you re-run the vncviewer command from Step 9 in the ODA terminal to reconnect to the VM guest console:

vncviewer 127.0.0.1:1

TigerVNC connection reset dialog following VM reboot
Figure 17 — TigerVNC connection reset dialog following VM reboot; click No and re-run vncviewer from the ODA terminal

Step 23: Observe the Windows First-Boot Initialization

Once you reconnect, the VM will display the Windows first-boot initialization screen showing the Windows logo and the message "Getting ready". Wait for this process to complete before proceeding to the next step.

Windows Server 2022 first-boot initialization screen
Figure 18 — Windows Server 2022 first-boot initialization screen displaying "Getting ready"

Step 24: Configure the Administrator Password

Windows Setup will present the Customize settings screen, prompting for the built-in Administrator account password. Enter a strong password in the Password field, re-enter it in the Reenter password field to confirm, then click Finish.

Windows Server Customize settings screen — password entry fields
Figure 19 — Windows Server Customize settings screen — Administrator password entry fields (empty)

Windows Server Customize settings screen — password entered and confirmed
Figure 20 — Windows Server Customize settings screen — Administrator password entered and confirmed; click Finish

Step 25: Verify Successful Boot to the Windows Lock Screen

After the Administrator password is set and you click Finish, Windows Server will complete its initialization and display the lock screen. The lock screen confirms that the operating system installation has completed successfully. The screen will show the current time and date along with the instruction "Press Ctrl+Alt+Delete to unlock."

Windows Server 2022 lock screen confirming successful installation
Figure 21 — Windows Server 2022 lock screen confirming successful installation and first boot

Step 26: Log In and Verify the Windows Desktop

Send the Ctrl+Alt+Delete key combination through the VNC client to unlock the session. Enter the Administrator password that you set in Step 24. Windows will complete the login process and display the Windows Server desktop, including the Server Manager splash screen. Verify that the desktop environment loads correctly.

Windows Server 2022 desktop loading with Server Manager splash screen
Figure 22 — Windows Server 2022 desktop loading with the Server Manager splash screen visible

Windows Server Manager Dashboard confirming successful login
Figure 23 — Windows Server Manager Dashboard confirming successful login and full OS deployment

5. Notes and Caveats

5.1 VirtIO Driver Version Compatibility

Oracle VirtIO Drivers ISO version 0.1.215 is the recommended version for use with Windows Server 2022 on ODA. Version 0.1.217 has a known driver signing issue on Windows Server 2022 that may prevent the viostor.inf driver from loading successfully during Setup. Always verify the driver version before staging the ISO on the shared repository.

5.2 amd64 / 2k22 Driver Folder Selection

When you browse the VirtIO ISO during driver loading, always navigate to the path amd64 > 2k22. The 2k22 folder corresponds to Windows Server 2022. Selecting an incorrect version folder, such as 2k19 for Server 2019, will result in an incompatible driver being offered. The installation will then fail at the drive selection step.

5.3 Unencrypted VNC Connection

The VNC connection to the ODA bare metal node operates without transport encryption, as noted in the RealVNC warning dialog. Make sure that this access is conducted exclusively over a secured internal network segment. Do not expose VNC ports to untrusted networks.

Charles is an Oracle ACE Director, VMware vExpert, and author of over a dozen books in the Oracle ecosystem.