Q&A When an Oracle customer needs an answer, they send Tom Kyte. As one of the company's foremost database experts and author of the blog Ask Tom, Kyte is one of the software giant's dynamos in breaking apart tough user problems.
During a trip Down Under this week, Kyte spoke to ZDNet.com.au about database history and strange Oracle issues.
In the 16 years you've been working in Oracle's database division, what's the strangest deployment you've seen?
It's not necessarily the strangest, but it's a re-occurring theme; That's the one where people tend to pay a lot of money for a piece of software, and then completely ignore its existence.
The theme I see over and over again, where they try to black-box it, they will do everything in the application layer, they won't use the database to join, they won't use it to sort, they won't even use it to filter, in the hope of staying database-independent. But meanwhile, they bought this incredibly powerful thing but they don't utilise it.
Possibly, the strangest think I have ever seen ... Are you familiar with Java? If I said a Java serialised object would that make sense? In Java you can take a memory variable, a Java class that is loaded up in the memory, and you can serialise it to a file. You can store it to a disk, and then read it back a day later, and this variable comes back to life.
This application had one table, with two columns. It was just an ID column and a blob, so they stuck all of the data inside of this blob, this binary large object, and it was Java class distances. The reason I go involved is because the developers got involved in this dilemma; the end users were asking for the ability to query their data.
Of course, they couldn't because there was not data in the database, it was just binary Java stuff ... the application developers had basically locked all of the data up in the application itself making it completely useless to any ad-hoc query tools or SQL plus or anything like.
You say people pay a lot of money for software, and then don't use it, do you think that's just Oracle, or does it happen more often?
I see that happening with every database, with every operating system. A lot of times application developers really love developing applications right; see that's what they do, they write software.
They re-invent the wheel over and over again, rather than taking advantage of stuff they already have. I spend a lot of my time educating customers as to exactly what is it they have bought, many times they are very surprised to find out that the thing they have been trying to develop for six months is actually a features of the product that they already own.
Moving onto a different topic, you have worked online with a community for quite some time with your blog and other interactions, how do you best use community and online mediums to solve tech problems?
One, I keep everything totally online. I have a lot of people emailing me questions and I have a very verbose cut and paste response that I send back to them. It's not a scalable use of my time to answer individual questions. So if I'm taking questions, I post them on Ask Tom.
When asking a question, we allow anyone in the world to comment on them, and we never edit any of these comments. I want people to come in and question the answers I give to people. To come in and do the 'yeah, but...' follow up.
Many times, and I enjoy this greatly, I will give someone an answer, but then someone will come and say, yeah, but you could have done it this way. I look at it, and there answer is infinitely superior to the answer I gave, and that's the best thing ever.
I think websites that don't allow users to comment on the pages in an interactive way should, frankly, disappear.
To change topic again, how has the database evolved over the time 16 years you have been at Oracle?
When I joined Oracle in 1993, [Oracle database] Version 6 was production. In my talks I sometimes refer to what I call a version 6 DBA [database administrator]. I say if in the 21st century you're still a version 6 DBA ... Back then, the job of the DBA was to get the software, install the software, make sure that the manuals were locked up in a glass case at the end of the hall so nobody stole them, and do back-up and recovery.
Then we started automating lots of things through the version 7, 8 and 9 timeframes. I like to say we added a lot of things that start with A, like automatic undo management, automatic memory management, automatic storage management. A lot of the things that started with 'A' that a version 6 DBA used to do.
Version 7 was adding a lot of features. Version 8, 9 and 10 was making the database more self-managing. Into version 11, we are making the database capable of making a change in a safe, controlled way.
We've given you the ability to change lots of things online in the database. But any time you changed something, one of three things would happen. It would either be a really good thing, and people would pat you on the back, it would be an innocuous thing, nothing would change at all. Or it would be the beginning of the worst week of your life, because everything would be in the dumpster.
Starting with 11g, with real application testing, we for the first time have the ability to tell you what's going to happen to the database: to the number of transactions you are performing, to your ability to scale, to your query plans, to everything that's going to happen to your database prior to making that change in real life.