The Churchill framework was designed to build desktop RACs on Linux for one especially good reason: it’s free of charge to use as many copies of the O/S as you like. So, in a system where you have to build at least 3 and maybe 6 servers, six lots of free is a good deal cheaper than six lots of Microsoft Server licenses!
But I’ve received numerous requests to do a Windows version of Churchill over the years, and there are ways to (temporarily!) get round the licensing cost issues, so I’ve finally relented -though, I hasten to add, there’s no way I know of to automate the build as I have in the Linux version. Desktop RAC-on-Windows is a strictly hand-built affair!
I should mention too that there are lots of ways to implement this sort of thing on Windows, depending on the physical hardware you have available to you. Mine is designed to run on my Windows 10 Enterprise Edition laptop, which happily comes with 1TB of solid state hard disk and 16GB RAM. I wouldn’t want to do a Windows desktop RAC with anything much less capable than that!
For a RAC build on Windows, you will need the following software:
- Three copies of Windows Server 2012 R2
- One copy of Oracle Database 12c Release 1 (188.8.131.52.0) for Microsoft Windows (x64)
- One copy of Oracle Database Grid Infrastructure (184.108.40.206.0) for Microsoft Windows (x64)
- Some form of virtualization software
2.1 Database Software
The Oracle database and grid infrastructure software can be obtained for free from the Oracle Technology Network website. You need to register first, but registration is free and painless.
2.2 Windows Software
Getting your hands on three copies of Windows 2012R2 Server without spending shed-loads of dollars is a bit more of a challenge, however! Fortunately, Microsoft allows you to download ISOs of the software for free that are valid for 180 days -and which can be extended beyond that time legitimately.
To obtain the free evaluation downloads, just visit the Microsoft Technet website: you will need a Microsoft-related account, but those are again freely available. Click the “Evaluate Now” option on that Technet website and then select to download the ISO of Windows 2012 R2 Server:
After clicking a few more options from there (don’t include the System Center, pick a language), you should end up with a usable operating system install DVD image.
Incidentally, when your evaluation edition gets near the 180-days expiry time, you can ‘rearm’ it for an additional 180 days using the command slmgr.vbs /rearm (typed into a CMD window running with elevated Administrator privileges).
2.3 Virtualization Software
You can use pretty much any Windows-based virtualization software you choose. VirtualBox has the inestimable advantage of being free of charge; so is VMware Player -though it lacks essentials such as virtual network managers and snapshot capabilities. VMware Workstation costs (quite a lot) but works nicely and performs well. Hyper-V I’ve had problems with: where I have built more Linux RACs on VMware Workstation than I’ve had hot dinners, I’ve never managed to achieve it on Hyper-V: nodes are forever being evicted, rebooted and what have you. There seems some deep level at which Hyper-V isn’t suited to virtualizing a RAC, but I don’t know what that might be. By all means give it a try if you like, but I don’t bother with it anymore myself.
Since I’ve long-since paid for it, I’m using VMware Workstation. The instructions should be readily transferable to any other virtualization platform, though.
3.0 Virtual Machine Configurations
For a 2-node RAC, we’re going to build 3 virtual machines. One will act as the ‘Churchill Server’ -that is, the relatively low-powered server which provides all the networking and storage solutions to the other two nodes. And those other two nodes will be relatively high-powered servers which will actually run the Oracle database software in a clustered configuration.
For the avoidance of any possible confusion, and because this is hand-built Windows work and not automated Linux work, I’m going to name (and refer to) the low-powered ‘helper server’ as Augustus, and the two high-powered RAC nodes will be called Tiberius and Caligula. Yes, we’re doing the Romans… because I’ve run out of British prime ministers and physicists You can, of course, use whatever hostnames you like, but if you do, you’ll have to make a mental note to swap the names throughout the rest of this article. For me, Romans it is…
Augustus needs to be built as follows:
- 1GB RAM (more if you have it available)
- 70GB Virtual Hard Disk
- 1 network interface, configured Host-Only
- 1 CPU
Augustus will act as the primary domain controller of a domain I’m going to call spqr.com (but feel free to cook up your own domain name when the time comes). I’m going to assign it the IP address 192.168.8.250.
Both Tiberius and Caligula are built with slightly higher resource levels than Augustus, as follows:
- 3GB RAM each (ideally, at least 4GB per node, but 3GB will just about work)
- 30GB Virtual Hard Disks each
- 2 network interfaces configured Host-Only, per server
- 2 x CPU (or 2 threads), per server
Tiberius and Caligula will both be member servers of the spqr.com domain, and will look to Augustus for DNS resolution and time coordination. Tiberius will be assigned IP address 192.168.8.101; Caligula 192.168.8.102.
In a RAC, nodes are also assigned virtual IP addresses. In this case, tiberius-vip will be given 192.168.8.111 and caligula-vip 192.168.8.112.
Nodes also have to be able to connect via a private interconnect (hence the need for 2 network interfaces per server). In this case, tiberius-priv will be 10.0.0.101 and calilgula-priv will be 10.0.0.102.
From the above resource figures, it follows that a 2-node RAC built like this needs to run on a physical machine using at least a quad-core CPU and with at least 130GB of free hard disk space and 8GB RAM -if you don’t mind your phyisical machine running with just 1GB RAM for itself. For comfortable results, you really need 16GB physical RAM, from which you can make your minimalist 7GB virtual allocations with plenty to spare. If you’re doing it on a 16GB physical machine, though, I would strongly recommending bumping virtual memory allocations up to 4GB per virtual machine: you’ll suppress all installation ‘resource low’ warning messages if you do, which makes for a less stressful installation process!
I might mention that I’ve done a 2-node 12c RAC on Windows VMs which were allocated just 2GB RAM each. I got lots of warnings about ‘you have insufficient memory and we might start having to swap to disk’, but it did work (slowly!). If you are stuck with a laptop configured with just 8GB RAM, for example, this 2-node RAC is do-able and it ends up performing OK. But it is skating on thin ice.
4.0 Virtual Networks
Before you start building any virtual machines, you first need to make sure that your virtualization software is configured to handle host-only networking correctly. In particular, you want to make sure that it will use the 192.168.8.x subnet for host-only connections (if you’re going to use the same IP address assignments as me, of course), and that it won’t try and allocate IP addresses via DHCP on that subnet.
In VMware Workstation, you’d do that by clicking the Edit → Virtual Network Editor menu options, clicking the [Change Settings] button at the bottom of the screen that then appears and configuring it like so:
I’ve selected the Host-only interface at the top of the screen (usually identified as VMnet1) and in the very bottom of the screen, I’ve told it to be given IP addresses in the 192.168.8.0 subnet, masked 255.255.255.0. I’ve also unchecked the option to ‘use local DHCP service’ on that interface. Note that in VMware, we configure our interfaces in this tool to end with a ‘.0’ -you’re describing a general subnet, not specifying a particular IP address.
In VirtualBox, you do the same thing by clicking File → Preferences on the VirtualBox Manager’s main screen, then selecting the Network option. Click the Host-only Networks tab. Add a new host-only network if necessary by clicking the button marked with a green ‘+’. You’ll be prompted to elevate your privileges by the User Account Control: agree to do that. Then click the little ‘screwdriver’ icon to configure your interface:
Here again I’m making sure the host-only adapter is operating in the 192.168.8.x subnet -but in VirtualBox you actually have to end that assignment with a .1, not a .0, because you’re actually assigning a specific IP address to this interface on your physical machine. Click on the DHCP Server tab after that to make sure the ‘Enable Server’ checkbox is switched off.
With that done, you now need to create an entirely new network interface -which will also be host-only- but will this time take an IP address in the 10.0.0.x range. Here’s me doing that in VMware’s Virtual Network Editor:
I’ve acquired Administrator access to this configuration screen as before, clicked the [Add Network…] button and then chosen a ‘network name’ for the new ‘network card’ -in my case, VMnet2. I’ve then highlighted that new interface and filled in the lower part of the screen: it’s host-only, there’s no DHCP service and its subnet is 10.0.0.0, subnetmask 255.255.255.0.