Part 1: Becoming a great engineer

I would just like to say this post is in NO WAY insinuating I am a great engineer. I believe that no matter how much you know or think you know there is always room for improvement and development. That being said these are some things I believe makes a technologist really stand out from the rest of the crowd.

Learning


The most important step to becoming an awesome engineer is the ability to learn. Might seem pretty obvious, of course, you have to learn to become an engineer, but the truth is you must have a love of learning and a passion for your trade to not only learn but retain the information that you absorb. This requires patience and practicing your trade even when away from the working environment. This is a pretty easy skill but takes a lot of dedication. Spending 8-12 Hours a day in front of the computer might make you loath technology when you are home, which is fine but Spending time working on your own learning path and interests becomes easier the deeper and more often you dive into it.

Home Labs!

Set up your own home lab! Home labs are an awesome way to test, troubleshoot, and/or break technology. They offer you the perfect opportunity to go all out on a test environment for your own sick pleasure, like breaking a perfectly good nested ESXi hosts or seeing what happens when you rip PostGres out of Vcenter. All this can be done in a home lab and also provide awesome learning opportunities without the risk of bringing down production of work environments.  Some great articles for home labs can be found on google. But don’t be taken aback by the high prices that are shown on some home labs, you can run an awesome lab on a single host with a lot of memory and CPU. I build my home lab for about 600 dollars and it works just fine for what I use it for.

Social Channels

Social channels are huge in the learning path for any technologist. Networks like twitter offer a fast and current view on new technology releases and news. It’s also great for networking, following your favorite engineers or CEO’s provides you with an opportunity to not only pick their brains on certain things but also connect with them and bring them up in topics you are unsure about. With the various technologies new and old represented on sites like twitter, there are unlimited opportunities to learn. Reddit is another great resource for information and learning. Reddit has become the epicenter for questions and answers on the web. You can find literally anything! Set up your account and starting asking tough questions that have you puzzled. this will hopefully lead to some solids answers. But also beware Reddit isn’t very moderated on some sites and you can get some wrong information, but in that case, it is usually discredited pretty fast.

Why?

The one word “Why?” is, in my opinion, the most important word someone can ask. Not only in technology but in any field. “Why?” is that gateway to every question in technology or life for that matter, It opens up a gateway of knowledge. I find this one-word phrase irreplaceable, trying to understand technology isn’t a “Know one, fit all” experience. In order to properly grasp technology and the concept of being a technologist you must understand that one product is not one technology, it is a buffet of many different technologies. Some of those technologies may be bleeding edge and barely touch upon, and some may be two decades old but still running strong.  Asking why will bring out the questions that sometimes aren’t easily discovered otherwise. “Why?” is by far the most important question a technologist can ask.

Oracle licensing and VMware

I was talking to a DBA the other day about oracle licensing, so I decided to write a post about it. Not only because it is confusing as hell but it’s a good to know for any potential oracle implementations in the future. But before we begin a couple of terms we need to know and understand for any of this to make even the slightest of sense.

We are going to assume enterprise licensing will be used in this case.


Soft Partitioning-

Oracle definition- “Soft partitioning segments the operating system using OS resource managers. The operating system limits the number of CPUs where an Oracle database is running by creating areas where CPU resources are allocated to applications within the same operating system. This is a flexible way of managing data processing resources since the CPU capacity can be changed fairly easily, as additional resource is needed.” – As stated in http://www.oracle.com/us/corporate/pricing/partitioning-070609.pdf

 


Hard Partitioning-

Oracle definition- “Hard partitioning physically segments a server, by taking a single large server and separating it into distinct smaller systems. Each separated system acts as a physically independent, self-contained server, typically with its own CPUs, operating system, separate boot area, memory, input/output subsystem and network resources.” – As stated in http://www.oracle.com/us/corporate/pricing/partitioning-070609.pdf


Now if you had a virtual machine that was running an oracle database you would assume that the partitioning method that would be used is soft partitioning. Because having the ESXi software make software partitions out of a physical socket .

BUT this is not the case. There is a key phrase in that definition that really stands out.

“The operating system limits the number of CPUs where an Oracle database is running by creating areas where CPU resources are allocated to applications within the same operating system.”

Since assigning a vCPU and vCores to a machine doesn’t limit that particular VM to only use only those resources  that’s one reason why oracle does not consider VMware a soft partitioning product.  (Unless you have CPU affinity enabled)

If you had a box with 4 physical sockets and 8 cores per socket that VM will be able to use any of the 32 cores. Oracle has a simple formula to offer a good insight into how much licensing will cost for a database, it looks something like this.

# of sockets*# of cores*CPU factor*License

So let’s say for a 4 socket intel Xeon system with 8 cores per socket and enterprise licensing. CPU factor chart will be found here http://www.oracle.com/us/corporate/contracts/processor-core-factor-table-070634.pdf

4*8*.5*$47,500= $760,000 Per VM Per host.

That is a lot of money! But it gets more complicated than that. Say this particular VM is in a 3 host cluster. When you introduce VMware technologies like DRS and vMotion is that considered partitioning technology? So does the cluster need to be licensed? There has been more discussion on this in the IT community than there has been about aliens in Area 51. But the short answer is yes. if you have a 3 node cluster with the same specs stated above you will need to have all of those physical machines licensed. Any CPU that the oracle server can touch ( or potentially touch) needs to be licensed under the oracle license agreement.

Here might be a couple of solutions to this issue.

The first solution is to make your own cluster for Oracle database. Make it a 2 node cluster that in the event of a host failure you have it moved to another node. Spec out the physical host configurations to match exactly what you need and not over power it. If you need a 2 socket 4 core setup then just buy 2 of those. Don’t over provision!

The second solution might be to set up CPU affinity. Set the database to only use one particular CPU in the host and make sure it stays there. Now there are obvious downsides to this, one failing over would not happen. This practice has a lot of debate surrounding it. and definitely use it at your own risk. There has been mixed results from Oracle and the team of lawyers they employ.

And the third solution is probably the most painful. Pay Oracle. It’s simple and feels like you need a shot of penicillin after but it is the easiest solution.

-Resources and sources-

http://www.oracle.com/us/corporate/pricing/partitioning-070609.pdf

http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf

Thanks for reading!

I try my best to give the most accurate information possible! But I don’t know everything. If you found something I said not accurate let me know!