Skip to Main Content
  • Questions
  • Hardware Planning for Oracle 19c Database SE2

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Jeff.

Asked: August 26, 2022 - 10:28 am UTC

Last updated: September 01, 2022 - 3:57 am UTC

Version: 19c

Viewed 10K+ times! This question is

You Asked

Hi,

We are recently considering to migrate very old Oracle database to 19c, and now planning what hardware should get us the best processing efficiency per $.
Basically, we run "many database instances" on a single Oracle server, and know that Oracle SE2 will automatically limit the use of 16 CPU threads at a time. However, I don't understand what would be best in our CPU choices:

E.g.
1) If we buy system with 1 CPU with 16 cores VS system with 1 CPU with 48 cores (suppose the cores are of same frequency), do we get better "scalability" with the 48 cores system? We have many database instances, do they spread across different CPU threads, thus making the CPU not as busy as the 16 cores system, and thus allow us to run "more" instances?

2) Following question 1), when choosing CPUs, should we prefer 16 cores but higher CPU frequency (faster on each single core) system, or 48 cores (or may be just 32 cores) but lower CPU frequency system?

3) In case 16 cores systems is best because more cores do not help us scale out, since modern CPUs are with hyper-threading (i.e. a 16 cores CPU are seen as 32 threading in the operating system), should we disable the hyper-threading feature to maximize the speed of using each of the Oracle limited 16 threading?

Thanks in advance for your attention,
Jeff

and Connor said...

OK, lots to unpack here :-)

Firstly - a lot depends on the plans for the server. If it is to *solely* run Oracle SE, then having a large surplus of cores is just a waste of money. Of course, if that server is going to be used for other purposes as well, then those extra cores can be put to use elsewhere.

Lets assume you're going with one box and its only going to run SE. So I only "need" 16 cores, but in reality, I'd want a few more than that because no machine (irrespective of architecture) runs great when its totally maxed out near capacity. Hence you might look at something with (say) 24 cores. Alternatively you could look at a 2 socket machine with 12cores each, because that gives you some redundancy should you lose a CPU, and the lower the core count, typically the higher frequency you can run the CPU at.

On that topic, I would want the absolute fastest CPU's I can get because its not like having more cores and more threads gains you performance, because we set that hard limit at 16 "cores worth" of work anyway. The challenge here is the definition of "fast". Yes it includes frequency, but things like L1/L2/L3 cache sizes and the type of memory supported also play a roll here, so you should take that into consideration as well. For the vast majority of Oracle workloads, niche CPU features like floating-point performance etc don't really gain you much, because almost all Oracle computational work is memory access/update and integer arithmetic. So its all about high frequency and fast memory access.

Having said all of that... the easy way to deal with all of this is run on a cloud system. Choose a nice low base CPU number, and then flick the switch on auto-scaling so you can handle the peaks, but for most of the time you're using the bare minimum amount of CPU (even less than 16 threads).


Rating

  (4 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

Jeff, August 30, 2022 - 8:09 am UTC

Hi Connor,
Thanks for your response.
Regarding "having a large surplus of cores" could be wasteful, since we need to run quite many instances of database, and having tried to test on a Oracle 19c SE2 edition by sending lot of CPU spinning tasks to 2 Oracle instances on a 32 core machine, it looked that each of the Oracle instance does able to use 16 threads, and be able to fully utilize the 32 core machines. Does that mean, when the server need to run multiple instances of database, it would be better to have more cores? And since Oracle restricted itself using 16 threads (per instance), it does not violate the SE2 license, right?

Regards,
Jeff
Connor McDonald
August 31, 2022 - 5:47 am UTC

That is correct. As long as you dont go over 2 sockets, then you're OK.

Since you're (a) limited to 2 sockets and (b) you want to run multiple databases on this box, then you probably want as many cores as you can

More instances in more cores for SE2

Ramon Caballero, August 30, 2022 - 3:54 pm UTC

Hi,
Just wanted to add my 2 cents.
1) Yes, more cores will help for the simple reason that you expect to have more than one instance. Oracle technical restriction is 16 user threads per instance. You are consolidating in a server, go for more cores.
2) Now that you go for more cores, it is better to have 2 sockets, which is the licensing limit for SE2, so 2 sockets, more cores and more cache per core, there are several models even in the same CPU class and memory limits as well; more speed means more wattage which translates to running costs (electricity). And please don't forget IO, Databases are usually bound by IO, and it is not the same an HD versus and SSD, vs NVMe, versus several IO paths for each and not just one or two devices.
3) This is highly dependent on your workload, some workloads benefit of no HT and higher speed because they are batch and others prefer always to have a free thread like java programs or very interactive processes. I recommend once you have your box to perform both tests, no need to reconfigure Oracle at all.
Hope it helps,

Jeff, August 31, 2022 - 6:14 am UTC

Connor and Ramon, thank you very much for your help. 👍
Connor McDonald
September 01, 2022 - 3:57 am UTC

glad to help, and dont forget that down the track, there's a scary good deal on to move from SE2 to Autonomous. Basically 1-for-1 on price, but on Autonomous you're basically getting all the enterprise level features

More to Explore

Administration

Need more information on Administration? Check out the Administrators guide for the Oracle Database