Pythian Blog: Technical Track

Recent Changes to Oracle SE Licensing Rules: Higher Price?

Recently, while answering a question, I came across what appeared to be a change to the rules for licensing Oracle Standard Edition — a change that appears to be subtle on the surface, but one that could have significant and surprising repercussions.

It was with considerable fanfare that Oracle announced, several years ago, the last major change to the licensing rules for Standard Edition — that multi-core processors would be counted as a single CPU for the purposes of licensing Standard Edition products. (For Enterprise Edition, Oracle continued to count each core as a separate “processor”, but then provided price discounts, presumably in recognition that a 2- 4- or 8-core CPU rarely provides equivalent performance to an equivalent number of single-core processors running at the same clock rate).

The revised licensing rule went like this (I have highlighted the relevant text in bold):

Processor: shall be defined as all processors where the Oracle programs are installed and/or running. Programs licensed on a processor basis may be accessed by your internal users (including agents and contractors) and by your third party users. For the purpose of counting the number of processors which require licensing for a Sun UltraSPARC T1 processor with 4, 6 or 8 cores at 1.0 gigahertz or 8 cores at 1.2 gigahertz for only those servers specified on the Sun Server Table which can be accessed at https://oracle.com/contracts ,  cores shall be determined by multiplying the total number of cores by a factor of .25. For the purposes of counting the number of processors which require licensing for AMD and Intel multicore chips, cores shall be determined by multiplying the total number of cores by a factor of .50. For the purposes of counting the number of processors which require licensing for all hardware platforms not otherwise specified in this section, a multicore chip with “n” cores shall be determined by multiplying “n” cores by a factor of .75. All cores on all multicore chips for each licensed program for each factor listed below are to be aggregated before multiplying by the appropriate factor and all fractions of a number are to be rounded up to the next whole number. When licensing Oracle programs with Standard Edition One or Standard Edition in the product name, a processor is counted equivalent to a socket.

This is exactly the definition you will find today today in Oracle’s online store, for example here.1 In fact, being lazy and not having access to a two-year-old copy of the OLSA, that is exactly where I got the text above.

Now, that little bit of bold text was a pretty big deal. As I understood it, and everybody I could find seemed to agree, this affected both the licensing cost and the eligibility rules. These 23 simple words now meant that Oracle Standard Edition was limited to computers with a maximum capacity of four (4) CPU sockets, not four processor cores. Although multi-core processors were — at the time, several years ago — relatively new, at least in the “commodity hardware” space, we all new that Intel and AMD had near-term plans for 4-core and eventually event 6- and 8-core processors. Suddenly, we could build an Oracle database server with 16 processors (cores) and 16GB of RAM or more, for less than $200,000. (Prior to this change, you would pay $640,000 — list price — just for the Enterprise Edition database licenses.)

But now, it seems, all of this is changing again, only this time, not for the better.

So what exactly has changed? The text above came right off of Oracle’s website this very day, right? Yes, it did. But it did not come from the Oracle License and Services Agreement (OLSA).2

Here is the new definition, from the current OLSA (revision V050108, last updated 01 May, 2008 it would seem):

Processor: Processor: shall be defined as all processors where the Oracle programs are installed and/or running. Programs licensed on processor basis may be accessed by your internal users (including agents and contractors) and by your third party users. For the purposes of counting the number of processors which require licensing for a Sun UltraSPARC T1 processor with 4, 6 or 8 cores at 1.0 gigahertz or 8 cores at 1.2 gigahertz for only those servers specified on the Sun Server Table which can be accessed at https://oracle.com/contracts , cores shall be determined by multiplying the total number of cores by a core processor licensing factor of .25. For the purposes of counting the number of processors which require licensing for AMD and Intel multicore chips, cores shall be determined by multiplying the total number of cores by a core processor licensing factor of .50. For the purposes of counting the number of processors which require licensing for all hardware platforms not otherwise specified in this section, a multicore chip with “n” cores shall be determined by multiplying “n” cores by a core processor licensing factor of .75. All cores on all multicore chips for each licensed program for each core processor licensing factor listed above are to be aggregated before multiplying by the appropriate core processor licensing factor and all fractions of a number are to be rounded up to the next whole number. When licensing Oracle programs with Standard Edition One or Standard Edition in the product name, a processor is counted equivalent to an occupied socket; however, in the case of multi-chip modules, each chip in the multi-chip module is counted as one occupied socket.

Yes, they printed the word “Processor” twice. I did not add that. All I have added is the boldface.

Oracle has added 18 new words to the definition of “processor” as it applies to Standard Edition products. Now, a “processor” is a “socket”, but where “multi-chip-modules” exist (note: no definition is provided for that), each chip in the multi-chip module is a “socket”.

So, now you want to license Oracle Standard Edition for a commodity server with 4 quad-core Intel Xeon processors. Your server has only four “physical sockets” (places where you can plug a CPU module into the motherboard), so this everything is good, right?

Not so fast! Intel’s quad-core Xeon processors are (for now, anyway) implemented as Multi-Chip Modules (MCM). Well, at least some of them are. They each contain two processor “chips” or “dies”, each providing two processor cores. So now, each of these CPU modules counts as at least two sockets. The server now has eight sockets, and it is no longer eligible for Standard Edition licenses.

But wait. There’s more. Remember — each chip in the multi-core module counts as a socket. That is what the OLSA says. But exactly how many chips are in this Multi-Core Module? We know there are two processor chips. But there could be other chips in there that we don’t know about (and Intel may not be talking about them either). I tried to find this information on Intel’s website, to my complete dissatisfaction. All I could find was a drawing (i.e., an “artistic rendering”) of what the quad-core Xeon chips look like when you take the top off. The drawing shows two processors dies, as expected, but it also shows nine other smaller “chips” that look like they may be RAM modules. (Makes sense; since we have an MCM anyway, we might as well stuff some extra L2 cache in there, right?)

But whatever the purpose of these “chips”, they are still “chips” — assuming they are actually there. And under the new licensing rules, they are counted as “occupied sockets”, just like all the other chips in the MCM. My hypothetical “cheap and powerful” Oracle database server now has not four “sockets”, but 44 sockets. Even if it was still eligible for Standard Edition licensing, the list price for Standard Edition on this server is now $660,000; a little more than twice the list price for Enterprise Edition on the same hardware.

And it gets even worse! “Multi-core” processors are not the only ones implemented with multi-chip-modules. Multi-chip-modules were considered “innovative” in the 1990s, as we see with this example. Once their advantages became known, it became a relatively common practice to deploy single-core processors (they were pretty much all still single-core back then) like the Pentium Pro and Pentium-II as a multi-chip-modules with a processor chip, an SRAM cache chip, and maybe a memory controller all bundled together in a single package. (This photo of the guts of a Pentium-II seems to show 23 distinct chips inside the module. This article describes a single-core SPARC CPU designed in 1994, packaged as an MCM containing six distinct chips.) There are lots of cost/performance advantages to building MCMs, so I expect that this must still be a common practice even today — such a common practice that it probably isn’t even discussed any more.

Do you know how many chips are in the CPU modules you are using today? Well, if you plan to buy new Standard Edition licenses, is seems that you now need to know!

This just can’t be right, can it? Somebody must have made a mistake. I hope it’s me!

Mistake or not, though, there is a clear moral to this story. You need to read the license agreement, even when you are only planning a purchase. Trust me — reading the license after the P.O.s have been cut will not make you look good in a situation like this. And not reading the license would be a major mistake indeed!


1. Chances are the last hyperlink will not work for you. You may have to go visit the Oracle online store, choose your country of preference, then find and click on the link labeled “License Definitions”.

2. Again, that hyperlink probably will not work for you; if you followed my earlier description to find Oracle’s “License Definitions (Abbreviated)”, you can get a copy of the current OLSA by clicking the hyperlink labeled “Oracle License & Services Agreement” on that page.

No Comments Yet

Let us know what you think

Subscribe by email