Archive Page 12

Little Things Doth Crabby Make – Part XII.1 Please, DD, Lose My Data! I Didn’t Need That Other 4K Anyway.

I’ve never done a “dot release”  for any post in my Little Things Doth Crabby Make series but there is a first time for everything. In yesterday’s post (Part I) I blogged about how dd(1) on Linux will happily let you specify arbitrarily huge values for the bs (block size) option yet doing so will cause silent data loss. One reader commented on the blog and several emailed me to point out that the proof I specified is faulty. They are right, but that fact doesn’t change the truth. I discovered this data loss with a simple file-to-file dd operation but thought piping it to wc(1) would make the point easier to understand. The problem is doing so meant I was checking the return from wc(1) not dd(1).  No matter:


# dd if=OH.tar.gz bs=2147483648 of=newfile count=1
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB) copied, 3.57895 seconds, 600 MB/s
# echo $?
0
# bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
2147483648-2147479552
4096
# ls -l newfile
-rw-r--r-- 1 root root 2147479552 Jun 17 12:06 newfile


Little Things Doth Crabby Make – Part XII. Please, DD, Lose My Data! I Didn’t Need That Other 4K Anyway.

It’s been a while since the last installment in my Little Things Doth Crabby Make series. The full series can be found here. So, what’s made me crabby this time? Well, when a Linux utility returns a success code to me I expect that to mean it did what I told it to do. Well…

What’s 4K Between Friends?
Really? I’m just picky! If I use dd(1) to write 2GB (2 * 2^30 sort of 2GB by the way) I’m not looking for a successful transfer of (2 * 2 ^ 30) – 4096 bytes! Imagine that.

Folks, don’t trust the return code from dd(1). I’ve been burned more than once.

Is He Totally Crazy? Using dd(1) with a 2GB write size?
Sure, why not? If it doesn’t want to do what I ask it is supposed to fail the command, not lose data.

I just did this on a 2.6.18 Kernel:

# file /tmp/OH.tar
/tmp/OH.tar: POSIX tar archive
# ls -lh  /tmp/OH.tar
-rw-r--r-- 1 oradb oinstall 19G Jun 16 17:23 /tmp/OH.tar
# dd if=/tmp/OH.tar bs=2147483648 count=1 | wc -c
0+1 records in
0+1 records out
2147479552
2147479552 bytes (2.1 GB) copied, 2.52849 seconds, 849 MB/s
# echo $?
0
# bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2147483648-2147479552
4096

Do It Yourself Exadata Performance! Really? Part III.

I just noticed that the vote count for my Oracle Mix Suggest-A-Session is up to 92! I’m flattered and thanks for the votes, folks. I promise this is the last post on this thread!

The session I aim to present has some content that I delivered to our EMEA Sales Consultants during an event we had in Berlin back in April. I did that presentation during one of our one evening sessions and was surprised to find that one of the attendees took a photo of the costume I chose.

Perhaps I should have saved that hat for viewing any World Cup games featuring team Germany?

Do It Yourself Exadata Performance! Really? Part II.

Yes, shamelessly, I’m still groveling for more votes. My Suggest-A-Session vote count is at a modest 45! Come on folks, I know we can do better than that. If you don’t get there and vote I fear there is no way for me to get a podium for this topic unless you all collectively petition the executives to relinquish one of their speaking slots to me…and that simply doesn’t happen!

https://kevinclosson.wordpress.com/2010/06/04/do-it-yourself-exadata-level-performance-really/

or

https://mix.oracle.com/oow10/proposals/10589-do-it-yourself-exadata-level-performance

Oracle Exadata Storage Server: No More SQL Tuning Required? Hooray!

I sometimes wonder if folks think I prefer poorly-tuned SQL. After all, I like hardware and everyone knows how effective it is to throw hardware at a poor query plan.

I think everyone in the world has already blogged it but I can’t resist the me-too excitement. On June 10 my fellow Oak Table Network members Jonathan Lewis and Kyle Hailey are offering a unique SQL tuning presentation. Read about it here:

The Ultimate SQL Tune-Off

But, honestly, does anyone really believe there is enough hardware in existence to throw at some of the more gruesome, poorly-tuned SQL I’ve seen? No. Bad SQL (plans) can cost hundreds of thousands percent increase in cost. No matter how fast your hardware is it certainly can’t mitigate potentially tens of millions more physical I/O than is really necessary. These guys know how to help you identify and fix such crippling SQL problems. But so does SQL Tuning Advisor.

What Does This Have To Do With Exadata?
So, no, not even highly-optimized solutions like Exadata and the Sun Oracle Database Machine are able to obviate SQL tuning. The Database Machine includes all the power of Oracle Database 11g and as we pointed out in the Winter Corporation paper covering early Exadata performance we routinely rely on SQL Tuning Advisor.

No, there is no such thing as sufficiently powerful hardware to handle SQL problems. Let’s see what we can learn in the Lewis v. Hailey webcast.

Do-It-Yourself Exadata-Level Performance? Really?

Oracle Mix is hosting “Suggest-a-Session” for OOW 2010. I thought that sounded like fun so I did the following…see what you think:

Do-It-Yourself Exadata-level Performance?

Since my blog has been essentially dormant for 2 months I expect about 43 click-throughs and no more than 42 votes 🙂

And, yes, I will kick up my blogging again soon and may even explain why my blogging has ceased for these 2 months…

This Is A VERY Boring Blog!

I’ve been stranded in Europe for 4 days and the situation persists!  Needless to say I haven’t been thinking that much about blogging 😦

I do have a post nearly ready to go about booting 4s48c Opteron 6100 systems with _enable_NUMA_support set to TRUE. There are some caveats, and some very significant benefits as well. I’ll post that as soon as my situation improves…

By the way, no I have not taken the time to learn the pronunciation of the Volcano. I’ve opted for the military moniker: E15.  🙂

Another “New” Blog Worth Reading.

Earlier this week I was taking a gander at what in-bound traffic my site was getting. One referrer stood out in my initial perusal. While I don’t know Gavin Soorma, just a bit of reading on his blog led me to conclude that this site is a jewel worth visiting:

Gavin Soorma

You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part III.

By The Way, How Many NUMA Nodes Is Your AMD Opteron 6100-Based Server?

In my on-going series about Oracle Database 11g configuration for NUMA systems I’ve spoken of the enabling parameter and how it changed from _enable_NUMA_optimization (11.1) to _enable_NUMA_support (11.2). For convenience sake I’ll point to the other two posts in the series for folks that care to catch up.

What does AMD Opteron 6100 (Magny-Cours) have to do with my on-going series on enabling/disabling NUMA features in Oracle Database? That’s a good question. However, wouldn’t it be premature to just presume each of these 12-core processors is a NUMA node?

The AMD Opteron 6100 is a Multi-Chip Module (MCM). The “package” is two hex-core processors essentially “glued” together and placed into a socket. Each die has its own memory controller (hint, hint). I wonder what the Operating System sees in the case of a 4-socket server? Let’s take a peek.

The following is output from the numactl(8) command on a 4s48c Opteron 6100 (G34)-based server:

# numactl --hardware
available: 8 nodes (0-7)
node 0 size: 8060 MB
node 0 free: 7152 MB
node 1 size: 16160 MB
node 1 free: 16007 MB
node 2 size: 8080 MB
node 2 free: 8052 MB
node 3 size: 16160 MB
node 3 free: 15512 MB
node 4 size: 8080 MB
node 4 free: 8063 MB
node 5 size: 16160 MB
node 5 free: 15974 MB
node 6 size: 8080 MB
node 6 free: 8051 MB
node 7 size: 16160 MB
node 7 free: 15519 MB
node distances:
node   0   1   2   3   4   5   6   7
  0:  10  16  16  22  16  22  16  22
  1:  16  10  22  16  16  22  22  16
  2:  16  22  10  16  16  16  16  16
  3:  22  16  16  10  16  16  22  22
  4:  16  16  16  16  10  16  16  22
  5:  22  22  16  16  16  10  22  16
  6:  16  22  16  22  16  22  10  16
  7:  22  16  16  22  22  16  16  10

Heft
It wasn’t that long ago that an 8-node NUMA system was so large that a fork lift was necessary to move it about (think Sequent, SGI, DG, DEC etc). Even much more recent 8-socket (thus 8 NUMA nodes) servers were a 2-man lift and quite large (e.g., 7U HP Proliant DL785). These days, however, an 8-node NUMA system like the AMD Opteron 6100 (G34) comes in a 2U package!

Is it time yet to stop thinking that NUMA is niche technology?

I’ll blog soon about booting Oracle to test NUMA optimizations on these 8-node servers.

Intel Xeon 5600 (Westmere EP) / AMD Opteron 6100 (Magny-Cours)

I received several emails from readers reporting that AnandTech moved the page I referred to in yesterday’s post about Intel Xeon 5600 (Westmere EP) / AMD Opteron 6100 (Magny-Cours). I fixed the link on that post so feel free to click through and get to the article there if you wish.

Intel Xeon 5600 (Westmere EP) vs AMD Opteron 6100 (Magny-Cours)

AnandTech has a significant amount of fresh coverage of the AMD 6100 (Magny-Cours) versus the Westmere EP. It is an interesting read:

Intel Xeon 5600 (Westmere EP) versus AMD Opteron 6100 (Magny-Cours)

It’s getting quite wordy now that it takes some three syllables to express how many cores there are in some processors. We’ve gone beyond hex-core and oct-core to dodeca-core. Hmmm…

You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part I.

In May 2009 I made a blog entry entitled You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part II. There had not yet been a Part I but as I pointed out in that post I would loop back and make Part I. Here it is. Better late than never.

Background
I originally planned to use Part I to stroll down memory lane (back to 1995) with a story about the then VP of Oracle RDBMS Development’s initial impression about the Sequent DYNIX/ptx NUMA API during a session where we presented it and how it would be beneficial to code to NUMA APIs sooner rather than later. We were mixing vision with the specific need of our port to be honest.

We were the first to have a production NUMA API to which Oracle could port and we were quite a bit sooner to the whole NUMA trend than anyone else. Our’s was the first production NUMA system.

Now, this VP is no longer at Oracle but the  (redacted) response was, “Why would we want to use any of this ^#$%.”  We (me and the three others presenting the API) were caught off guard. However, we all knew that the question was a really good question. There were still good companies making really tight, high-end SMPs with uniform memory.  Just because we (Sequent) had to move into NUMA architecture didn’t mean we were blind to the reality around us. However, one thing we knew for sure—all systems in the future would have NUMA attributes of varying levels. All our competition was either in varying stages of denial or doing what I like to refer to as “Poo-pooh it while you do it.” All the major players eventually came out with NUMA systems.  Some sooner, some later and the others died trying.

That takes us to Commodity NUMA and the new purpose of this “Part I” post.

Before I say a word about this Part I I’d like to point out that the concepts in Part II are of a “must-know” variety unless you relinquish your computing power to some sort of hosted facility where you don’t have the luxury of caring about the architecture upon which you run Oracle Database.

Part II was about the different types of NUMA (historical and present) and such knowledge will help you if you find yourself in a troubling performance situation that relates to NUMA. NUMA is commodity, as I point out, and we have to come to grips with that.

What Is He Blogging About?
The current state of commodity NUMA is very peculiar. These Commodity NUMA Implementations (CNI) systems are so tightly coupled that most folks don’t even realize they are running on a NUMA system. In fact, let me go out on a ledge. I assert that nobody is configuring Oracle Database 11g Release 2 with NUMA optimizations in spite of the fact that they are on a NUMA box (e.g., Nehalem EP, AMD Opterton). The reason I believe this is because the init.ora parameter to invoke Oracle NUMA awareness changed names from 11gR1 to 11gR2 as per My Oracle Support note 864633.1. The parameter changed from _enable_NUMA_optimization to enable_NUMA_support. I know nobody is setting this because if they had I can almost guarantee they would have googled for problems. Allow me to explain.

If Nobody is Googling It, Nobody is Doing It
Anyone who tests _enable_NUMA_support as per My Oracle Support note 864633.1 will likely experience the sorts of problems that I detail later in this post. But first, let’s see what they would get from google when they search for _enable_NUMA_support:

Yes, just as I thought…Google found nothing. But what is my point? My point is two-fold. First, I happen to know that Nehalem EP  with QPI and Opteron with AMD HyperTransport are such good technologies that you really don’t have to care that much about NUMA software optimizations. At least to this point of the game. Reading M.O.S note 1053332.1 (regards disabling Linux NUMA support for Oracle Database Machine hosts) sort of drives that point home. However, saying you don’t need to care about NUMA doesn’t mean you shouldn’t experiment. How can anyone say that setting _enable_NUMA_support is a total placebo in all cases? One can’t prove a negative.

If you dare, trust me when I say that an understanding of NUMA will be as essential in the next 10 years as understanding SMP (parallelism and concurrency) was in the last 20 years. OK, off my soapbox.

Some Lessons in Enabling Oracle NUMA Optimizations with Oracle Database 11g Release 2
This section of the blog aims to point out that even when you think you might have tested Oracle NUMA optimizations there is a chance you didn’t. You have to know the way to ensure you have NUMA optimizations in play. Why? Well, if the configuration is not right for enabling NUMA features, Oracle Database will simply ignore you. Consider the following session where I demonstrate the following:

  1. Evidence that I am on a NUMA system (numactl(8))
  2. I started up an instance with a pfile (p4.ora) that has _enable_NUMA_support set to TRUE
  3. The instance started but _enable_NUMA_support was forced back to FALSE

Note, in spite of event #3, the alert log will not report anything to you about what went wrong.

SQL>
SQL> !numactl --hardware
available: 2 nodes (0-1)
node 0 size: 36317 MB
node 0 free: 31761 MB
node 1 size: 36360 MB
node 1 free: 35425 MB
node distances:
node   0   1
  0:  10  21
  1:  21  10

SQL> startup pfile=./p4.ora
ORACLE instance started.

Total System Global Area 5746786304 bytes
Fixed Size                  2213216 bytes
Variable Size            1207962272 bytes
Database Buffers         4294967296 bytes
Redo Buffers              241643520 bytes
Database mounted.
Database opened.
SQL> show parameter _enable_NUMA_support

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_enable_NUMA_support                 boolean     FALSE

SQL>
SQL> !grep _enable_NUMA_support ./p4.ora
_enable_NUMA_support=TRUE

OK, so the instance is up and the parameter was reverted, what does the IPC shared memory segment look like?

SQL> !ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 0          root      644        72         2
0x00000000 32769      root      644        16384      2
0x00000000 65538      root      644        280        2
0xed304ac0 229380     oracle    660        4096       0
0x7393f7f4 1179653    oracle    660        5773459456 35
0x00000000 393223     oracle    644        790528     5          dest
0x00000000 425992     oracle    644        790528     5          dest
0x00000000 458761     oracle    644        790528     5          dest

Right, so I have no NUMA placement of the buffer pool. On Linux, Oracle must create multiple segments and allocate them on specific NUMA nodes (memory hierarchies). It was a little simpler for the first NUMA-aware port of Oracle (Sequent) since the APIs allowed for the creation of a single shared memory segment with regions of the segment placed onto different memories. Ho Hum.

What Went Wrong
Oracle could not find the libnuma.so it wanted to link with dlopen():

$ grep libnuma /tmp/strace.out | grep ENOENT | head
14626 open("/usr/lib64/libnuma.so", O_RDONLY) = -1 ENOENT (No such file or directory)
14627 open("/usr/lib64/libnuma.so", O_RDONLY) = -1 ENOENT (No such file or directory)

So I create the necessary symbolic link and subsequently boot the instance and inspect the shared memory segments. Here I see that I have a ~1GB segment for the variable SGA components and my buffer pool has been segmented into two roughly 2.3 GB segments.

# ls -l /usr/*64*/*numa*
lrwxrwxrwx 1 root root    23 Mar 17 09:25 /usr/lib64/libnuma.so -> /usr/lib64/libnuma.so.1
-rwxr-xr-x 1 root root 21752 Jul  7  2009 /usr/lib64/libnuma.so.1

SQL> show parameter db_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                        big integer 4G
SQL> show parameter NUMA_support

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_enable_NUMA_support                 boolean     TRUE
SQL> !ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 0          root      644        72         2
0x00000000 32769      root      644        16384      2
0x00000000 65538      root      644        280        2
0xed304ac0 229380     oracle    660        4096       0
0x00000000 2719749    oracle    660        1006632960 35
0x00000000 2752518    oracle    660        2483027968 35
0x00000000 393223     oracle    644        790528     6          dest
0x00000000 425992     oracle    644        790528     6          dest
0x00000000 458761     oracle    644        790528     6          dest
0x00000000 2785290    oracle    660        2281701376 35
0x7393f7f4 2818059    oracle    660        2097152    35

So there I have an SGA successfully created with _enable_NUMA_support set to TRUE. But, what strings appear in the alert log? Well, I’ll blog that soon because it leads me to other content.

Done Blogging or Dumb Blogging?

Some of one and none of the other actually…

I’ve received a couple of emails wondering what’s happened to my blogging. No worries, just really busy.  I’ve been putting some (very) interesting hardware through the performance wringer lately.

What, doesn’t everyone’s performance sandbox look like the following?

# mpstat -P ALL 5
05:14:24 PM  all   91.99    0.00    8.01    0.00    0.00    0.00    0.00    0.00   1117.00
05:14:24 PM    0   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00   1000.33
05:14:24 PM    1   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    2   92.67    0.00    7.33    0.00    0.00    0.00    0.00    0.00     58.00
05:14:24 PM    3   92.98    0.00    7.02    0.00    0.00    0.00    0.00    0.00      0.67
05:14:24 PM    4   94.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00      5.00
05:14:24 PM    5   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    6   91.36    0.00    8.31    0.00    0.00    0.33    0.00    0.00     26.67
05:14:24 PM    7   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    8   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    9   91.69    0.00    8.31    0.00    0.00    0.00    0.00    0.00     17.67
05:14:24 PM   10   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      5.33
05:14:24 PM   11   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      3.33
05:14:24 PM   12   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   13   91.03    0.00    8.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   14   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   15   91.30    0.00    8.70    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   16   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   17   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   18   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   19   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   20   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   21   92.67    0.00    7.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   22   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   23   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   24   92.98    0.00    7.02    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   25   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   26   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   27   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   28   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   29   93.00    0.00    7.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   30   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   31   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   32   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   33   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   34   92.69    0.00    7.31    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   35   91.00    0.00    9.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   36   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   37   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   38   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   39   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   40   93.00    0.00    7.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   41   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   42   91.03    0.00    8.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   43   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   44   91.00    0.00    9.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   45   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   46   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   47   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00

Index Of Posts About Oracle Database 11g Database File System (DBFS)

This is just a quick blog entry to point out that I’ve renamed one of my index pages to include categorization of Oracle Database 11g Database File System (DBFS) related topics. The newly-named page can be found at the following URL:

Kevin Closson Blog: DBFS / CFS / NFS / ASM Related Topics

The freshly indexed posts I’ve added to that page are:

Of Favorite Blogs, Competition and “Co-opetition”

I routinely get asked which blogs I frequently read. I list some of them in my blogroll. It just dawned on me that even though I have Tim Hall’s ORACLE-BASE blog listed in my blogroll I should make a special note that Tim’s blog is a really, really helpful resource.

There are a lot of blogs I read that I don’t mention. For obvious reasons I don’t currently want to link to Oracle’s competitors’ blogs. I wouldn’t want them to get a any boost in readership for free now, would I?

One tricky thing to figure out is how to treat Oracle’s “coopetitors” if you will. Now that Oracle owns a hardware company the lines are really fuzzy. I think it use to be that only Microsoft fell squarely into both the competitor and (quasi) partner space since both Microsoft and Oracle were software companies and both brought RDBMS products to market but neither were hardware companies (forgetting for the moment the Xbox). I refer to Microsoft as (quasi) partner of Oracle because Oracle offers products on Windows and unless I’m particularly naïve Microsoft takes no position directly against customers running Oracle on Windows. Indeed, others in the same scenario have played the “if you load product XYZ we won’t support your OS” trick. Now that Oracle is a hardware and software company I have to get direction from corporate on what acronyms (e.g., IBM, HP, etc), when spoken, will find me getting my mouth washed out with soap.


DISCLAIMER

I work for Amazon Web Services. The opinions I share in this blog are my own. I'm *not* communicating as a spokesperson for Amazon. In other words, I work at Amazon, but this is my own opinion.

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 741 other subscribers
Oracle ACE Program Status

Click It

website metrics

Fond Memories

Copyright

All content is © Kevin Closson and "Kevin Closson's Blog: Platforms, Databases, and Storage", 2006-2015. Unauthorized use and/or duplication of this material without express and written permission from this blog’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to Kevin Closson and Kevin Closson's Blog: Platforms, Databases, and Storage with appropriate and specific direction to the original content.