Honestly, I thought this issue was done and buried, but over the past few weeks I’ve seen this question come up multiple times, so let’s get this cleared up.
Let’s go right to the source – Oracle’s own documentation. If you read Oracle’s partitioning document you will see that this is Oracle’s stance as of January 24, 2011. In it, it discusses soft partitioning and hard partitioning. Soft partitioning is leveraging the Operating System features to limit the number of CPUs an Oracle instance (or Oracle virtual machine) can run on. Hard partitioning physically partitions a large server into smaller self contained servers. The document lists what Oracle considers valid examples of each type of partitioning. In the document, Oracle specifically defines VMware’s partitioning (and Oracle VM’s partitioning) as soft partitioning. In the document, Oracle states that soft partitioning isn’t a “valid” means of restricting the amount of software licenses and you must license all the processors on a given server. Note that later in the document Oracle states that Oracle VM CAN be used for hard partitioning if you set it up as described in this document which goes into detail on how to bind an OracleVM VM to physical processors / cores. There is no mention in the documents if binding a VMware VM to a physical processor/core would also count as hard partitioning. Oracle does state that their list of partitioning technologies isn’t comprehensive, so things are left open to interpretation.
Please note I highly recommend you go and read these documents yourself and draw your own conclusions, and of course you can and should talk with an Oracle-employed licensing expert. In these documents Oracle states I cannot reproduce the document in any manner without express written consent so I am only telling you my interpretation.
VMware has three different techniques for restricting a VM to a specific subset of processors / cores. They are VMware vCenter clusters, VMware DRS affinity rules, and vSphere CPU affinity (pinning). I advise my clients to use the VMware vCenter cluster technique, but your organization might have a different interpretation. To describe the different VMware techniques, I will use an example of a 10 host VMware vCenter datacenter, with each host having 2 physical sockets and 4 cores per socket. Therefore, this entire VMware vCenter datacenter has 80 physical x86 cores (4*2*10) of processing power.
VMware vCenter clusters are logical clusters inside of vCenter made up of one or more hosts. By assigning a VM to that cluster, you are forcing that VM to run ONLY on the host(s) that make up that cluster. For example, if you create a 2 host VMware vCenter cluster inside your 10 host VMware datacenter, your VM can run on any processors / cores inside that 2 host cluster. As a result, Oracle licensing requires you to license all 16 (4*2*2) cores in that cluster. Note that you are restricting other non-Oracle workloads from also running on these hosts, so your Oracle VMs will get the best possible performance available on those hosts, possibly at the detriment to your non-Oracle workloads running on other hosts.
In vSphere 4.1, a DRS rule called “Virtual Machines to hosts” became available. That rule allows you to limit the location of a VM to specific host(s) in the VMware vCenter cluster. For example, if you create a DRS affinity rule assigning a VM to a single host inside your VMware cluster, your VM can run on any processors / cores inside that host. As a result, Oracle licensing requires you to license all 8 (4*2*1) cores on that host. You can read more about the VM to hosts affinity rule in this post by Frank Denneman who is a co-author (along with Duncan Epping) of vSphere 4.1 HA and DRS technical deepdive. Note that you aren’t restricting other non-Oracle workloads from also running on this host and thus you could have less than optimal Oracle performance.
VMware vSphere itself allows you to pin a virtual machine to one or more physical cores on a server using vSphere’s CPU affinity settings. You can read about the details of this in the vSphere resource management guide version 4.1 starting on page 20. This is the technical equivalent of the Oracle VM technique of binding a VM to a specific subset of physical processors / cores. For example, if you pin your Oracle VM to two physical cores, your VM can only run on those two physical cores. As a result, Oracle licensing requires you to license those 2 cores. Note that you aren’t restricting other non-Oracle workloads from also running on this core and thus you could have less than optimal Oracle performance.
Does Oracle consider VMware’s CPU affinity settings an acceptable form of partitioning? What about VMware DRS VM to host affinity rules? I have seen no official documentation from Oracle either way. I advise my clients to always buy enough Oracle licenses to allow Oracle to run on at least two hosts. This allows the customer to not be concerned about Oracle’s licensing ambiguity (as you’re licensing the entire hosts Oracle can run on) and also allows the customer to get the benefits of VMware such as vMotion, HA, DRS and FT to reduce and possibly eliminate downtime or less than optimal performance for their Oracle systems. I have had a client who went from running Oracle physical (with the one physical server having 8 processors / cores) to virtual (with the physical server having 8 processors / cores) and the client wanting the benefits of vMotion, HA, DRS and FT but without having to buy Oracle licenses for an additional 8 CPU host. According to the Oracle partitioning document I referenced earlier, Oracle does allow customers to only licenses processors / cores that are turned on. For this customer I therefore recommended that they turn off half the processors / cores in each host. Please note this limited their VMs to a maximum of 4 cores each- the amount of cores available on each host.
Licensing Oracle on VMware vSphere is an area of much confusion and disagreement due to Oracle not presenting clear public guidelines on whether DRS Affinity rules or vSphere CPU affinity are valid methods of partitioning. I hope that Oracle addresses this licensing confusion soon, but until then, separate VMware vCenter clusters are the least legally risky way to virtualize Oracle. I would love for someone from Oracle to officially and on the record address the techniques I mentioned in this post.
14 thoughts on “Licensing Oracle on VMware vSphere”
Very thorough, Jay.
All we would ask of Oracle is that they give us something equivalent to what Microsoft has done with the “Datacenter Edition” of Windows. We’ll license all of our hosts, but let us run as much or as many Oracle instances on there as we want to.
Wait. That’s the point, and this is what most people miss. You can already do this! Nice description of what I like to call “Cluster Islands.” Physical segregation so that there is never any question. You can almost architect the cluster around how many licenses you own.
One other thing you forgot to talk about, btw. Standard vs. Enterprise! $17k per socket, versus $47k per .5(n) core! Take the time to evaluate if you REALLY need Enterprise! You can even get RAC in standard now!
Thanks Nick! I do need to discuss the differences between Standard and Enterprise – I often forget to consider it since I’m always in environments where Oracle E-Business suite is present and it requires Enterprise Edition. There’s definitely big money to be saved if you can avoid Enterprise licenses.
> “Cluster Islands”
We just came out of silos… do we want to get into “islands” now?
Also … what you suggest may be good for an Enteprise that has hundreds of Oracle DB but what about an organization that has one or two? Do you create an “island” for that? Or do you license all your 4-5-10 hosts in the cluster? Either way it sounds odd to me.
My understanding is that Oracle does not recognise processor disabling via BIOS as a valid license modification technique, which again just goes to show the confusion here. Oracle like to keep everyone guessing, that is the only thing we can be sure of…
Jay, thanks for sharing your insights – always appreciate the voice of customers!
Just saw your comment on my post “Yes, Oracle is supported on VMware http://bit.ly/hQluBv” in the VMware apps blog. Yes, we’ll be sure to talk about licensing soon…. stay tuned!
Carl, all I can say is to check out the second half of the partition document from Oracle…it states ( in my interpretation of course since I am not allowed to quote) that processor disabling is allowed.
I belive CPU Affinity (pinning) can only be set when not using DRS at the same time. The option is removed for a VM inside a DRS cluster.
Just an update, that in my recent project-based discussions with Oracle they have verbally stated that CPU disabling via BIOS is considered a ‘soft partition’ and they are requesting license payment for all CPUs/cores in the target system.
We have asked for written confirmation but nothing as yet.
Wow, keep me informed please, since that appears to be in direct contradiction to their partitioning document.
I suspect you have an over zealous sales person, but who knows.
Carl, have you heard more on the licensing issue with CPU disabling via BIOS?
Oracle does NOT recognise CPU/core disabling in the BIOS as a means of hard partitioning or reducing the required Oracle licence count (this has come up in several discussions in 2009 and 2010). It’s counter-intuitive I know.
I understand what you’re saying Simon, and I do appreciate the comment. As we’ve both seen, this has come up in several discussions on the Internet over the years, and I’ve approached numerous Oracle reps about this and been told similar things – but every time I’ve asked Oracle to put this in official legal contract writing, they have demurred. The best official communication in writing I have is the partitioning guide which I read to state that Oracle does let customers license only CPUs turned on. Unfortunately their legalese says I cannot reproduce the document, but it is linked to in the article you commend on.
Thanks for stopping by and I do appreciate your feedback.
Thanks J, for a great article, we have been advising clients for the past 4 years that Licensing Oracle on VMware is a challenge. In my experience core/disabling is not on the list of Hard-partitioning technologies as mentioned in the Oracle guide. The only alternative is to remove the CPU’s, in some cases that is exactly what the client has done. I agree that vendors and customers should be looking closely at virtualization policies, and pushing the Vendors on a contract negotiation may be the only way to get what you want.