Skip to Main Content
  • Questions
  • Comparison between Oracle and Others


Question and Answer

Tom Kyte

Thanks for the question, Abdal-Rahman.

Asked: November 04, 2001 - 2:59 pm UTC

Last updated: September 04, 2019 - 1:03 am UTC

Version: 8/8i

Viewed 100K+ times! This question is

You Asked

Hi Tom,

My question is something different. As an Oracle expert I always asked to provide strong reasons why to use Oracle Database and not to use for example SQL Server.

Please, can you tell where to go in the Internet to search about any site provide details and technical differences and also the capabilities of Oracle database over the other famous databases like SQL Server, Informix, Sybase, DB2 and Ingress?

Best regards,
Abdal-Rahman Agha.

and Tom said...

Each database has literrally thousands of features and functions. How they are implemented and what features are there vary widely from vendor to vendor. Having a simple little checklist is virtually useless unless you have an excellent working knownledge of the "guts" of the database (something that can only be gleaned by experience, actually using the products).

For example -- all of the above would get check marks for having "row level locking". Once you look at the implementations however, you'll find they are way different. In Oracle, the overhead of having 1 lock is the same as having 1billion locks (eg: none). In the others there is a HUGE different between the two as locks are a scare resource in those systems, they consume memory, take up space, are stored in in-memory data structures. Our implementation of the feature is so different as to not be comparable.

For exmaple -- all of the above have the ability to return consistent (correct) results. Only one of the above can do so in a mixed workload environment (mixed updates and reads) in a highly concurrent fashion. In Oracle we employ multi-versioning and read consistency. The others use shared read locks (which will lead to deadlocks and blocking). We never block on a read -- they frequently block on a read. So, another feature with a check mark that is virtually meaningless.

And the list goes on and on.

Here is my very short list of why Oracle.

1) informix and ingress -- they do not exist as entities any longer. They have been bought by companies that already have database products of their own. I'm not sure if you will recognize informix 3 years from now or maybe you will (as it will be exactly the same as it is now). I would tend to avoid these products just for that reason.

2) sybase -- well, I spend a large amount of my time helping people convert from Sybase to anything else. Since they sold themselves to MS a couple of years back and MS built a better sqlserver then sqlserver, they sort of put themselves out of the database business. I do not know personally of anyone doing new development with this product. Ask yourself, will this be here in 3-5 years.

3) DB2 -- they have taken the "we'll build a database for every problem" approach. Ask them how many database products they actually have (and be sitting down when you do this as it will take a while to go through the list). Even DB2 doesn't mean "DB2" -- the different flavors of DB2 are incompatible with eachother (different features and functions).

4) MS -- this is easy. Oracle is available on every platform of
any worth. It always has been, always will be. 5 years ago, NT stood for NOT
THERE. Unix was king. Go back 5 more years. Unix was just becoming cool, VAX VMS ruled, mainframes were starting to be considered that old stodgy technology
(remember, PCs were still just starting to appear everywhere then as well). 5
Years before that -- mainframes rules, mini computer systems just starting out.

Now, fast forward 5 years from now. To paraphrase and twist a famous comercial ask yourself "where do you want to be". In 5 years, I'll betch windows is not the place - it'll be replaced by some new hardward/software combo and then where are you? you are with a database that limits you to exactly one OS -- their OS.

That is the major, #1 difference between us and them. If your customer feels
windows is the flatform of the 21st century..... and always will be, I guess its
a safe choice. If they look at history, really look at it, they might begin to
feel a little different.


  (468 ratings)

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


Very detailed answer

Gonela, November 04, 2001 - 3:55 pm UTC

Very clear answer. Thanks Tom for your detailed reasoning.

Something which I allways was looking for

Subhrajyoti Paul, November 04, 2001 - 8:01 pm UTC

I have worked only in Oracle, but I read throght Toms book and came to know how it differs from(i wud rather say how it is better from) other databases. But that was just me. My client wud not understand how oracle differs in the implementation of locking and other stuff. But now I have exactly the words to convince my client to go for Oracle...
Thanks a lot

Has DB2 caught up with Oracle in terms of advanced features?

Eric Ma, November 04, 2001 - 9:32 pm UTC

Tom, what is your opinion on the following white paper about Oracle vs. DB2?

</code> <code>

Tom Kyte
November 04, 2001 - 10:07 pm UTC

sorry the link did not show up (gotta bug to fix ;) The link eric put in was

</code> <code>

I don't see any white paper there however are you referring to "a technical comparision by pass consulting group"? The group who refers to fine grained access control as a new 9i feature (woops, only missed that by 3 major releases)?

Or that makes biased statements like "Although Oracle supports the latest SQL standards, preference is set on Oracle proprietary implementations." (what the heck does that mean anyway? does it mean we actually add functionality to the database that others don't have?)

Or that says
Indexes are extremely crucial for performance. Oracle has a number of index types ? the index choice is based on the type of expected processing, if the pattern changes, then an index could become a drag on performance instead. DB2 only has one index type ? but is able to create bitmap and hash-join indexes dynamically during query execution when needed.

How they can turn the fact that we have tons of index types into a "bad thing" and praise DB2 for having a SINGLE index type and then having to actually INDEX THE DATA EACH AND EVERY time you query it is totally beyond me!

And then they say "oh yes, Oracle has this nice materialized view that can really make your queries fly, but they take some time to refresh so they really aren't that good" -- give me a break.

Or that praises the heck out of DB2's static sql implementation which is totally a kludge compared to shared sql and has no advantages over shared sql (in fact has obvious downsides)

Is that the paper??? (i stopped reading it after a short bit, its fairly obvious who paid for the report. It is also obvious that don't know much about Oracle)

I personally say forget the advanced for a moment, I say they have a way to go to catch up on the *basic* features -- quick q. How many rows/sec can DB2 UDB return if there is a locked row somewhere? quick a. zero.

What do you have to do to get a correct answer in DB2? Have your queries deadlock with your updates.

What DB2 do you use on all platforms? Answer -- none, they have different DB2's for different architectures. (that report often seems to confuse things in DB2/OS390 with DB2/UDB -- "features they've had for years", that OS390 -- UDB, totally different code base, totally different architecture.

Actually -- I'm going to stop. I've never been a fan of feature for feature, tit for tat. I like things simple, i like things concise. I find one database, any platform easier (far easier) then "what platform -- well, here is the flavor of product we have there" or "what problem do you have - well, here is the flavor of database you need for that, what -- your on that platform -- maybe your should change because we don't have that flavor on that platform"....

Has DB2 caught up with Oracle in terms of advanced features?

Eric Ma, November 04, 2001 - 9:43 pm UTC

Tom, what is your opinion on the following (</code> <code> white paper about Oracle vs. DB2?

Tom Kyte
November 04, 2001 - 10:18 pm UTC

Yes, so it was that silly paper.

I urge all of you to read it if you want. If you know Oracle, you know somethings up.

Look at manageability, they love DB2 for:

"Other DB2 strengths are index management (automatic index balancing), user management (os-level user authorization) and fine grained event handling."

Hmm, find anything in there Oracle doesn't do?

Or in interoperability:

"This area is a clear strength of DB2 because of its high level of integration of heterogeneous sources. The DB2 optimizer can even optimize queries for federated data sources ? the expectation is better performance, even and especially when DB2 is the entry-point to non-DB2 DBMS. The adequate handling of data and document-oriented XML data sources with the opportunity to store XML documents as a column with a special data type or decomposed in relational tables brings DB2 another advantage."

Umm, yes, we can do that as well -- and even the XML stuff (maybe they missed that)

and it just goes on.

Another two questions

Eric Ma, November 04, 2001 - 10:39 pm UTC

Tom, thanks very much for the quick response. I agree the PASS paper is somewhat biased towards DB2 - out of the 6 authors, only one or two claim to have extensive knowledge of Oracle while all seemed to have worked exclusively with DB2. Now let me ask two more questions:

1. A lot has been written lately about how Oracle is losing ground to DB2 and MS SQL Server in the RDBMS space, primarily because of the highest prices Oracle charges for its database software. A recent articel can be found here (</code> <code>. Do you agree with the accessment? I know we are technologists but unfortunately many times marketing related issues creep into the decision making process.

2. Why do you think Sybase SQL Server is still hanging around, especially among the largest financial firms on Wall Street? I know one reason is the high cost associated with switching to Oracle. But do you think some of the highly-publicized features (such as row-level locking and multi-version read consistency) Oracle has over SQL Server are not so significant to certain users?

Tom Kyte
November 05, 2001 - 8:05 am UTC

1) Well, there are many ways to looks at the numbers here. IBM is buying marketshare (they bought informix, now when they report database marketshare they'll lump informix -- all of the flavors, redbrick, cloudscape, -- the 5 databases they bought from them with the 4 different DB2's and IDMS and so on). Also, the others are losing marketshare -- Sybase, Ingress, et. al. Remember also, when you are small, it is easier to grow. I'm not a marketeer per say, I don't follow this stuff real close, but our "shrinkage" qtr to qtr was due more to less .com's then anything real shrinkage. Time will tell I suppose. Analysts (such as those that write the reports) aren't happy unless there is controversy.

I also sort of smile when I read something like:

Over the summer, however, Abebooks decided not to upgrade because it couldn't afford Oracle's enterprise edition. The company's programmers wrote their own software to sit on top of the Oracle database to replicate it. Besides, Snider said, the work to migrate the company from Oracle to IBM would have taken weeks, or possibly months, of work.

Oracle would have charged $500,000--five times more than IBM. But IBM also would have charged extra for consulting services, Snider said. If it were just the database, he said, "it'd be a no-brainer."

I ask you to seriously consider what cost to the company having a bunch of programmers sit around and write replication software in the year 2001 AND THEN maintain it for the next umpteen years will be?? I'll lay odds that its a tad more than that (think about what a team of 5 -- do to development, testing, document, and manage would cost for 1 year, you are already well over 500k but and you haven't even begun to maintain it but oh well).

2) I see people moving from from Sybase personally (lots). I'm not naming names but I've worked on more then a couple of accounts in New York City. I don't know what you mean by the high cost of moving to Oracle so much -- it costs to move from Sybase to anything else, it is so radically different from the other databases out there.

Once people grasp the power of multi-versioning and how much easier it is to program -- it makes a big difference. The problem is, people become legendary in Sybase groups for coming up with unique techniques to solve issues like this -- having that inside knowledge of how to set up the perfect clustered index, using timestamps, never lock data -- do the concurrency control yourself, all of these neat "solutions" and then they discover "hey, you don't need to do that, why would I want to go over there where I mean nothing, where all of the knowledge I've gained over the last 10 years is useless". Talking to those guys, thats hard. Its like trying to sell the first C compiler with an IDE to a bunch of assembler programmers who love their punch cards. A bit of resistance.

toooo good

Nishant Manchanda, November 05, 2001 - 2:01 am UTC

As an Oracle Profession I always wanted to answer people why Oracle and nothing else.I have got my answer.

Good up to "IDE"

Harrison, November 05, 2001 - 2:40 pm UTC

Everything was going pretty well (religous wars are more fun when they are about databases), until I got to "Its like trying to sell the first C compiler with an IDE..." Geesh. Unix is the IDE. Staying out late with DOS is going to lead to no good end. I'm just hoping that you meant to say "Visual Basic with an IDE". That would be good. I haven't figured out how you could play with an IDE and learn what strtok() does. It's like finding out that Mickey Mantle smokes cigarettes. I hope no kids see it. (Readers wanting to do the right thing should stay away from IDE's and read Tom's chapter on n-Tier Authentication, which was clearly written prior to his becoming involved with IDE, and shows he was a good C progammer before he went astray).

Tom Kyte
November 05, 2001 - 2:55 pm UTC

I don't use any IDE's personally ;) I don't use debuggers either. However.... Many people do -- hence the analogy.

My favorite UI is a command line.

Excellent Review

Srimal, November 05, 2001 - 4:23 pm UTC

Hello Mr Tom,

Thank you for a great Precis of Analysis of Oracle in comparision to other databases.


I always wanted this information

Sarada Priya, November 06, 2001 - 4:28 am UTC

Thanks Tom, That was a great Article indeed!!!

Database Comparison

kwalther, December 31, 2001 - 3:52 pm UTC

Oups!!! Left out Mysql and other open source databases that work well with ecommerce. Leaving this out of the equation is like making a sandwich without the bread. Ecommerce is the bread and butter of the Internet. It's a billion dollar enterprise that's growing. Mysql is functional for ecommerce and web platforms. It has feature limitations compared to Oracle, but the focus of it's design is the speed of select and update statements. With the latest version of PhpAdmin, it's even easier to use. Don't forget the open source community.


John Snider, December 10, 2002 - 6:13 pm UTC

I sort of have to smile when I read how people think it will take five programmers a year to build replication capabilities. I'm the guy from abebooks in the CNET article. I built the n-way replication procedures in less than one month using PL/SQL over three years ago and we spend maybe an hour a month checking the process. I had to build it because the native Oracle replication was too slow.

Tom Kyte
December 10, 2002 - 8:59 pm UTC

good for you -- maybe you want to come work for us.

did you have to build a generic solution? nah, didn't think so. you wrote a specific implementation for a specific set of tables, under very specific conditions.

I've been there, done that. I know it can be done -- that is besides the point. I've seen people write it (and write it and write it). they try to write a generic solution (been done).

nice comparison

rajesh, February 24, 2003 - 10:11 am UTC

hi tom

what is your conecrn about mysql

it can connect also with forms 6i also.

are u not interested in open source community.

i think we can not avoid the strength of open source people considering the strength of linux now

considering the requirements of small clients oracle 9i costs aprroximately 70000 indian rs for 5 usr licence.

in this part of the world price is also an important factor

exciting toms reply



Tom Kyte
February 24, 2003 - 10:37 am UTC

I don't know, what is my concern with mysql? I didn't write anything about it one way or the other here.

It was not part of the question... I didn't ignore it, it was never part of the QUESTION.

I run linux, so what? I paid for the linux I'm running. Is it free? NOT A CHANCE. It cost money to put on my machines (i need a supported version, someone to call and say "hey, fix this". I don't rewrite OS stuff so I cannot do it). It cost money for me to run out and buy a pcmcia modem since the silly winmodem didn't work. It cost money for my time to do all of this. People who think "open source" = "free" are so sadly mistaken. It all costs money, all of it does. I'll betcha it costs more for me to run linux right now then windoze --I'm only successful at doing it cause I actually know unix pretty well. Most people, most end users, well, they would not be able to do it. It is getting there but -- I would bet that the cost of me owning linux is higher then the cost of me owning windows. I'm in a big old "do it yourself" position.

If you are running a single database for 5 people, well, not sure that is the right model. We run single databases for thousands of people. We use economies of scale here. We would not run Oracle and put 5 users on it. We use a hosted model for small user communities like that. They pay a fee -- we run their stuff in a database with tons of other people. One professional DBA team that knows their stuff, dozens/hundreds of customers per instance. Running a database for every 5 people just doesn't make sense.

What I find is "penny wise, pound foolish". Most small companies, upon losing their data in a disaster -- fail.

Of every 100 businesses that suffer a data center disaster
- more than 40 will never reopen
- fewer then 10 are still about after two year.

they never fully recover from these things. I'm not saying mysql will lose data - just that the small 5 person scenario paints a picture of "no data mgmt, no backup and recovery, no offsite backup & recovery, extremely limited ability to recover from failure". It is the mindset here, not the software that causes this. The "gotta be cheap" -- well, you get exactly what you pay for.

I've nothing against open source. Hey, if you want to download free, build it, deploy it to run your business -- more power to you. when that disk fails and you haven't really put the infrastructure in place to put it all back together -- when you've shown you aren't serious about your data, well, I guess thats when you start looking for a new job cause the one you were in probably is going away.

In all parts of the world, price an important factor. You certainly have no monopoloy on it over there.

Enjoyable and Interesting Thread

Mike, February 24, 2003 - 12:42 pm UTC

Helena Marková, February 25, 2003 - 3:50 am UTC

About MySQL

Terry, February 25, 2003 - 8:57 am UTC

Comments regarding MySQL: I have seen MySQL many, many times fail in service and lose the data in a table and the whole database completely. As a consultant I am often called in to install Oracle after some 'Genius fresh out of College' has implemented MySQL or MS Access because that's what they learned in school. The real world is nothing like school and losing your data is absolutely catastrophic. Database life is not a "do over" like some kind of high school or college assignment. It often means "game over" for a business. Almost nobody gets the fact that without the data the database=ZERO so protecting the data and maintaining it's integrity is paramount. Until recently MySQL did not even support the concept of a proper transaction and MS Access still does not support a proper transaction. The point is that if you want to put some kind of "Bill Gates Evangelism" or "Open Source Kool Aid Stand RA RA" or "Anti-Larry Rhetoric" ahead of a few thousand bucks for Oracle then get your resume ready you are going to need it. I will also say in this lousy economy if you have a job keep it because there are very few out there and I would not go risking my neck on "Freeware Databases" and "Dinky MS solutions" that are simply an accident waiting to happen. All too often I hear people (especially developers and their managers) whining about the cost of Oracle and then totally ignore the fact that their solution takes 10 man years of effort (often reaching into millions of dollars) to deploy. You need to get some real perspective on this, the cost of Oracle is totally cheap compared to the alternatives which include all the other RDBMS Solutions available on earth including "out of business" due to total failure somewhere down the road.

Comments Regarding DB2:

Terry, February 25, 2003 - 9:15 am UTC

In addition to the comments above regarding DB2 and Oracle functionality one should also remember DB2 on OS 390 and DB2 on unix are completely different products and when you factor in AIX (yuck!!) the gap just widens. Basically, DB2 on unix is about the equivalent of freeware, IBM bought Informix with the idea of getting a database that actually works on windoze, unix etc. In fact two years ago IBM were giving away DB2 on unix in Silicon Valley trying to break the Oracle stronghold but it didn't work people saw the product was weak and lacked functionality and manageability period. DB2 on the mainframe is not bad but we aren't seeing too many people running over to the local computer store or asking IBM for a 3090 ESA these days. In a nutshell IBM are almost out of the database business (especially on unix) and they are selling predominently into traditional IBM shops and nowhere else. They keep trying to sell the old idea "you can't get fired for buying IBM" but you can for deploying a large scale DB2 on junky AIX.

wow that's wonderful

subbu, March 07, 2003 - 8:33 pm UTC

nice comparison. very useful..
today i was working on using heterogenous services to access mysql database and needed more info. so gave a search in oracle's oracle ASKTom :-). nice material.. good selling points...
i had a small doubt on the TCO of open source database like my sql. any idea??

On Oracle only

Yan Courtois, March 14, 2003 - 2:16 pm UTC

Tom, i admire you patience vs other database product....
i meen you have to be politicly correct..

in my opinion, you simply can't drive a real database warehouse without Oracle.. The only reason to me where you would have to choose another system, is the price of an Oracle lincence... but with there new billing orientation, i meen hey, you will gain from it at the end of the line. Just make your PM understand that. And there is no people who are willing to work with a database product other than Oracle.

I meen get realist, if your buisness is serious, 9i rock so much you just can't get something else..

What about MySQL ?

David, March 28, 2003 - 12:02 pm UTC

Tom, someone sent me this link with this article in E-Week comparing the performance of some RDBMS. Oracle was at the top, followed by MySQL.

</code>,3959,293,00.asp <code>

I question the conditions under which these tests were carried out.

But this surprized me:

"MySQL 4.0.1's new, extremely fast query cache is also quite notable, as no other database we tested had this feature. If the text of an incoming query has a byte-for-byte match with a cached query, MySQL can retrieve the results directly from the cache without compiling the query, getting locks or doing index accesses. This query caching will be effective only for tables with few updates because any table updates that clear the cache to guarantee correct results are always returned."

They said: " no other database we tested had this feature..."

Q1: Isn't that out shared pool, after all ?

Q2: Would you please comment on MySQL X Oracle ?

Tom Kyte
March 28, 2003 - 4:00 pm UTC

In Oracle we call this a "materialized view" I would think.

It is not the shared pool, that is where we cache execution plans.

I never go tit for tat like that.

Like I said:

Each database has literally thousands of features and functions. How they are
implemented and what features are there vary widely from vendor to vendor.
Having a simple little checklist is virtually useless unless you have an
excellent working knownledge of the "guts" of the database (something that can
only be gleaned by experience, actually using the products).

Non Stop SQL

Irfan, June 18, 2003 - 7:27 am UTC

Hi Tom,
In Tandem, they use only Non Stop SQL. What is your opinion about Non Stop SQL and how can it be compared with Oracle. If you could give us some links or benchmarks?, But we will appreciate your own points.
Thanks a lot.

Help needed !

Golan Rabud, August 22, 2003 - 2:27 pm UTC

Tom, my company has decided to "downgrade" from Oracle to MySQL. They are betting on an open-source solution based on Linux and MySQL, ruling out Oracle.

I am a long-term Oracle DBA and I am afraid of the consequences. Ther say they have an impact analysis on that.

Truth is... the systems are not sooo critical.

Their main claim is that thay need to reduce TCO and Oracle is too expensive.

What do you have to say about it and where can I find good arguments against that crazyness (as it seems to me)?

Thank you !

Tom Kyte
August 22, 2003 - 8:24 pm UTC

my only argument will be

one day, you will lose your data. is that OK. if so, go for it. you never needed a database anyway.

it wasn't until I went to the UK a decade ago that I understood the saying:

"penny wise, pound foolish"

I was always thing "pound" like 16 ounces -- a weight.

then I got over there and found out a penny is a pence (1 cent)
a pound is like one dollar (100 pence, 100 pennies)

your company is saving pennies at the expense of hundreds of pennies. I would be concerned about that company frankly.

Open source does not, has not, will not mean "free"

Linux actually costs money, if you want support, stability, yadda yadda yadda. you know, what you want from an OS vendor.

Same with the DB.

If a couple of thousand for software is deemed too much, i would be worried what my salary at such a company might be deemed someday???


A reader, November 16, 2003 - 11:51 am UTC

"Other DB2 strengths are index management (automatic index balancing), user
management (os-level user authorization) and fine grained event handling."

Hmm, find anything in there Oracle doesn't do?

In the following URL from "oramag" is a picture of unbalanced index
</code> <code>
Does index really get unblanced at all

Tom Kyte
November 16, 2003 - 12:02 pm UTC

that article is grieviously mistaken in many ways.

indexes will never get into the state depicted in that diagram. NEVER. it is just not possible.

What about Teradata

Phil, November 16, 2003 - 12:54 pm UTC

Hello Tom,

Thank you very much for this clear cut answers. If you can some give answers how Oracle is better than TERADATA, I will really appreciate. We are presently using using Oracle 8i(8.1.7) as our database database is growing very fast, one group is asking for TERADATA database, as I have never used that database, I cannot defend them. That group claims that maintenance will be less and its very, very fast when you scan billion rows. I am looking for some literature for comparison.

Tom Kyte
November 16, 2003 - 1:53 pm UTC

well, why would you compare old technlogy to new? 9iR2 (lots of stuff above and beyond 8iR3) has been out for a year and 10g is coming soon.

Scanning a billion rows is somewhat, ahh, limited by your IO system more then anything else.

Our goal actually is to not have to scan a billion rows -- with things like materialized views, query rewrite, bitmapped indexes, 3 types of partitioning, the ability to use clusters (without having to statically partition data), simultaneous INGEST (load) and DIGEST (query) -- try that in teradata.

that the largest databases in the world run on Oracle
</code> <code>
(don't let teradata fool you -- they'll say "teradata has larger" but they count

a) all disk on the computer, not just database disk
b) the sum of all databases a customer is using -- not individual databases

which tends to somewhat "skew" numbers) is a consideration as well.

search for teradata on if you like. At the end of the day -- ask them for hard, factual, scienfically backed proof points. Eg: list out N maintenance things that are provably "less" in teradata.

Also -- remember, teradata works really well on proprietary, sole source, single vendor hardware (made by -- well -- the same company that makes teradata). Their big database implementation do not run on open systems, commodity hardware.

Oracle v/s Teradata

Phil, November 16, 2003 - 7:16 pm UTC

Thank you very much Tom. Hats Off to you.

hosted model, where can I get this?

Dick Stins, November 17, 2003 - 7:20 am UTC

Tam said:
We use a hosted
model for small user communities like that. They pay a fee -- we run their
stuff in a database with tons of other people. One professional DBA team that
knows their stuff, dozens/hundreds of customers per instance.

Where can I find more information about the hosted model?

A reader, November 17, 2003 - 2:11 pm UTC

How about in-memory databases

Ketan Bengali, November 17, 2003 - 2:29 pm UTC

Hi Tom,

Our company is evaluating an option to use in-memory database instead of Oracle. Some of these in-memory database companies, like Ants Software or TimesTen software, are claiming that they are atleast 5 to 80 times faster than relational databases.

Do you know any problems with using in-memory database? Does Oracle has any product which is similar to in-memory database?



Tom Kyte
November 21, 2003 - 7:27 am UTC

:1,$s/claim/prove it using my applications/g

I don't see them publishing any TPC's or industry standard benchmarks for comparision.

I'm very sure there is something very specific they can do faster.

I'm also very very sure there are lots of stuff we do much faster as well.

Question is -- are you doing something that you cannot do and excell at doing with Oracle? Most times, we can "fix" that in the implementation (your design). These database things are pretty darn fast when used properly.

Speed isn't everything

Jim, November 18, 2003 - 1:48 pm UTC

It would be fairly easy to design an in memory "database" that was "faster" than Oracle. This is assuming that all you want is a fast method to "store" data and "retrieve" data. It is assuming that you don't want:
1. Robust recovery
2. Data Consistancy
3. Transactions
4. and many other features.

I would not call it a database, maybe a memory structure or shared memory structure that contains data, but not a database.

A Reader, USA

A reader, November 18, 2003 - 3:07 pm UTC

I think in momory database would be much much slower than a datbase using disks as storage.

In-memory databases

Ketan Bengali, November 19, 2003 - 2:15 pm UTC

I love working with Oracle. Some of the in-memory databases do provide persistent data storage, recovery mechanism and real time data retrival.

I would like to convince the team who is evaluating in-memory databases that in long run it is not going to scale and might turn out a bad decision. These databases may not solve locking issues, may not help in all recovery scenario, may not integrate with other tools, can't work on different platforms, like Oracle it won't even allow you to look into internal structures to figure out the problem.

I want to know if anyone had any bad experiences or heard any bad experiences about such databases which I can share it with evaluating team.



A reader, December 28, 2003 - 10:38 pm UTC

You said

That is the major, #1 difference between us and them. If your customer feels windows is the flatform of the 21st century..... and always will be, I guess its a safe choice. If they look at history, really look at it, they might begin to feel a little different

I see that this is a pretty old thread. Technology has advaned a lot in the last 2 years, both in database and OS areas.

I am a hardcore Oracle professional, but am finding it increasingly dificult to hold my own in a entirely MS shop. All the fileservers, printservers, desktops, apps are MS. Shrink-wrapped applications we bring inhouse come with their own, you guessed it, SQL Server database. The only "island" in this MS sea is our data warehouse (Oracle on Sun hardware).

From a CFO point of view, it is very attractive to "consolidate" (read eliminate) the Sun/Oracle licensing costs and embrace MS SQL Server on the existing umpteen Windows 2000/3 servers we have.

How can I counter this? Like you said, it is futile to compare technical features on a checklist since their implementation differs so much as to be a meaningless comparison.

Are there any definitive high-level whitepapers targeted for upper management that lean towards Oracle?


Tom Kyte
December 29, 2003 - 10:25 am UTC

well, you have one data point -- to you, it looks like MS everywhere.

To me, I still see lots of choice out there (point being -- depends on who you work for. in the late 80's early 90's there were lots of Wang shops too -- buy everything from a single vendor -- hmmm, not much wang left today).

On a single Sun/Oracle combo -- I can consolidate all of the umtpeen windows teeny databases into a single one that costs infinitely less to manage. Lots of CFO's are seeing that as well (recognizing that the major costs of their systems are ongoing maintenance, NOT software related at all).

It costs less, provided more value to have N databases than M databases where N is significantly smaller than M. Thats a fact. I don't care whose database it is.

MS SQL Server...sending a boy to do a man's job

Bob, January 20, 2004 - 2:19 pm UTC

I am an Oracle DBA working in a shop that just put a mission critical app on SQL Server, and I can see first-hand the weaknesses of this DBMS.

This thread is over 3 years old but not much has changed in the MS product. All of the locking and read-consistency problems are still there from 3 years ago. Another issue that Tom did not mention is that SQL Server uses its transaction logs for rollback information, so doing a transaction log backups is very resource intensive. Our tran log backups failed on this very busy DB. By the time we could restart the tran log backups the tran log was 65GB. It took 1.2 hours to back up the log, and while it was backing up all other DB activity crawled. The users were very unhappy.

If this happened in Oracle, the tran logs wouldn't be that big to begin with, and nobody would feel the pinch from backing up 65GB of tran logs because it's just a series of simple file copies, unlike the MS world.

There are other architectural drawbacks that have real-world significance. Even MS says "We don't scale up...we scale out". And it is true. The DB and the platform it runs on runs out of gas in a hurry. So to get more performance, you must partition your DB, and your application must be aware of the partitioning. Oracle has a lot more room to grow and can do it without dinking with the app.

Yes, SQL Server may cost less, but you get what you pay for.

Tom Kyte
January 20, 2004 - 2:22 pm UTC

"not much has changed"

that is an understatement -- you see, MS has a habit of naming their products after dates.

It is not called SQL Server 2000 for nothing (sitting here in 2004....) Yukons coming, sometime.

(and if you compare Standard Edition to SS2000 and or named users you cannot really get away with the "may cost less" cause that just really isn't true either and you have to compare SE to SS2000 if you want to compare apples to something that resembles another fruit)


Jim, January 20, 2004 - 3:29 pm UTC

Tom, you are an absolute god!

Please hold the flame war but ...

Mike Wilson, January 20, 2004 - 5:57 pm UTC

... in a recent evaluation of PostgreSQL I have to say I was very impressed. Uses multi-versioned concurrency, non-blocking locks, has hot backup, triggers can be written in a PL/SQL like language, or Java, or Python. With the exception of some of Oracle's deeper features such as analytics and RAC it held it's own on features we regularly use.

I don't want to start a flame war here but from a stability and standard features review I found that there seems to be little holding our company back from looking seriously at replacing our Oracle installation with PostgreSQL. This would, of course, be a long winding road but I was curious to hear from the user community regarding PostgreSQL vs. Oracle because to my eye they compare favoribly, except in price. I also have to admit that I'm an Oracle shareholder and finding a free product that has many of the same features as Oracle was disheartening. And just for the record we also evaluated mySQL but it never made it out of the gate with it's lack of stored procedures.

Comments on Postgresql

Andy, January 21, 2004 - 1:52 pm UTC

Follow-up to Mike's comment above: I've been working on a product that has interfaces to MSSQL, Oracle or Postgresql as the back-end. I'm impressed with PGS's robustness but I've also noticed the following:

1. The fulltext search capabilites in PGS are way off the standard found in either MSSQL and (especially) Oracle. The capability is an add-on module, for starters, so there is not the same "stability" (i.e. it's upgraded more regularly than with other DBs), and although stem searches/custom dictionaries are now possible with tsearch2, there is still a LOT of daylight between that and Oracle Text (can't seem to search for non-alphabetic characters, requires supplementary columns + triggers instead of utilising just an index etc.).

2. The OLEDB provider for Postgresql presents its fair share of challenges: e.g. finding the right balance between server-side (much quicker but with strange behaviour at times esp. when adding rows) and client-side cursors (very slow). There also seems to be very little documentation.

3. The "perceived" amount of DB administration needed. Database product X may indeed have weak/missing features, but it may also be the case that the marketing plug of "hey - it's easy/cheap" means that there is not the same DBA experience on site as it's not deemed to be so necessary. So bad press might arise simply because the features that ARE there are under-utilised - because the marketing encouraged people to overlook that need. From what I've seen, sites running MSSQL or PGS are less likely to have the necessary DBA experience at hand, so there's an argument to be made that paying a bit more means you're more likely to hire/already have the DBA skills you're going to need anyway.

Is data modeling for DB2 same as for Oracle

Bala, February 16, 2004 - 1:00 am UTC

I am an oracle resource and have 6 years exp in Oracle including data modeling , perf tuning etc.
Is it required that knoe DB2 , so as to design a data model for a DB2 database??
I presume if it is up to logical database design , I dont have to worry whether it is oracle or db2.
But if it is Physical design , then I need to be specific.Is it true or
for even the logical DB design , I need to be specific as to whether it is oracle or db2??
Answers from anyone else also welcome

Tom Kyte
February 16, 2004 - 7:08 am UTC

physical design implies you know all of the feature functions of the underlying database.

In Oracle that means you known and understand when to use IOT's, b*tree clusters, bitmap indexes, bitmap join indexes, hash clusters, single table hash clusters, partitioning and so on.

In DB2, you have lots less to choose from, but you better know what you do and do not have (if you want to succeed)

LOGICAL Dump... Its Granularity and Independence. This can be a very good index......

Shouvik, March 05, 2004 - 9:11 am UTC

A thread like this is a tonic for us, Oracle pros.

I have been working with Oracle since I was out of grad school in 1997. Recently I had to work with Sybase and SQL Server. There is one glaring hole in both. I donot know why people do not mention it.

Oracle's Logical Object Dump (Export, Import) is unparalleled. The only issue with it was VLDB scalability. But then 10g has removed it.

(1) Sybase - Cannot export selected tables from a database (synonymous to Oracle Schema). Stored Proc DDLs can be exported in a clumsy was by building each DDL. If you ogical backup you must take a physical backup or dump.

(2) SQL Server - Was elated to find "Export" option. But .. oh my god .. it exports to XL, CSV, etc. Stored Procs, Triggers, Views, etc needs to be dumped by generating DDLs.

Oracle vs others

Walter Koller, March 12, 2004 - 7:07 am UTC


I've worked with SQL Server, Oracle and Teradata as an end-user for a while, and had a first insight in DBA's work (but far away of beeing a pro).

The first reply of Tom was the best in this thread, you can't compare the DB in a simple list it depends on what you and you're users want.

If you have billions of rows and a DSS platform (or lets say a DWH) TERADATA might be the right choise. It might be true the biggest DBs are on Oracle with several DBAs maintain all the indices, partitions, clusters and the physical storage of the datafiles and table spaces, monitoring queries and so on...
Of course a few of these things has to be done in Teradata as well, but much less of consideration because the DB know what to do because it was designed for this but only for this (it does not make sense to try to run a heavy transaction application on this DB). AND nevertheless the end-users will thank you for the abilities you gave them; a high ANSI standard SQL with nice additions where Oracle just came up with a nice try in O9.

The point that Oracle is OS/HW independent ist absolutly correct, but this should not be THE reason to choose, because: will you run a highly available application where several thousands of revenue will flow threw, on a PC bought at the store next door with a OS for free downloaded from the internet ?? hopefully not !
OK, you can use Oracle on nearly any OS (Win/Unix/...) but most of the time you will buy a more or the less proprietary HW (if it is HP,Compaq,Sun,NCR,...).

Also the fact a software exists since beginning of computerization means nothing except experience (hopefully) and maybe overhead because of backward compatibility.
But this does not mean that it will exist in the next 10 years as well and also not that others won't.

I did not want to prefer a specific DB or put another down, but wanted to say some words to other postings where I thought they have been not complete.

Again, it makes no sense to compare databases in general using simples list. Just consider everything (also the maintainance and it's costs ! afterwards) but keep focus what you want to achive, maybe it is Oracle (thousands of DBAs can't be wrong, can they ?)


Generic replication

John Snider, April 05, 2004 - 3:12 pm UTC

This is a response to an old response buried way back in this thread about replication packages being generic.

I wrote a generic replication package that uses a procedure to generate the replication code. I just give it the tablename, schema, replication group, etc. It is not specific to an application or schema. It does have some limitations such as requiring a numeric primary key but we always use a numeric surrogate key so no problem. We have been using it for almost 5 years. We may throw it out and use standby databases for disaster recovery (but hey we got our money's worth). When I worked for Oracle Services we spent most of our time managing marketing hype versus customer realities. The reality being that Oracle replication is not a silver bullet.


Justin, April 23, 2004 - 9:23 am UTC


You mentioned you don't use an IDE for PL/SQL.

How do you edit your PL/SQL? Do you store text files of them and VI them?

Do you use source control when working with others and have checkin/checkouts? (Do you leverage Oracle Change Manager, something else?)

Could you give details about the steps and process you use to edit PLSQL?


1) I spool select text from user_source where object_name = blah blah blah

2) I use VI to format etc..

3) I debug by ... execing the code and I'm so good I know the error.. ?

Basically I'm just digging for how you work. :>

Maybe you could share some VI macros that you have?

Thanks very much for your time.

Tom Kyte
April 23, 2004 - 1:36 pm UTC

vi all of the way.

in a large project, we use cvs -- with multiple coders -- yes. check in, check out.

reading the code out of the database isn't "version safe", done in a pinch at best.

I have no vi macros, i just use the commands supplied therein.

Any third party research or unbiased report available ?

Sanjay Dholakiya, August 03, 2004 - 4:22 pm UTC

Hi Tom,

Is there any third party (or independent source) report based on research comparing Oracle, SQL Server and Sybase available on the net as per your knowledge ? I am an Oracle DBA with a need to justify to my SMT (Senior Managers) based on numbers/feature lists/proofs about why Oracle and not rest. Looks like they want comparison conducted by independent source/third party.

I picked up one report from Eweek link provided in this chain. I was wondering if you have any other source in mind.

Thanks for your continuous support.


Tom Kyte
August 03, 2004 - 5:59 pm UTC

sure, we pay independent 3rd parties to do that all of the time (someone has to pay them).

So, you'll find the ones we pay for on, the ones they pay for on theirs :)

Seriously, there are tons of reports out there -- they are all over the web sites.

However, (me speaking here) you really need to look at

a) what your goals are
b) what you need to do

SQL Server = you are going to run on windows and windows and windows and only on windows. Sounds safe right? Remember Solaris, HP/UX, Pyramid, Sequent, AIX, VAX/VMS, MVS, Wang (the list is really really long). server platforms come, they go -- can you spell "eggs in basket" and "all". They should take some serious thought on that.

ashish, August 05, 2004 - 2:20 am UTC

Comparison between Oracle and others

Ken Maricle, August 17, 2004 - 9:30 am UTC

Your insights are great, but they do not give enough emphasis to three excruciatingly important difference between Oracle and SQL Server/Sybase/DB2. And by the way, Oracle does not put enough emphasis on this difference either.

The issue of how Oracle handles read consistency versus how the others handle it is HUGE...HUGE...HUGE. THIS ISSUE ALONE IS WORTH EVERY BIT OF THE PERCEIVED DIFFERENCE IN COST between Oracle and SQL Server. I AM SPEAKING FROM EXPERIENCE.

Sorry for the FLAMING, but people need to understand that this issue alone is HUGE. In SQL Server, inserts, updates, and deletes can block reads and reads can block inserts, updates, and deletes. Not only CAN this happen, it happens all over the place. Even if the developers have wisely written their select statements to avoid this, SOME select statements REQUIRE read consistency, and in a busy, complex OLTP application THERE WILL BE KILLER AMOUNTS OF LOCKING. PERIOD. I say again, it is unavoidable. This locking will definitely have serious negative consequences on application performance.

Of course there is a workaround, which is to create select statements that do not guarantee consistency. I would say in non-critical applications this workaround is not a limitation. So, use SQL Server for non-critical apps if you must.

There are other issues. My favorite is "SQL Server scales out, not up". That is a quote from MS. The costs of licensing for scaling out alone make it more expensive than Oracle, but the costs of administering two, three, or more SQL Server instances (and the boxes they sit on) versus one scalable Oracle instance is much greater than the licensing costs.

Here is another HUGE difference. SQL Server's backup architecture places big demands on the database instance and on the box the database is running on. This is not a problem when you back up during periods of low activity. But if you are forced to do a quick database OR TRANSACTION LOG backup during a peak period, you will be sadly disappointed in the performance penalty you pay. Contrast this with Oracle. In Oracle a backup is taking a file copy using the OS utility of your choosing. An Oracle hot backup increases database overhead by a small amount, but I have never been able to perceive it, even on a very busy database.

I speak from experience as an experienced Oracle DBA and SQL Server DBA on high-demand applications. The lower price of SQL Server covers up the TCO. Believe it.

Tom Kyte
August 17, 2004 - 10:05 am UTC

Of course there is a workaround, which is to create select statements that do
not guarantee consistency.

that doesn't even work -- reads are still blocked by writes (i do cover this, one of my pet favorite things to talk about actually). you might *might* avoid some deadlocks, but your still "wait"

and try "scaling out" -- basically you are saying "we will divvy up our application into N non-interacting pieces". Hard partitioning. It is a non-trivial solution that lends itself only to embarrasingly parallel problems (of which there are few in transaction processing and fewer in data warehousing).

Sybase performance speed vs Oracle

A reader, October 09, 2004 - 1:46 pm UTC

Most of the thread has been about SQL server. We are migrating from Sybase to Oracle 9.2 and some of the stored procedures are running much slower (2 minutes in Sybase vs 14 - 20 minutes in Oracle). Basically selecting data with a cursor from one table and updating / inserting into another. (The 14 minute run uses merge, but this is not always possible.) We are using the same indices from Sybase. I've tried adding others / changing existing ones with very little difference. The plans look reasonable.
What more can you tell us about performance differences between Sybase and Oracle?

Tom Kyte
October 09, 2004 - 5:22 pm UTC

(if you are selecting from one table and updating/inserting another -- I'd be really hard pressed to come up with an example where "it won't work" with merge..... can you explain?)

Oracle is faster in general :)

but that aside -- do you know how to use sql_trace, tkprof and the related tools? do you have access to either of my books (expert one on one Oracle -- chapter 10, or effective oracle by design -- chapter 2) or have you checked out the Performance guide on (chapter on using these tools)....

If you get a tkprof -- I'd be glad to take a "peek" and see what it is doing.

OS Independence Won't Matter Much

Riad Al-Shaalan, October 10, 2004 - 10:12 am UTC

It seems that in the coming years both Oracle and Microsoft will offer an integrated stack. Just look at some of the new features in Oracle 10g and the Microsoft Longhorn WinFS vaporware. Oracle should move a little faster in this regard though - because microsoft WILL release WinFS eventually.

Tom Kyte
October 10, 2004 - 11:25 am UTC

and why won't the OS matter?

User Perceptions

Riad Al-Shaalan, October 11, 2004 - 9:18 am UTC

Say Microsoft releases WinFS. Microsoft will say this is an integrated part of windows and cannot be removed (a la Internet Explorer). They want users to feel uneasy about installing a relational database on windows when winFS is already a part of it. After that Microsoft will make it as feature-rich as SQL Server so that customers have even more incentive to use it instead of another.

IMHO, That is enough to change the perceptions of the majority. That is enough to make most database users say "Why isn't Oracle an integrated stack like Windows with WinFS".

Tom Kyte
October 11, 2004 - 9:52 am UTC

The end users in this case are not mom and dad and the kids at home running a browser.

The end users in this case are professionals in a data center.

why would these end users feel "uneasy"?

Oracle is an integrated stack already -- you are confusing me here? You pick the best hardware. You pick the OS you are most competent at. Then you have everything you need. People actually like a little bit of choice I've found.

Once upon a time, we offered "Oracle in a box" -- google:

"raw iron" oracle

and you can read about it. People wanted choice, choice in hardware, choice in OS, choice in whatever. I believe people will still want that.

As feature rich...

Mark A. Williams, October 11, 2004 - 10:50 am UTC

Cheap jab coming...

> After that Microsoft will make it as feature-rich as SQL Server...

Well, that shouldn't be too difficult.

Sorry, couldn't resist.

- Mark

Mark A. Williams
Oracle DBA
Author, Professional .NET Oracle Programming
</code> <code>

Wayne Allison, October 11, 2004 - 12:17 pm UTC

Ken Maricle,

Long time. How are you doing?


Great responses. It is scary that all too many people ignore transaction recovery, scalability, and read consistency when they look at a database engine.


Re: Merge not appropriate

A reader, October 12, 2004 - 6:15 pm UTC

Merge does not work without a unique index on the source table, raising ORA-30926: unable to get a stable set of rows in the source tables.
There are columns that are being propagated even though the value may be over-written by another row with a dup index. The design should be changed, but that's not going to happen at this time, so merge is out...
There are also replication issues downstream that need intermittant commits to keep up.

I've read about TKPROF, and SQLtrace, but we are not currently set up for developers to use these tools. Maybe when our DBA gets back from vacation.

Tom Kyte
October 12, 2004 - 7:42 pm UTC

merge DOES work without a primary key.

merge CANNOT work if the join key isn't truly unique (it need not be enforced, but it needs to be true)


think about it.

create table t1 ( x int, y int );
create table t2 ( x int, y int );

insert into t1 values ( 1, null );
insert into t2 values ( 1, 2 );
insert into t2 values ( 1, 3 );

merge into t1
using t2
on ( t1.x = t2.y )
when matched then update set t1.y = t2.y

Tell me, what value should T1.Y be after it was done. No matter what you say, I'll say the other one is right.

This is the condition that raises the 30926 -- if a row is UPDATED TWO TIMES in the single statement -- it says "hey, confusion, this is ambigous -- you are doing something seriously horribly wrong and the outcome with the SAME ROWS on another day would/could be different -- so we are saving you from yourself"

So, I'm really concerned if you have data you are trying to merge, and you get this message -- and you think the message is wrong.

Your data -- it is wrong, think about it -- what is T1.Y supposed to be after you are done?!?

Just The Data Center?

Riad Al-Shaalan, October 12, 2004 - 6:25 pm UTC

Should Oracle only be for professionals in the data center?Isn't it in Oracle Corp's favor and the community around it to make Oracle as ubiquitous as possible?

I googled "raw iron". I draw the same conclusion. But just make oracle easier to install and maintain. Microsoft is trying to shut Oracle out of Windows. If that happens, by then Oracle will hopefully be bootable and easier to install and maintain on its own (on whatever hardware).

Tom Kyte
October 12, 2004 - 7:48 pm UTC

Who runs databases? (even sqlserver ones)

The administrative assistant down the hall?
The person that runs the vacuum at night?

If you think you can run windows, sqlserver, in a manner whereby both are up and running "frequently" and with proper backups, with the ability to actually restore data, with the ability to have data recovered from a whoops operation -- with the guy who drives powerpoint for a living -- well, I've got this bridge you see........... it is really cheap....

Funny thing about windows -- it can run 24x7. It really could. If and when the people running it are serious about being a data center. You know "control change", "education is something you need to have", "testing applies", "separation of test and development", "MSCE doesn't mean you actually really known anything" -- that sort of attitude, you'll have an up and running windows server (i've seen it).

Take the attitude that "if you can get the printer working, you can run my server and systems" and I'll tell you what'll happen as well. That is when data gets lost "oh, you needed to *tell* the database you were backing it up? my backups don't really work, how rude". That is when things go bad "oh, i just clicked the automagically update me at 3am everynight -- i thought it would be good -- you mean it could break something? huh, who would have thunk it".

Re: Merge

A reader, October 12, 2004 - 7:56 pm UTC

Yes - the data is wrong, and at this time it is not going to change, so we cannot use merge. I should have referred to the merge join, not an index...

Tom Kyte
October 12, 2004 - 8:00 pm UTC

so, why even bother with the update process you are going through? sounds like GIGO to me -- garbage in, garbage out, data is not reliable. run the same process tomorrow and get a different answer....

Bootable Oracle

Riad Al-Shaalan, October 13, 2004 - 4:46 am UTC

So there won't likely be a fully bootable Oracle 11 or 12?

SQL Server Vs. Oracle: No Contest

raf, October 13, 2004 - 7:16 am UTC

My company uses Oracle & SQL Server.

Oracle is the winner for 1 reason alone: it can handle locking.

It's true, folks, SQL Server can't handle lots of simultaneous locks, and lock escalation is the order of the day.

Just check out any decent SQL server books - they all say the same thing: never, Never, NEVER hold onto a lock for more than a split second, or lock escalation will happen, leading to the usual nasties.

SQL Server? It's a toy, really.

Open source is not likely a free one.

K.Rameshkumar, December 22, 2004 - 5:38 am UTC

Dear TOM,

I can read some of the topics and your suggestions.

Please send me an suggestions for me. I would like to

become an DBA. So I can ready to get Oracle 9i

International certification. But isit OK for a DBA beginer.

If i am going to Star Sql learning centre to study and then

try to get an job. Totally i am an beginner for DBA.

Thanks & regards,

The Oracle Hate Club

Jens, December 25, 2004 - 7:59 am UTC

A funny page for sparring:

</code> <code>



How about

Invisible, April 04, 2005 - 8:05 am UTC

I recently had a look at MySQL. The website makes it sound lovely.

Upon further inspection, seems it's more of a "toy" that a serious DB. (And it has this slightly bizzare idea of multiple "storage engines", which can be transparently swapped. I don't know about you, but to me that sounds like "inefficient"...)

I also had a look at something called PostgreSQL. Now this looks a lot more like a serious system. I don't know if you've ever used it - and I realise that you are an *Oracle* expert - I was just curiose to know if you have any opinions on it.

(The DB is free. I'm sure if you want support, it will cost money. And the people to manage it will cost money. And the hardware isn't free either. We know this. I'm more interested in the technical details of the software itself...)

I know you're a busy man... but if you have a moment. :-)

Tom Kyte
April 04, 2005 - 8:43 am UTC

I've no practical experience with those databases


Invisible, April 04, 2005 - 8:49 am UTC

Fair enough. Honest and to the point, as ever. :-)

(I thought about typing something like "I might try it out. If I find anything interesting, I'll post it here". And then I thought "uh... this is an ORACLE discussion forum... why would anybody care what Mr Nobody here thinks about some other random DB?")

Tom Kyte
April 04, 2005 - 8:57 am UTC

it takes months to know something as big as a database to be able to really comment on it ;)


Invisible, April 04, 2005 - 11:14 am UTC

Heh. You're right of course. ;-)

I was thinking more along the lines of magor things that you can spot early. (E.g., MySQL can only be backed up if you turn off the DB first. No redo logs, can't recover from a crash if we hit one. They say it makes it go faster - I don't doubt it. ;-)

If I find anything like that, I might comment. Other than that, as you say, it will take me a while to discover anything worth mentioning.

jim, April 04, 2005 - 11:47 am UTC

The problem is that with mysql, people hear the "multiple engines" concept and think it does everything Oracle does and it is free. (TANSTAAFL) This bubbles up to management and they think they can run SAP on it.


Invisible, April 05, 2005 - 5:49 am UTC

Like I say, the MySQL website does a pretty good job of telling you how wonderful the product is. Heck, *I* believed it enough to install the thing and play with it. Actually, it turns out it's more on a par with Access than Oracle. ;-)

(Always thought that was an unfortunate name for such a low-tech DB...)

PostgreSQL looks like more of a "real deal". But until I physically start using the thing, I'm treating that with caution also. Anyway, we'll see...

References to PostgreSQL comparison

B. Bradford, April 25, 2005 - 1:12 am UTC

Just a quick note since PostgreSQL has come up repeatedly.

I have used Postgres on a daily basis for the last year or so and I have to say that I'm very impressed. Yes, it's free. Having said that, I had to learn the hard way that you do NOT want to use PostgreSQL without optimizing things like buffer settings and how much memory it's allocated. There are a couple of good articles on that.

Once I did that, which didn't take a lot of time, PostgreSQL runs fast. I am very happy with it. But don't even think of using an untuned PostgreSQL database (I'm using 7.4.2, although 8 has come out and that might be better).

The feature set appears slimmer than Oracle, but not by a lot and it does seem to be catching up very quickly. I strongly recommend at least looking at PostgreSQL.


A reader, July 06, 2005 - 3:59 am UTC


With the induction of 'TimesTen' in Oracle's arsenal, one would like to know the following.

1. TimesTen is an in-memory database while Oracle is disk-based, what's the driving force behind that bring them together?

2. Is TimesTen database server a true 'RDBMS'?

3. What are the salient features of TimesTen that made it so distinguished from other in-memory products in the market?

4. Can TimesTen be used alone as a database server, without Oracle at back-end?

5. 'IMDB -- In-memory database' is a new technology based on the emerging trends like in-expensive memory, fast retreival from large datastores, real-time applications etc. They say the disk-based RDBMS are conventional ones based on the factors many decades ago and falling short of latest market trends.
5.1 Is 'speed' the only major difference between TimesTen and Oracle?
5.2 Would Oracle become in-memory rather than disk-based in future?

6. How can Oracle community get benefit of TimesTen?


Tom Kyte
July 06, 2005 - 7:53 am UTC

1) middle tier cache
2) define true
3) i wasn't part of the purchasing decision, I didn't do that analysis and I haven't really looked at it in depth. Therefore, I'm not going to comment
4) could be
5) 'new technology', I remember reading about them in 1990?
6) you buy it?

Just found this document

Franco, July 07, 2005 - 4:24 am UTC

Looks quite accurate and balanced.
</code> <code>
At least helps to point out the main features to check before a choice (if a choice is needed.... ;-) )

TimesTen again

A reader, July 07, 2005 - 6:19 am UTC


You asked

6) you buy it?

Yes sure I'll -- that's why im inquisitive about it. In-memory technology holds more water than the disk-based one.

I would like to ask;

1. Is 'speed' the only major difference between TimesTen and Oracle?
2. Would Oracle become in-memory rather than disk-based in future?


Tom Kyte
July 07, 2005 - 9:35 am UTC

1) it is a cache, outside the database, a copy. consider it a middle tier cache of data.

2) I doubt it.


A reader, July 08, 2005 - 1:59 am UTC


Thanks for your expert opinion.


Mark Griffin, July 14, 2005 - 11:30 am UTC

Our organization is looking at a product called Netezza.

I've included some metrics(from Netezza):
o 5-way table join
o Oracle tested v. development volume (15M records)
o Netezza tested v. production volume (193M records)
o Netezza data set 13x larger!
o No attempt to test Oracle v. production volume data

*Netezza results based on a NPS 8150
Oracle 9i – IBM p650 (8 CPU), 16 GB RAM, 1.5 TB storage

According to the above test it claims that Netezza is/was 38 times faster than Oracle.

Now I realize that this is not the first time some company has made bold claims they are faster than Oracle.

Anyone out there have any experience with this product?

Tom Kyte
July 14, 2005 - 12:41 pm UTC

where are their audited benchmarks doing tpc workloads - there are data warehouse and analytic audited, industry standard ones that would be useful to see.

without any information on what the benchmark parameters were

eg: did they do what I see constantly -- take a poor implementation, get the requirements, do a 5% prototype using the best of the best with their product and claim success?

Meaning, take a poorly implemented existing solution by some customer - take YOUR best people and implement a fraction of it using the best techniques possible, because you really exploit the product and then compare?

I've found many times the vendor benchmark in house like that is more a competition between whose sales consulting team has the best implementation skills. I don't remember ever losing a benchmark - but it is easy to benchmark if you know the product really well from an implementation perspective.

But I'd seriously ask why no industry standard audited benchmarks? At least that would be something you could understand all of the parameters.

</code> <code>

Netezza Conference

Mark Griffin, July 14, 2005 - 2:57 pm UTC

Tom, thank you for your comments...

Actually, some of the same questions that you posed I'd already formed in my mind.

I'm participating in a conference call with Netezza folks this afternoon. I will be asking some hard questions.

Again, Thanks for your input!


Warren, July 14, 2005 - 4:51 pm UTC

So, Netezza is a propietary hardware/software/storage/database solution that supposedly is 10-50 times faster than Oracle for data warehousing. Interesting; sounds a little too proprietary for me.

I also found it interesting that I could find no documentation on backup and/or recovery techniques, data load techniques/tools (it is a data warehouse db, where does the data come from?), development tools, tuning techniques, etc.

With Oracle I can find documentation on every single aspect, component, technique, etc. to deal with a database. If I didn't know the product, I could certainly find out everything I ever wanted to know. By the way, I love to RTFM! I would be concerned if I did not have all the information possible about a database solution I was considering. If it isn't on their website, I would ask "why not?"

Very good information....

Will, July 14, 2005 - 7:52 pm UTC

Read almost all the responses, might I suggest a spellchecker. Oh wait there is one, maybe it should stand out a little more :-)

I actually do have a question, I have been working with Informix (not by choice)for the last 7+ years and now am looking to move on to a different company and was wondering from only the viewpoint of writing queries and extracting data / for analysis, how big a change can I expect moving to Oracle?

Tom Kyte
July 15, 2005 - 7:31 am UTC

You'll want to read this:


particularly this chapter:

as that (multi-versioning) is the single biggest conceptual difference between Oracle and most others.  

Most all of the SQL you know will carry over, some bad transaction habits you might have picked up in a read locking database will have to be unlearned mostly.

and check out: <code>

especially analytic functions if you do tons of analysis

Netezza conclusion

A reader, July 15, 2005 - 10:40 am UTC

I spoked to one of Netezza engineers...

Essentially their product is not meant to be OLTP. It's meant to be more specifically DataWareHouse solution.
It's not a replacement for Oracle in terms of OLTP.

This product combines the best of both worlds( in terms hardware and software to get maximum DWH performance) into one box. It's very specific in its purpose.

Their claims of "faster than Oracle" is a bit misleading.

Suffice to say, if Oracle db was as close to the data as this product then Oracle would either be as fast or faster.

Oracle Zealots with no experience of other technologies...

A reader, July 28, 2005 - 9:00 am UTC

The comments on Netezza show the limitations of this thread.

Everyone who has responded is an Oracle enthusiast with no experience of Netezza.

Oracle would NOT be as fast or faster if it was as 'close to the data' (Whatever that means).

It takes a different approach and is good at different things.

10-50 times faster than Oracle, for some task which are complex, high volume and ad-hoc, is really quite easy for the kind of technology Teradata, Netezza and WhiteCross (running on standard Blades) apply to the problems.

Even 10-100 times faster is quite possible to achieve, with little effort.

Horses for courses - You wouldn't ask a racehorse to pull a caravan or work down a pit. In the same way, only vendors or fools believe that a single database is the best tool for every job...

Tom Kyte
July 28, 2005 - 10:25 am UTC

All I said was "ask questions". Nuff said there. I many times find I can make Oracle go 10-50 or more times "faster" just by correcting something as well. Does that mean Oracle is 10-50 times faster than Oracle?

Netezza and other 'data appliances'

A reader, July 28, 2005 - 9:03 am UTC

The real problem with Netezza is you are buying into a proprietary hardware solution from a start-up organisation.

You can spend $Millions on their hardware and it will be scrap if they go bust or it doesn't suit your requirements.

10g select one edition

Reader, September 07, 2005 - 7:38 am UTC

Hi tom,

I heard that now oracle also keeping restriction on user accessing database.

i.e. If i have 10g select one edition for 10 named user than at the same time only 10g user can commit.

Can you tell me which kind of restriction can apply for 11th user?

Tom Kyte
September 07, 2005 - 8:46 am UTC

there are licensing restrictions you are "honor bound" to obey. The software gives you the tools (v$ views) so you can verify you are following the license you purchased, but that is it.

Datawarehouse and Oracle

Enayet, September 07, 2005 - 1:02 pm UTC

I was part of a team when we decided to choose a database for our Enterprise Datawarehouse. Our team gleaned through DB2/EEE, Oracle, Microsoft SQL sever. We did consider Terradata; which was a strong contender. But our management team vouch for DB2/EEE. In my demise; though I am an avid Oracle fan!!

Few things I like to mention; it may perceive shortcommings of Oracle; may help Oracle to improve its own standing in good.

Here are the few snippets from my goblet:

1. For DW databases, the most requirement is long running query. In this case, rollback segment is a hindrance.
2. Oracle self-professed multi-versioning concurrency take a toll on the buffer cache; having long hash chain (aka, buffer cache chain) causing LIO more expensive.
3. Oracle RAC (shared disk) technology comparing DB2/EEE shared nothing deemed much INFERIOR in terms of performance for obvious reason. Oracle Cache Fusion (aka lock manager) is a hindrance to scale horizontally. Mid you, we are talking about DW; where 80% database activity will be 'query'.
4. It sound funny to me, in RAC implementation, we need to create 1 undo per node, 1 redo per node, BUT 1 global temp tablespace. WHY not create 1 temp TS per node ....? It sound to me like an engineering cactus ........

From our management perspective:
1. Oracle is expensive; TCO is higher.
[ For referenc, please check ]
2. Oracle salesperson often seemed arrogant, claiming 'The Best' attitude.
3. What Oracle can do, other databases are not too far behind and they can progress as well. We do not need all the feature Oracle offer, we can live without Oracle :))
4. Oracle is good, but NO Thanks!!
Oracle buff - Now your turn ....[I know the ring of fire will start ..]

Tom Kyte
September 07, 2005 - 2:04 pm UTC

1) how so, for a DW there are no transactions - think about it. 1555 is not an issue in a data warehouse.

2) see #1, (but there is no such thing as long hash chains, ancient bugs maybe - like from many years ago, but no).

You are in a DW. Think about it, how could multi-versioning be an issue there?

3) hah hah hah. Ok, let me know how that static partitioning goes for you. Oh yeah, tomorrow - take away or add a node (what? I have to physically redistibute my data? oh geez).

And if DB2 got is right - why do they do it our way on the mainframe, where they have a pretty decent database? they are shared disk up there. Which DB2 did it right?

Wait - just wait until you start replicating data across nodes in your DW just to avoid shipping data in real time!

4) you could if you wanted to, but temp is assigned/associated to USERS. It is shared disk, it is the way it works.

1) that is the cost of the software, not TCO, come back in a year and update us.
2) sorry, I cannot really respond to that, I am in sales myself and I take a different attitude than what you report. You were working with an individual, I'm sorry there was something 'not going good' there. I agree that people buy from people they like. I always did.

No ring of fire, just come back in a year and tell us how trivial it was to do and maintain.

David Aldridge, September 07, 2005 - 3:16 pm UTC

Just to add my 2 cents to points 1 and 2 ...

The nologging direct path inserts most commonly used for loading DW data do not go through the buffer cache nor do they require significant rollback/redo/undo resources -- they're straight-to-disk operations.

The parallel queries most commonly used for reporting are also direct (bypassing the buffer cache, straight to PGA) so buffer cache resources/enqueues are not a limiting factor.

Whether you had access to resources in Oracle Sales that could have addressed these issues is a moot point now, of course.

Tom Kyte
September 07, 2005 - 3:46 pm UTC

(I enjoy going into customers after someone like a db2 person has been there leaving these little "bombs", it is fun to set them off myself and see what happens. A little knowledge about how Oracle actually works goes a long way).

Then just talk about how a load could deadlock or just block queries, sorry - no trickle feed for you, no choices....

Or how DB2 doesn't do dynamic queries

Jim, September 07, 2005 - 4:09 pm UTC

DB2 on a mainframe, and probably on other plaforms as well, does not do dynamic sql. It is geared to doing bound sql, where the program is bound to the database and the execution plans are determined at compile time.

I know what people are going to say. But I have run a gui where I issued dynamic SQL. Yes, you did, but what DB2 did was create a program, generated the plan and then ran the program. This sounds innoucouse. However, if you don't issue a commit after each and every query - effectively creating an environment with NO transaction boundries - then the dynamic SQL will block people who are trying to compile their programs with the database. DB2 serializes on this and is quite a scalability limitiation for dynamic SQL.

Tom Kyte
September 08, 2005 - 7:37 am UTC

reason 215321 why "databases are in fact different"

High performing DB2

Enayet, September 07, 2005 - 4:49 pm UTC

Okay, I am going to play devil's advocate :))

Check this :
</code> <code>
[ I am sure most of you are aware!! ]

Top Ten TPC-C by Performance
Version 5 Results As of 7-Sept-2005 8:20 PM [GMT]
Rank Company System tpmC Database Date Submitted
1 IBM IBM eServer p5 595 64p 3,210,540 IBM DB2 UDB 8.2 11/18/04
2 IBM IBM eServer p5 595 32p 1,601,784 Oracle Database 10g Enterprise 04/20/05

These numbers are real. Still need to convinced the strength of DB2/EEE? Hello .....

Tom Kyte
September 08, 2005 - 7:41 am UTC

did you stop to think about what the 64p and 32p meant there?

hmm. hello?

64p vs 32p

Gabriel Paulovic, September 07, 2005 - 5:06 pm UTC

How a single number makes the difference ...
IBM eServer p5 595 64p
IBM eServer p5 595 32p

.... besides, we run applications not TCP-C tests here ... :-)

Tom Kyte
September 08, 2005 - 7:43 am UTC

yes, I wonder how many people have read the tpc-c spec and it's somewhat artificial constraints. It is an interesting 7 table or so benchmark (including things like gap free sequence numbers!)

it is interesting to download the full disclosures and see what they did in the physical implementation as well.

Hmm, poster was talking about DW not OLTP

Jim, September 07, 2005 - 5:20 pm UTC

Not sure how TPC numbers are relevant to a DW application? I agree most of us run applications not benchmarks.

Another point of view of SQL Server vs. Oracle

Mark J Bobak, September 07, 2005 - 5:40 pm UTC

</code> <code>

Lex De Haan, a former Oracle employee (so is biased towards Oracle, I suppose)
and very bright guy, gives a pretty good explanation as to why
SQL Server will not scale to the levels that Oracle can, and
why they'll need to re-write major portions of their database
engine to get there.

Times Ten

A reader, September 21, 2005 - 8:51 am UTC

Hello Tom,

I am just curious to know how exactly Times Ten's in-memory database will be integrated with Oracle RDBMS. What version is that planned or will it remain a different product? Guess you'd have some information about it. And if you could just share your thoughts how significant this mearger is as far as the technology or the industry is concerned.


Tom Kyte
September 21, 2005 - 7:23 pm UTC

not sure that it will be - it would like be releases out in the future before it would be "totally" in the database if at all

look at data mining - that was darwin and outside the database for many releases.
look at olap, that was express and outside the database for many releases.
look at text, that was context and sql*text - outside the database for many releases.

and so on..

Federated Databases

Aamir Abbas, November 08, 2005 - 6:42 am UTC

One of my friends told be that MS-SQL and DB2 have Federated Database support while Oracle hasn't.

I want to literally tell them:

1) What Federated Database feature means / requires?
2) What MS-SQL / DB2 are giving in name of Federated Databases support.
3) What Oracle provides in this regard comparatively.

I know you are the one who can empower me to convince him.

Thanks in advance.

Aamir Abbas

Tom Kyte
November 08, 2005 - 10:10 pm UTC

We had it in version 5. We still have it today.

When they answer your very reasonable questions - you can educate them as to the Oracle features that have been around for many years longer than sqlserver existed and db2 on open systems was dreamed of.

Locking Overhead

Narendra, November 16, 2005 - 4:15 am UTC

In your initial followup, you mentioned that in oracle lock on one row has same overhead as lock on 1 billion rows i.e. no overhead whereas in sql server lock is a resource, acquiers memory.
Is there any way I can prove this? Any examples?


Tom Kyte
November 16, 2005 - 5:06 pm UTC

we do not store locks in memory, locks are an attribute of the data itself.

Ask sqlserver where their row locks are stored and how they are managed. If you have access to my book Expert Oracle Database Architecture (or the prior Expert one on one Oracle) I cover our locking in great detail.

Have you guys looked at SQL 2005 ?

Sridharan, February 03, 2006 - 1:51 pm UTC

Most of your comments are related to what Microsoft SQL Server had in version 2000 and before. But SQL 2005 changes the paradigm a lot.

They now have
1. Snapshot Isolation ( Similar to multi version concurrency - REaders don't block writers and viceversa) And this you can set at a db option. So you can choose what behaviour you want.
2. Database Snapshots ( similar to oracles snapshots)
3. Database Mirroring ( sub 3 second failover)
4. Peer to Peer replication ( Call it a RAC with no single point of failure.. - disks are not shared )
5. Cache Sync - ( When webservers cache gets outdated due to backend change - SQL Server sends the update back to webservers)
6. Automatic Client redirection to mirrored server when the main server dies ( no need for webservers to get restared)
7. .NET CLR integration ... developers have a choice of where to program ( You might say what you want about Java... but .NET rules developer space)
8. Business Intelligence ( Leading Analytical tool in the market place - look at )
9. Entered ETL space with reporting Services. Already giving Informatica and Datastage run for the money. Has built in fuzzy logic ( for data cleansing). Nobody offers data cleansing and ETL in the same product. Always ask for extra $.
10. Reporting Services - Beats Crystal Reports for 90% of Enterprise needs. I think Cognos might have lead on this and RS is not there yet, but knowing Microsoft, the next version will kick butt for Cognos.

Finally..... all at a fraction of cost of what oracle charges. Look at the per proc licence costs for Oracle... just for db engine while you get all the above ( DB, BI, Reporting, ETL ) for less than 1/2 of what ORacle charges.

And then Microsoft does not charge by the core. ORacle announced that they will match Microsoft in the dual core market... but 3-4 cores are around the corner. Intels roadmap syas they are already working on 4 cores in 1 proc to be released by 2008.

What does Oracle have to say for all this ? Will they continue to charge what they feel and expect customers to just pony up and pay ? Are they are realising the reality here ? I might sound so pro- Microsoft but frankly I am sick of paying so much $ for Oracle and see tremendous value from Microsoft SQL Server.


Duke Ganote, April 07, 2006 - 5:11 pm UTC

Here's IBM trying to convince us to switch from a multi-version concurrency control (MVCC) database, like Oracle, to DB2:

"To increase the concurrency of the system, commit your transactions often, including read-only transactions. If possible, reschedule the applications that compete for access to the same table. Also, use the Uncommitted Read (UR) isolation level for transactions where read consistency is not an issue."

</code> <code>


DB2, SQL Server etc vs Oracle: zero-length strings; implicit casting

Duke Ganote, May 31, 2006 - 3:34 pm UTC

I've recently had the "thrill" of using DB2 v7 SQL to write some extraction queries to load our (mercifully Oracle) data warehouse, and found two areas of annoyance:

1. DB2, etc, allows zero-length strings in NOT NULL columns, and some functions (like REPLACE) don't work with zero-length strings! In Oracle, all zero-length strings automagically become NULL-valued, and would be forbidden in a NOT NULL column.
</code> <code>
2. To write a CSV-like string in Oracle, I merely had to write:

SELECT col1 ||','|| col2 ||','||...
FROM table...

Oracle implicitly cast everything as a string.

In DB2 v7, I had to explicitly CAST all the non-strings into strings, then concatenate. For example, if col1 & col2 were numeric or date, I had to write:

SELECT CAST(col1 as varchar2(99))||','||
, CAST(col1 as varchar2(99))||','|| ...
FROM table...

In both cases, I found Oracle to be lots easier to use.

MSSQL Catching Up?

Mobra, June 30, 2006 - 3:16 am UTC

Hi Tom,

with the release of SQL Server 2005, would you say that Microsoft is catching up on Oracle, feature-wise?

For example, they now seem to have implemented "snapshot isolation", ie row versioning, which you've stated before is one of the important things that separate Oracle from the rest:

</code> <code>

(Of course, it remains to be seen whether their implementation drags down performance, but still, it's a first step in the right direction...)

Very interested in your opinions on this... :-)

Tom Kyte
June 30, 2006 - 7:23 am UTC

which is a lot like our workspace manager in physical implementation....

When it becomes their main and prefered isolation level, then I'll sit up and take notice.

My PostgreSQL experience...

Mark, June 30, 2006 - 3:52 pm UTC

I've been using PostgreSQL for a few months now. While the MVCC and other features are very nice, overall I'm disappointed and frustrated. Maybe I'm just spoiled by Oracle. I won't list all my beefs; here's a little ETL-related anecdote:

Because there is no merge statement in Postgres, I must merge by running a big loop that does a slow-by-slow insert/update. This requires using the Postgres procedural language called PL/PGSQL. Apparently Postgres has nothing analagous to Oracle's undo tablespaces; all undo info is stored in memory. (I could be wrong on this, but this theory best explains my situation, and searching the docs was fruitless.) In my loading of 1.5 million rows (not more than a couple K each), Postgres used up all 2GB of physical memory and all 2GB of swap until my function came to a screeching halt. Eventually the Linux Out Of Memory Killer killed my process. I had to install another 2GB of RAM, increase swap, and start over. It ran for a few hours, but it finally worked.

Before discovering we had 2GB RAM lying around, I tried the dreaded "commit after every x rows" technique. But apparently PL/PGSQL functions do not allow you to rollback or commit from inside a function (</code> <code>. Oracle PL/SQL users may say, "So what? Just use an anonymous block." Well, there's no such thing as PL/PGSQL anonymous blocks - all PL/PGSQL must be contained within a function. (There are no packages by the way. No PL/PGSQL scripts + no packages = a bunch of disorganized functions lying around.)

If the RAM hadn't worked, my next attempt would have been a function that merges a subset of the data, as opposed to my current function that does the whole lot - pass it the start ID and the end ID as parameters. Call the function several times, starting with 1 to x, then call it with x+1 to x+x, etc. Each call would be its own separate transaction. While I'm glad I didn't have to go this route, I'm not sure the ridiculous memory consumption is much better.

The table into which I'm loading data is actually just one of several that I need to merge data into. Each function has the merge code for one particular table (did I mention there's no multi-table insert? I could save a few passes over the staging tables if I had those...) I would like to do the whole thing as one transaction, but there's no way that's going to happen.

So in summary, Postgres may not be a bad open source RDBMS for most purposes, but for ETL like the above it gets a huge thumbs down from me. I think my coworkers are getting sick of hearing me say, "Gee, Oracle does it so much better, like this..."


Well ....

Gern Blanston, August 25, 2006 - 12:27 am UTC

I have used Postges for a couple of months and have to say that version 8.1 seems to be getting closer to Oracle than I expected... Seems as if the Postgres Open source developers may at some time in the past been po'ed by and have taken it upon themselves to provide a DB that looks and feels like Oracle but does NOT co$t like Oracle. Hmmm, given enough TIME not MONEY seems like these guys and/or gals may have a solution to fit everyone's budget. Just think, I can make a living converting everyone's Oracle DB to Postgres and charge them 50% of the next year's Oracle support fee...

Tom Kyte
August 27, 2006 - 8:11 pm UTC

it is not free?

</code> <code>

With the following:

A reader, October 13, 2006 - 11:35 am UTC

Any use of the Oracle Database Express Edition is subject to the following limitations;
1. Express Edition is limited to a single instance on any server;
2. Express Edition may be installed on a multiple CPU server, but may only be executed on one processor in any server;
3. Express Edition may only be used to support up to 4GB of user data (not including Express Edition system data);
4. Express Edition may use up to 1 GB RAM of available memory.

Tom Kyte
October 13, 2006 - 2:33 pm UTC

yes, that is very very clearly spelled out, nothing hidden about it.

I agree

A reader, October 19, 2006 - 3:50 pm UTC

Its clearly spelled out in this years invoice as well.

Tom Kyte
October 20, 2006 - 3:47 am UTC

There is no "invoice", that would imply "charge"

TPC result

A reader, October 30, 2006 - 5:46 pm UTC

hi Tom,
Can you comment on the latest result? Thanks.

</code> <code>

1 IBM System p5 595 4,033,378 2.97 US $ 12/20/06 IBM DB2 9
2 IBM eServer p5 595 3,210,540 5.07 US $ 05/14/05 IBM DB2 UDB 8.2
3 IBM eServer p5 595 1,601,784 5.05 US $ 04/20/05 Oracle Database 10g Enterprise Edition

Tom Kyte
October 30, 2006 - 6:48 pm UTC

what about it? wait a month and come back. go back - read the history.

and ask yourself: do YOU run a TPC-C workload, or do YOU run YOUR system with YOUR transactions?

Bygone competition

Kevin Closson, October 30, 2006 - 8:48 pm UTC

Hi Tom,

Great material. I hope it is ok to point out that Ingres is actually its own company now subsequent to a spinoff from CA. Since their startegy is open source, they should probably recheck their play book in the wake of what just happened to Redhat--I should think.

</code> <code>

Did anyone take the bet?

Tom Fox, October 30, 2006 - 8:59 pm UTC

From your initial response:

In 5 years, I'll betch windows is not
the place...

Did anyone bet you on this? :)

Tom Kyte
October 31, 2006 - 8:36 am UTC

The jury would be out on who won, Linux is a word I hear with higher frequency every single day.

Windows is not Windows

Billy, October 31, 2006 - 12:52 am UTC

Tom Fox (from Here and There) wrote:

> From your initial response:
> In 5 years, I'll betch windows is not
> the place...

But then Windows-of-Then is not Windows-of-Now. There is a heck of a lot that has changed (except world domination plans and the name of the product) under the Windows hood. One cannot really compare the kernels and say they are the same.

Also, Windows is under huge threat of Linux in the server market.

Oracle platforms I deployed the last 3 years:
Windows : 0
Linux : 50+

And I'm pretty sure my experience in this regard is not unique. So what basics of what Tom said holds true. With SQL-Server tied to the Microsoft Windows o/s, it is very limited in the database market where the o/s is not a such a constant factor.

> Did anyone bet you on this? :)

Which is why I never try to predict technology. Er.. except to say that The Tux will conquer Windows... ;-)

Alexander the ok, October 31, 2006 - 9:49 am UTC

I heard that the next version of Windows you will only be allowed to install one copy, once. So if for whatever reason you need to reinstall it, you have to at least contact support people and see what your options are.

Comparison between Oracle and Others

Old Ada Guy, October 31, 2006 - 1:04 pm UTC

I've actually done comparative analysis of DBMSes for various customers who I'd call typical - medium to large organizations with predominantly "business" data (complex information about people, relationships among people, and transactions between people). I reached very similar conclusions in every study, covering a period of 11 years and Oracle versions from 7.3 to 10.1:

1. Oracle is hands-down fastest in querying relational databases, or anything inner-joining multiple tables, for that matter. Same thing with DML, but I had trouble proving it because of the different methods each product has. Informally, I'll note that no competitor has any built-in features close to Oracle's bulk collects and parallel DML and that you'd have be an expert to code a custom solution.

2. Oracle is not built for non-relational databases, so if you have one you probably want a "DBMS" optimized for file access, e.g. MySQL, DB2, or better yet, VSAM on a mainframe.

3. Oracle is better than anything at dealing with concurrency and latency (ACID), although the competitors are improving. If you have a lot of concurrent sessions, you'll pretty much end up with Oracle.

4. No competitor has anything like PL/SQL, so in any realistic business scenario where performance is important Oracle has a big edge. I always get challenged on this point, so I'll be preemptive and say that the competitors either have to parse at runtime or do object-relational mapping, which is never fast even when it works.

5. Oracle has an overwhelmingly large edge in risk mitigation and TCO. There are far more Oracle practitioners than all the competitors combined, and the gap is even wider if you add "competent" to "practitioner". You can get raw data on this from the job boards, by the way. Even if a killer app appeared tomorrow that beat Oracle on the first 4 points, Oracle might still be the overall winner because of #5.

6. Enterprise considerations tend to favor Oracle, because Oracle is highly likely to be the de facto organization-wide standard. Departments may have reasons to favor a non-Oracle DBMS, e.g., they don't have a lot of data and already know SQL Server, *but* enterprise integration plans may be more important.

7. Lest I seem like an extreme Oracle advocate, I'll mention that PostgreSQL came in second in the last study. Points in its favor are that it has a similar performance profile to Oracle (just not as much of it); a similar architecture and 3GL language, so Oracle people can spin up on it quickly; and, of course, the price. Note that I did my last study before Oracle XE appeared.

In these studies I intentionally left out front end and middle tier integration, but if I did another one I might well score HTMLDB (or whatever it's called now) as another point in Oracle's favor.

I also left out of the studies the myriad of features that Oracle has and nobody else; you can never explain to customers why might need them until after they're committed. For example, customers never understand that the zillions of configuration options Oracle has are a Good Thing - until they see the benefit they think they are there to confuse techies.

Once you take these factors into account Oracle is actually cheaper than anything else in its market sweet spot, and Oracle DBMS licenses have been getting steadily cheaper over time.

Have you checked out H2?

A reader, October 31, 2006 - 3:22 pm UTC

Re: Billy

Tom Fox, November 01, 2006 - 2:09 pm UTC

Billy (from Cape Town, Z.A.) wrote:

> But then Windows-of-Then is not Windows-of-Now. There is a heck of a lot that
> has changed (except world domination plans and the name of the product) under
> the Windows hood. One cannot really compare the kernels and say they are the
> same.

Well, then Linux-of-Then is not the Linux-of-Now. Same with Solaris, or any other current platform. They are all under development, so why compare older systems at all? I believe the point is what manufacturer is holding the lead, not necessarily what version of software they currently have.

> Also, Windows is under huge threat of Linux in the server market.

> Oracle platforms I deployed the last 3 years:
> Windows : 0
> Linux : 50+

Well, consider that the server market is not entirely just database servers. I would venture to go out on a limb and say there are more non-database servers than database servers. Take that into consideration, and I'm not so sure the threat is as large as some believe. Keep in mind, though, that I'm not a Windows fan. I just try to look at things the way they truly are.

Tom Kyte
November 01, 2006 - 6:22 pm UTC

but - important fact here - we are talking about database servers and what you want to be.

TPC result

A reader, December 07, 2006 - 10:16 pm UTC

Hello Tom,
I have waited for one month but DB2 is still on the top of TPC result, can you tell me when we can see the new result of Oracle? Thanks.

Tom Kyte
December 08, 2006 - 7:36 am UTC

I'll get right on that.

So, do you run a tpc-c application yourself?

Re: Anyone take the bet?

Jmv, December 08, 2006 - 10:52 am UTC

Anybody taking bets on what the next 5 years will bring us??


Unix Linux Windows Mac Z/os Other
(aix/sun..) (suse/redhat..)
Oracle _____ _____ _____ _____ _____ _____
DB2 _____ _____ _____ _____ _____ _____
UDB _____ _____ _____ _____ _____ _____
Sql-Server _____ _____ _____ _____ _____ _____
My-sql _____ _____ _____ _____ _____ _____
Sybase _____ _____ _____ _____ _____ _____
Datacom _____ _____ _____ _____ _____ _____
Ingress _____ _____ _____ _____ _____ _____
Other _____ _____ _____ _____ _____ _____

Please feel free to add other OS/DB, as this is by no means all inclusive.

Myself? I am amazed at the consistency of the Oracle database across Operating systems and would echo the comments from the "Old Ada Guy". Perhaps I am biased, having had to mainly support Oracle databases over the years (though I have had to also support DB/2, UDB, Sybase, MS-SQL, and Essbase databases, to name a few), I would still have to bet on Oracle being here over the long haul.

<begin from an overhead speaker>
"Now taking bets on DB/OS over the next 10 years, at window #3! Step right on up!"
<end overhead speaker>

TPC result

A reader, December 08, 2006 - 7:02 pm UTC

Dear Tom,
I don't run a tpc-c application myself and I know an application is much more complicated in real life. But I have told some DB2 fans that Oracle would be back on top so I would like to know how it is going on.

Tom Kyte
December 09, 2006 - 2:41 pm UTC

It is not relevant, but just hang out for a bit - it'll change, then when newer faster hardware comes out, it'll change, then when newer faster hardware comes out it'll change.............

so, just wait. I personally do not follow it, don't have any time schedules, have bigger fish to fry.


umer, December 20, 2006 - 11:11 am UTC

what a load of bs that was, in ur views abt teradata

I know its a bit late to reply but i cudnt resist :(

First of all, Teradata and Oracle are not really comparable.
Teradata is built for DSS and Oracle for OLTP solutions.

But since you were comparing the two lets see where we can get.

"Scanning a billion rows is somewhat, ahh, limited by your IO system more then
anything else"

wow, that was unbelievable, do u know what percentage of total IO and CPU loads falls on client side in ETL processes?

"Our goal actually is to not have to scan a billion rows -- with things like
materialized views, query rewrite, bitmapped indexes, 3 types of partitioning,
the ability to use clusters (without having to statically partition data),
simultaneous INGEST (load) and DIGEST (query) -- try that in teradata."

some more bs, clients do not care abt features, they worry abt ROI. all of these features when implemented translate into a much higher implementation and maintenance cost and even if it isnt, it is proven by 3rd party industry consultants that Teradata outperforms Oracle in terms of performance. What good is a feature set if it does not provide a good ROI.

"that the largest databases in the world run on Oracle"

sheesh man, what are you telling these people here, what kinda of a show are you running here

</code>,1895,1675960,00.asp <code>

aah i cant go on :(

Oracle has issues with warehouse above 5TB, Oracle DBA workload is horrendous, Oracle has issues with scalability, Oracle has issues with large volume complex queries.

On the other hand, Oracle has a high function SQL, robust OLTP mechanism and is hence arguably the best solution for OLTP systems.

Tom Kyte
December 20, 2006 - 1:22 pm UTC

wow, your keyboard is in desperate need of repair, either that or you want to appear to be 14 years old.

Umm, Oracle is not built just for OLTP - on that you are so far off base.

And, umm, what does ETL have to do with full scan rates? Care to explain what those two orthogonal concepts are doing in the same sentences from you?

Clients care about performance and response time, in my experience anyway. What clients do you have that don't?

The largest databases do run on Oracle, Teradata is somewhat of a niche offering.

Where are your proof points on your claims?

</code> <code>

general question

A reader, December 20, 2006 - 4:47 pm UTC

How do you manage to keep your composure - no matter what others say ?

Tom Kyte
December 20, 2006 - 7:13 pm UTC

I don't :)

you cannot see me when I answer, that is the advantage of the internet...

and I have a backspace key and I know how to use it.

u gotta b...

Duke Ganote, December 20, 2006 - 5:55 pm UTC

I love (oops, sorry, "i luv") unsubstantiated claims like "it is proven by 3rd party industry consultants that Teradata outperforms Oracle in terms of performance". </code>
"NCR Teradata decided not to participate in the 2005 TopTen program" -- although to be fair, they apparently did well in previous years <code>


umer, December 20, 2006 - 7:45 pm UTC


Oracle is not just an OLTP solution, It is the industry leader in it. period. no harm in admitting what is right ;)

Good response time and performance translates into better ROI, do you agree with that? that is what i said.

Largest do not run on oracle, the link for vendor survey you so carelessly pasted from does not even feature teradata!

Duke Ganote:
Same wintercorp's 2005 report, as mentioned in tom's followup.

Unsubstantiated?? know Gartner?, have a look at their 2006 DWH DBMS report.


Like i said people, these two products have strenghts in different aspects. So it is not really a comparison.

Teradata does not suffer from loads of manual work in architecture design and maintainence, thats why the DBA count is way lower. It has the ability to provide reports requiring complex analysis featuring detailed data which is un-matched by Oracle. All of this is possible because of the high level of parallelism in it, because of the shared nothing architecture, compared to Oracle's shared everything architecture. 10g does have Dynamic Parallelism, but there are issues with it, like dependency on system resources, final aggregations not utilizing it. Unlike Teradata which has inherent parallelism.

At the end of the day, the DWH is about answering business questions, not system management. And that is where it shines.

Teradata has better business relations with clients, but that is another discussion ;)

Teradata habitually handles 40-50 TB installations with some going over 100 TB.

sorry, no offense was meant by me in the last post, so lets keep this discussion academic

waiting for your responses :)

Tom Kyte
December 20, 2006 - 8:47 pm UTC

because, well, teradata chose to - well, not participate?

Oracle is industry leader in:

Data Warehousing

among others. Teradata for example, cannot do the simplest of things - a trickle feed - why - because they are basically a "read only" sort of thing.

We too have things going over 100TB and 40-50 is not uncommon - now what?

umer, December 20, 2006 - 9:10 pm UTC

wow man, you are a lot thicker than i thought, trickle feed is not how you load data in warehouses hehe, there are bulk loaders for it which run in batches. That is again a feature usefull for OLTP installations ;) altho Teradata does have a utility for it too. ummm have u worked in a warehousing environment?

and teradata has way more large datawarehouses than Oracle ;) the largest being walmart, which is the largest in the world btw this is a documented fact.

and Oracle leader in BI? hehe wonder what teh folks at cognos or business objects have to say to this

waiting for concrete answers this time :)

Tom Kyte
December 20, 2006 - 9:14 pm UTC

if they have more, please pony them up. we did.

ummmm - have you worked for anything else other than the company that believes they are the "biggest"?

trickle feed - since you have heard of it - must be, well, a way SOME PEOPLE DO.

else, well, there would not be such a term? eh?

where is your mix?

Brilliant response....

Martin, December 21, 2006 - 10:49 am UTC


"sorry, no offense was meant by me in the last post, so lets keep this discussion academic"


"wow man, you are a lot thicker than i thought,"



Mark, December 21, 2006 - 11:15 am UTC

Googling for "trickle feed" and "data warehouse" seems to yield a lot of articles talking about...can you guess? Using trickle feeds with a data warehouse. (Some Teradata results, too.)

</code> <code>

You guys are way off...

Tom Fox, December 21, 2006 - 11:22 am UTC

Access is where it is all at. I have run several 1MB table full scan tests on my own PC that proves it. :) That, and it only requires 256MB of RAM. Try to do that Oracle and Teradata! :) (I believe the lack of sleep is getting to me. More coffee, please)

At any rate, umer, I look at features of a database system as a way to tune performance and extract better ROI. If a system has a static way of doing things (in other words, less features), then the data has to be loaded a certain way at each and every implementation. I know nothing about Teradata, but from what I gather from your responses, I guess if you're looking for a database system in which you can "install and run (tm)" and not bother with any sort of tuning, then Teradata may fit the bill. However, I'd prefer to have features available, so if my data changes, my RDBMS can adapt to it. Plus, having DBAs that are able to manage the system is not a bad thing. Recovery comes to mind.


Duke Ganote, December 21, 2006 - 11:29 am UTC

Umer-- I found and and documented (substantiated) that Teradata had chosen to not participate in the 2005 report it. I looked up the earlier Winter reports and referenced (substantiated) them via the Teradata press release.

Of course, I know Gartner, and if you'd linked to "their 2006 DWH DBMS report" instead of vaguely stating (without any substantiation) "it is proven by 3rd party industry consultants that Teradata outperforms Oracle in terms of performance" you might have more concrete credibility.

BTW: I've done trickle-feed data warehousing.


sam, December 21, 2006 - 12:39 pm UTC


I have read in a book that 50% of large database market is still running on mainframes (not client/server). Airlines, phone companies, credit cards are still using mainframes.

Do you think this is still true and would you say IBM DB2 is the leader in that space?

Tom Kyte
December 22, 2006 - 6:04 am UTC

did this book give you any references.

sure, there are large mainframe databases - and many of them are not SQL based (IMS, VSAM, others...)

It's about the Widgets

-Been Around Long Enough, December 21, 2006 - 7:15 pm UTC

30 years in IT, 23 in database administration and I still don’t have a favorite OEM DB SW vendor. Watsup with that? (Slang not a miss spelling). If my organization sells or designs widgets, then I need SW solutions that support my business objective. We are in the process of developing a multi co-mingled DB2 and Oracle RAC enterprise solution. Odd, why would I have my staff standing by to rip Oracle out? I am a libertarian DBMS sort of professional. Oh, that’s right. I need manageable, reliable cost affective solutions. Still, it’s about the business not the database.

Tom Kyte
December 22, 2006 - 6:20 am UTC

if you want cost effective, you would maximize the @#$#@ out of the stuff you pay $$$ for instead of trying to cut it off at the knees and cripple it before you even get started.

Be it DB2, SQLServer or even Oracle.

Dave, December 21, 2006 - 7:39 pm UTC

I'm in the middle of migrating from Oracle to Teradata right now, so I have experience with both.

First, remember that a DBMS is a tool, and not all tools are applicable in all situations. The specifics of how your company works and what you're trying to implement will dictate (along with your company's skill level and resources, obviously) how successful you'll be on a given platform.

That said, if all you're doing is loading data and then running select statements on it, and you're willing to spend ~$350k per usable 800mb of storage, then Teradata might not be a bad solution. The end user tools are cr*p and the SQL is more limited than Oracle, but for pure selects, it can really rock. (NCR always says about their SQL that it's ANSI compliant. I always think of their developers always driving at or below the speed limit because "that's the standard.")

Just don't try to do anything more than that. There are triggers, but they tend to cause restarts. And you can't have triggers and materialized views on the same table. And the programming language is poor (and you can't use it in triggers, either). And stored procs can't return record sets. And dirty reads - cool! And no autonomous transactions. And so on....

For a pure decision support system, TD might be fine. But it's a lot harder to do anything more elaborate or application-like.

Vinny, December 21, 2006 - 10:11 pm UTC

I have worked with both Oracle and Teradata and both have strengths and weaknesses - like you didn't realize that but seriously..

In Teradata everything is automatically parallelized and simple queries are extremely fast BUT you have to put a lot of time and effort into designing the data model according to Teradata's quirks. you also better get used what is called "locking row for access" which is a euphemism for dirty reads. Missing statistics can cause queries to behave very very poorly. Oracle does weird things if stats are missing but you have to see it in Teradata to beleive it. Some operations such as OLAP functions work very inefficiently compared to Oracle. Very limited Toolset (ex: no external tables, PL/SQL like language, limited indexing features etc.) - although you do not need as much indexing with teradata. Range scans don't work very well because everything is hashed to an AMP (similar to a partition) in Teradata - although they have something called a value ordered index, it doesn't work for composite indexes.

All in all Teradata uses a bit of a brute force approach while Oracle uses a swiss army knife approach to warehousing. If you don't need to be very fancy with your warehouse, Teradata works very well and ot is fast whereas with Oracle you have a lot of flexibility and capability BUT you need to know how best to make use of it and I do feel the effort to get Oracle to work well is a little bit higher - but you can do a lot more things with Oracle.

I know that was a bit of a ramble but that's been my experience...

~$350k per 800mb?

Mark, December 22, 2006 - 9:47 am UTC

Good posts (the last two). Dave from San Fran, I am curious why Teradata costs ~$350k per usable 800mb of storage...? According to Umer, 40-50 TB installations are common. I hope there was hyperbole in at least one of these posts. :)



Dave, December 22, 2006 - 3:02 pm UTC

Mark - I realized this morning in the shower that I'd said MB, not GB, so I was off by a factor of 1,024. Of course, that's still way expensive.

Why, you (didn't, actually) ask? Teradata scales only by adding nodes, which contain a fixed number of CPUs and around 1.2TB disk space (but you need to keep ~30% free for temp space for queries, so that's 800GB usable for data storage), and appear to cost somewhere in the mid $350k. (NCR doesn't publish prices, so actual costs vary.) The upside is that scalability is very predictable - you know exactly by what percent you've increased data and processing parallelization each time you add a node. Since processing is shared nothing and processing is asynchronous, there's no extra overhead to adding nodes, so there's no decreasing return on scaling.

The downside is that there's no choice: you can't decide to add storage at the expense of performance (the same CPU resources to cover more data). You just have to write a check to NCR and buy another node. NCR's working on some sort of near-line storage functionality, but that's still data that's not in the database. As far as I know, right now there's no such thing as cheap storage in the Teradata world.

(And don't even ask me about the query we wrote that returned random results each time it runs....)

Vinny, December 22, 2006 - 4:39 pm UTC

Teradata is expensive because it is proprietary - Teradata builds the nodes (machines), storage, creates an MPP cluster out of those nodes, hard wires every single disk to a node/amp (AMP is like virtual processor). So in essence every disk is tied to one and only one node/amp. All that is expensive - very expensive.

Although it is not $350K per 800 usable MB. It is more on the order of $350K per usable TB. Typically a single node (usually a 2 processor machine and now can be dual pocessor quad code) costs $350K and each node comes with approx 1 TB space. So if you buy 10 TB, you need to buy about 10 nodes.

If you need to add more space, you have to buy more nodes - not like Oracle where you just buy storage and add to the server. ith Oracke, you can increase storage without ever paying Oracle a penny. With Teradata Every time you need to increase storage capacity, you basically write a big fat check to Teradata. To expand storage, you buy nodes and then have to redistribute all your data across all the disks/nodes.

Oracle facts?

Matthew, December 29, 2006 - 4:33 pm UTC

Happy new year, Tom,

I always enjoy reading your posts.
I have experiences with Oracle/Sybase/SQL Server, every database platform has its pros and cons, I'm not that religous, they are just tools.
Oracle pictured Sybase as an almost-dead, irrelevant company ten years ago, but it still has over 3% market share now.
Please have a look at the side bars 'Facts1', 'Facts2' and 'Response' in the following site:

Are some of the facts true? (I know some of them are out-dated)
Tom Kyte
December 30, 2006 - 9:09 am UTC

3%, that would be almost dead if you ask me?

sorry, any fact bar that starts with garbage:

... My conclusion is this. I don't think there is single company who has purchased Oracle based on its technical merit. Every company and DBA I have met, confess that their use of Oracle is solely based on Oracle's 'market share.' ...

is well, garbage.

and the first 'fact' is wrong - about IEEE numbers. hmm, perhaps the fact stater needs a fact checker?

ouch, fact two:

... Oracle page chains when a column's size increases. That means that a single row splits into uncontiguous fragments each time a column increases its size. ..


fact three, false.

fact four, false (and shows complete lack of knowledge? SQL*Plus is a 'language'? give me a break please)

plsql cannot do DDL, interesting 'fact' that isn't a fact.

I stopped - sorry, the guy shows his utter lack of knowledge of that which he talks about.

Alexander the ok, December 31, 2006 - 12:40 am UTC

Hi Tom,

You probably shouldn't read any more of that "article", I have a feeling it will make you very angry. I was reading and saw this:

"In Sybase, a fully qualified object name is: server.database.owner.object. In Oracle, a fully qualified object name is: owner.object. The conclusion is as bad as it is obvious. Oracle has no concept objects belonging to different databases or servers in their basic architecture. The Oracle fan will say "But you can query tables from remote servers in Oracle!" And they are right. You do it with synonyms. One synonym for every object. If you want to access 2000 tables in a remote server, you have to create and maintain 2000 synonyms. Oracle introduced the concept of synonyms to get around their architecture."

I was wondering if this is possible, can you access objects in other databases via synonyms or do you think this person meant databaselinks?
Tom Kyte
December 31, 2006 - 3:57 pm UTC

the person is "not very well informed about Oracle"

period - nothing else can be said, their remarks make them look, well, "not smart"

the full qualified object name could be:


You do not ever "need" a synonym - they are for location transparency if you desire it.

TPC Benchmark Data

A reader, December 31, 2006 - 2:10 am UTC

Do we have oracle vs sybase vs sql server TPC Benchmark data for both OLTP and DSS Systems?

would be interested to see the results for oracle when compared with other two competitiors
Tom Kyte
December 31, 2006 - 3:59 pm UTC

there is the TPC-C - a mixed workload, mostly OLTP sort of thing.

there is the TPC-H - a data warehousing sort of thing

so, go to and read away. And if you ever find yourself in need of a tpc-c or tpc-h system, you'll know how they will perform on hardware you'll likely never ever approach.

Sybase/SQL server beats Oracle

Mark, December 31, 2006 - 8:56 am UTC

I did the following tests in 2005.
Case1: Sybase ASE vs Oracle EE (same hardware,same memory allocated to db)
OS: Solaris 10
Sybase: 12.5.3
Table recors: 100million
A. table scan: select count(*) from my_table
Sybase beats Oracle
B. update 1million records using same index columns
Sybase beats Oracle

Case2: SQL Server vs Oracle EE (same hardware,same memory to db)
OS: Windows 2000 advanced server
SQL Server: 2000
Table recors: 100million
A. table scan: select count(*) from my_table
SQL server beats Oracle
B. update 1million records using same index columns
SQL server beats Oracle
Tom Kyte
December 31, 2006 - 4:03 pm UTC

try it in real life, you know, maybe with more than one user :)

I doubt your test was "fair" in any way shape or form. You give us absolutely NO information here.

tell you what - do this:

update a single record in this table, do not commit.

Now - run your count star test in another session, get back to us on the times.

A reader, December 31, 2006 - 1:14 pm UTC

I like "Marks TPC Results"

Oracle vs Sybase/SQL Server - ROTFL....

Oracle Facts?

Brian Ceccarelli, January 01, 2007 - 4:08 pm UTC

Tom and other reviewers,

Before you summarily dismiss the "facts" about Oracle at and decree the points to be false, you should actually verify these facts yourselves. You will find them to be true. Look up IEEE CPU conventions for numbers. Then look at Oracle's NUMBER, INTEGER, FLOAT, database datatypes. They are not IEEE. And if you know anything about hardware arithmetic, you will see that Oracle's database datatypes are seriously lacking.

As for DDL, DDL is not a part of PL/SQL language as it is in Tranact-SQL. You think it is, but it is not.
An Oracle user has to go through dynamic SQL to do DDL. That is because PL/SQL, the language proper, does not support statements like "create table". To get around this problem, Oracle added a goiter of syntax in order to enable PL/SQL to "look like" it does it. To people who know databases other than Oracle, using dynamic SQL in this fashion is completely ridiculous and introduces a lot of development overhead.

You need some exposure to other databases to actually see the depths to which Oracle falls short.

In the end, if you had the time or the desire to go over the facts at, and seriously examined their their truthfulness . . . in the end, your only response will be "Well, Oracle has market share!"

I tell you the truth, every Oracle person who has challenged me on this points, ends up conceding the points.

Brian Ceccarelli

PS. As for issue 43, about database links requiring synonyms was true during the days of "Oracle 7". I just changed this fact on the web site.

Tom Kyte
January 01, 2007 - 7:52 pm UTC

I did, did you see me list some of them? They are LAUGHABLE.


umm, what are those?

execute immediate 'create table t ( x int )';

that would be part of plsql.

goiter of syntax? I think, well, not.

I used sybase, ingress, informix, db2, ms sqlserver, gupta sqlbase, many many many others.

And in the end - I discovered which one actually works really well. And I stuck with it.

Sorry, that crud at dbpowersuite is just what I said it was - absolutely "makes them look not smart"

And by the way - synonyms WERE NEVER EVER REQUIRED - never. falls into the "not smart about Oracle" category once again.

I like Sybase more

BeSybPro, January 01, 2007 - 8:05 pm UTC

What Sybase lacks is market share, here are some of my thougts (a DBA with experience in both products):

1. Sybase is much easier to install and administer than Oracle. Sybase beats Oracle in terms of Total Cost of Ownership: 1 Sybase DBA's productivity >= 2 Oracle DBAs
2. Even Oracle's non-blocking is superior to Sybase, Oracle¿s backup, import and export utilities are especially inferior to Sybase¿s "concise" dump and load.
3. Sybase and transact SQL are extremely easy to learn... Oracle, which is much more complex with loads of esoteric functionality that nobody seems to care about.
4. Compare writing a stored procedure returning a large result set in Sybase versus Oracle.
In Sybase: select * from your_tbl
In Oracle: you have to use ref cursor, can you imagine the performance?
5. Sybase is very efficient in terms of utilizing operating system resources and so requires less hardware.
6. If you think 3% market share is almost dead, what will say to Teredata (<2%) and MySQL (around 1%)?
Sybase does have the lousiest marketing and sales teams among the leading RDBMS vendors, and that Sybase really needs a leader with "charisma and vision" like Oracle¿s Larry Ellison.

Tom Kyte
January 02, 2007 - 7:54 am UTC

1) i would beg to differ, as would many industry reports. I for example find sybase very hard to admin, basically - because it is not my competency.

2) rman, data pump, it seems like it has been years and years since you've looked at Oracle.

3) big beg to differ. You are basically saying "sybase is so limited in functionality, and this is good"

4) wow, is this hard or what? (been this hard since version 7.2 of Oracle, that would be 9 releases ago)

create or replace procedure open_big_result_set( p_cursor in out sys_refcursor )
open p_cursor for select * from one_kabillion_row_table;

tell me please, how many more lines of code is this in Oracle over Sybase?

5) bullocks

6) I'd say tiny.


Mark, January 01, 2007 - 9:25 pm UTC

"Oracle¿s backup, import and export utilities are especially inferior to Sybase¿s "concise" dump and load."

Could you please explain? I am interested in hearing about this. Are you comparing with data pump, btw?


Brian Ceccarelli

Mark, January 01, 2007 - 9:38 pm UTC

"in the end, your only response will be 'Well, Oracle has market share!'"

I worked for a company who chose Oracle because only Oracle's replication met their requirements, i.e. nothing to do with market share. :) This was 4 or 5 years ago, so maybe the situation is different now...

Oracle Facts

Brian Ceccarelli, January 01, 2007 - 9:52 pm UTC

Thank you for the information about binary_double and binary_float.

You realize that Oracle just introduced this in 10g? And you realize that Oracle requires an extra length byte for each type even though these IEEE types are fixed length?

And Oracle still does not have the integer IEEE formats (16-bit int, 32-bit int, 64-bit int) let alone a bit type.

Check your history. The DBPowerSuite guys are not as dumb as you think.

As for the DDL within PL/SQL, note this does not work in PL/SQL:

create proc MyProc
create table xxxx

But it does in Sybase, SQL Server, etc. That is what I mean that DDL is not a part of the PL/SQL language proper. In order to do the equivalent, the Oracle user has to send the DDL through a PL/SQL execute immediate command. Oracle has a DDL interpreter that should be a part of the basic syntax, but it's not. This indirect way of executing DDL creates other nasty problems. It creates permissions problems. It creates retrieving results from just-selected created tables. What is easy an intuitive in Sybase, becomes a nightmare in Oracle.

Tom Kyte
January 02, 2007 - 7:55 am UTC

so what if that doesn't work in plsql, because

execute immediate 'create table t (x int )';

sure does. I'm not sure why this is so grievous a thing to you.

Oracle Replication vs Sybase Replication

Brian Ceccarelli, January 01, 2007 - 10:58 pm UTC

The reason behind companies "buying Oracle because they have market share", is that companies know no better.

The company indeed may have bought Oracle because Oracle met its technical requirements. But most likely the company did not compare Oracle replication with Sybase's. Sybase was the first player on the replication field.

It's been years since I worked with Oracle's replication and Sybase's. But I do know that Sybase's replication is cascadingly asynchronous. There can be a tree of databases down river and those databases do not have to be online. Sybase is aware that when these databases come up, Sybase forwards the changes. At the time I worked with Oracle replication, Oracle could not do this. Also even at the time, Sybase could replicate to Oracle, and even between two Oracle databases.

Sybase has a very powerful, very controllable, and very flexible, replication paradigm. It would very interesting for someone to compare the features of Sybase's replication to Oracle's. I am sure that Oracle has something beyond "create materialized view", I just don't know about it.

Tom Kyte
January 02, 2007 - 7:59 am UTC

well, sybase was the second - Oracle had basic replication in version 7.0, a bit before sybase bolt on replication server.

And Oracle supported your "trees" of servers since at least version 7.1 - when a way beyond create snapshot (as materialized views did not exist in name back then, not until 8) was introduced for update anywhere symetric replication.

Sybase ASE

Vasudeva, January 01, 2007 - 11:32 pm UTC

I have been around using sybase products since 90's also worked with oracle d2k and oracle 8.

I spent hardly 20 days to learn PowerBuilder 4.0 IDE and abt 1 Month to learn Sybase SQL Server 4.9. It was not the same case with oracle products.

I tried hard to learn oracle and use in the projects even went for professional training !! but its very difficult to learn.

Sybase is like a cup of coffee in winter unknowingly we can learn easily. Sybase developers/dba does not like to do things in a hard way!! unlike anyother RDBMS we hardly spend time handling issues :)

Overall sybase products are

1. Easy to learn
2. Easy to manage
3. They work what has been given in manual ot intended to
4. High performance
5. Clean and organised approach
6. ROI is very high
7. Can be managed with less resources (Manpower & Hardware)
8. Many more

I take a bet .. I can train any fresher as a DBA in just 30 days... can it be done with any other RDBMS ? I doubt


Mark, January 01, 2007 - 11:57 pm UTC

Brian, here is some info on the Oracle 10g feature called Streams -
I haven't used Streams (only the older Advanced Replication), nor have I used Sybase Replication. I'd like to see a comparison too.

dbpowersuite criticisms

Mark, January 02, 2007 - 12:58 am UTC

Well I reviewed the points on that web site, and I have to agree that a lot of these points are silly, or show a lack of understanding. I've written responses to just a few.

24) ...Every connection to Oracle has its own process...

Each Oracle connection does not necessarily have its own process. There are dedicated and shared server modes. Dedicated performs better in some situations, shared in others. This is described in the Concepts Guide. I can't imagine why someone would post a web page trashing a piece of software without having read the manual that describes the basic concepts.

28) Oracle will use the redo logs to create an index.

You have the choice of whether or not to log. Oracle isn't forcing you to do anything. You may want the redo in case you have a redo-based standby or replication. Or if you want to restore from a backup and do point-in-time recovery, of course.

34) ...Though function-based indexes require more syntax and are probably never needed aside from collating sequences...

They can be very useful for precomputing any deterministic function. They also allow you to index nulls, or implement selective uniqueness.

45) Oracle is in conflict over the meaning of ';' -- the semicolon. In SQL*Plus, the semicolon executes your command but in PL/SQL means the end of a SQL statement without executing it. To execute a PL/SQL inside SQL*Plus, you type '/' instead. This is a fundamental overlap conflict between execution commands and language syntax. It is a basic architectural flaw which one faces every day and hour when using Oracle. It drives everyone crazy, even Oracle aficionados. The Sybase user, who has grown accustomed to using good software, vomits at this behavior of Oracle. The Oracle user, who has grown accustomed to flaws and quirks, treats this as normal. In Oracle, one gets used to such bad things and gets desensitized after a while.

'/' means to run the contents of your SQL*Plus buffer. SQL, PL/SQL - doesn't matter. This was not complicated at all even to my jumping-straight-from-college-to-Oracle-developer mind. Using ';' to run SQL is kind of a shortcut. Obviously a PL/SQL statement ending in a ';' cannot be executed immediately - PL/SQL can't be run one line at a time as you're typing the code. You type the whole block into the buffer then hit '/' to run the buffer's contents. If this "fundamental overlap conflict between execution commands and language syntax" (i.e. having a ';' shortcut for SQL) drives you that batty, just use '/' for everything.

47) Oracle's UPDATE and DELETE statements have no FROM clause. Therefore, you cannot join tables to restrict the set of rows you are updating. Instead of being consistent with the SELECT statement like Sybase, Oracle forces you to be inconsistent. It's work-around time. You now have to figure out a way to simulate a join. You have to think subqueries. Oracle forces you to write a non-intuitive subquery for each column you are setting. If you are setting 3 columns, you have to write 3 subqueries--even if your subqueries are all the same. That's 3 times the processing. The resulting syntax is so convoluted, you will have to refer to examples each time you try to do it. This single Oracle problem will cost your company thousands of dollars both in writing the original statements, and then maintaining them.

I can see how one might find UPDATE FROM more intuitive, but I find subqueries more intuitive personally. I also like that Oracle kind of impresses on you the idea of using updateable subqueries (and therefore views), which are powerful features that are often overlooked. In fact I think this way is more elegant - you're not doing some special case "UPDATE FROM" statement. But that's all opinion. It is FACT that you do not need 3 subqueries to update 3 columns. See below. (How is this simulating a join anyway? It IS a join.)

/* Look ma, updating 3 columns and it only takes one subquery! */
update (
select a, b, c
from my_table, other_table
where other_table.x = 12
and =
set a = 3,
b = 17,
c = 99

(Unfortunately I don't have access to SQL*Plus right now, so I can't paste output, but I did confirm this works in Apex SQL Workshop.)

The Sybase way would be (actually I'm writing as I would for Postgres, as I am more experienced in Postgres. Should be the same or similar, though...)

update my_table
set my_table.a = 3,
my_table.b = 17,
my_table.c = 99
from other_table
where =
and other_table.x = 12

Could the first statement really be THAT difficult for developers, costing the company thousands of dollars? I seriously doubt that, even if they're accustomed to the UPDATE FROM syntax.

Oracle leads the way.

Saibabu Devabhaktuni, January 02, 2007 - 3:13 am UTC

No software vendor can defend their position based on "BAD LUCK" or "GOOD LUCK", and no software vendor can sustain for longtime if they were believed to be having great luck.

Over 90% of the fortune top 100 companies are using Oracle RDBMS and they wouldn't have been successful if they were making choices about software vendor's based on their market share.

That test case on dbpowersuite is not complete, show us the real world test case where Sybase outperformed Oracle. It can't be.

People talking about easy learning curve for Sybase, it is because Oracle has more meaningful features, it takes more time to learn Oracle.

Mysql is far better than Sybase, IBM UDB and MS sql server, if I have to choose non Oracle database.

Teradata will only be useful under very specific requirements, in the era of requirements changing every day and getting more complex, Teradata's usefulness is very limited.

Oracle leads the way when it comes to the combination of highly available, scalable, and performance.


Rob V., January 02, 2007 - 4:47 am UTC

Since someone mentioned TPC-C results... last summer Sybase did a TPC-C with ASE on IBM's p-Series Linux (dual-core p5 520 with SLES9), and scored the highest TPC-C score ever on a single CPU or on two cores. The difference with Oracle's best dual-core result is telling: ASE scores 58% better (81439 tpmC vs. 51506 -- verify the numbers on if you like).
This difference is due to what Sybase ASE users have known for years: ASE is more efficient due to its architecture which is radically different from Oracle's (as well as DB2's -- ASE scores 400+% better than DB2 in a comparable TPC-C). Consequently, Sybase ASE squeezes more performance from the same hardware then Oracle... which is what matters to Sybase customers.
Anyway, the fact that IBM choose Sybase to benchmark with over DB2 and Informix (which are IBM's own databases after all), is telling as well.
Tom Kyte
January 02, 2007 - 8:06 am UTC

and the day you actually run a tpc-c program in real life, let us know.

T-SQL exceptions? IEEE numbers?

A reader, January 02, 2007 - 5:00 am UTC

Did T-SQL get exception handling, eventually? Writing complex code in T-SQL reminded me writing C-64 BASIC code - all those IF @@... THEN GOTO just to test if a command executed successfully. It's a pity Syabase never ported the excellent Watcom-SQL they have in SQLAnywhere to their main RDBMS and dropped the poor, old T-SQL entirely.

About IEEE numbers: most database must store and perform calculation on fixed point numbers without losing precision. Oracle delivers a large precision.
It's years I don't need to store IEEE numbers into a database - and I prefer by far to perform heavy math in compiled C++ code, not in a stored procedure.

A reader, January 02, 2007 - 5:10 am UTC

@Rob V.: AFAIK the TPC was not on the same hardware, for example Oracle test was on HP Itanium a while Sybase was on IBM POWER 5. To compare database performance you should run tests on the same hardware.

A reader, January 02, 2007 - 5:21 am UTC

Moreover you are comparing a test run in 2004 with a test run in 2006 - hardware improves meanwhile.
The IBM configuration had more memory and CPU cache, and an external fiber channel storage, while the HP used external SCSI enclosures (but the controllers were in the server).
Before comparing the number, look at the full report, not only the table...

A reader, January 02, 2007 - 8:13 am UTC

"And Oracle still does not have the integer IEEE formats (16-bit int, 32-bit int, 64-bit int) let alone a bit type."

Pardon, what is BINARY_INTEGER and PLS_INTEGER? A bit type? It's easy to declare a new user-defined type and implement it - with full access methods.

Alberto Dell'Era, January 02, 2007 - 9:35 am UTC

A customer of mine actually chose Oracle, some years ago, because "it was the only one that was able to cope with the incredible load we need to put above its shoulders", as a DBA of theirs told me (they did run some tests). All the others RDBMS "crashed" under the load; not really a matter of "market share".

This is "probably" more important to us than spending 2.1 seconds more on the keyboard writing "execute immediate" around a DDL statement.

By the way - "probably" the kernel developers know how to extend the pl/sql parser to support DDL natively, but "probably" they have chosen to invest development time into improving scalability, rather than saving us the aforementioned 2.1 seconds once a week.

A reader, January 02, 2007 - 9:39 am UTC

Do a whois lookup on and then look who is defending it...funny coincidence :)

Lots of inaccuracies on that site, like #11:

"In Oracle, you must execute 100s of commands to accomplish the same thing. In Sybase, you load up 100 commands in your car and go to the shop and have them all serviced at one time. In Oracle, you must load you car 100 times, go to the shop 100 times, and have each command serviced one at a time."

Guess he should spend more time searching AskTom for the "FORALL" command?
Tom Kyte
January 04, 2007 - 9:40 am UTC

probably what they meant was, in sqlserver:

insert into t values ( 1 );
insert into t values ( 2 );
insert into t values ( 3 );

is considered a "single sql statement" (hence their issue with our "uneven" use of the semi-colon - because sql server abused the semi colon tricking people into thinking it is part of SQL - which is never was, it is an invalid character).

guess they never figured out "begin" and "end"

or binds :)

More comments and questions

Carl Kayser, January 02, 2007 - 10:49 am UTC

Ahhh, I¿ve entered the ¿database religious wars¿ section. Good luck to me. There are way too many targets here, including myself, and I hope to stick with a few.

First, Oracle¿s non-blocking of reads/writes is the biggest plus I see with Oracle. It¿s a BIG winner for Oracle. Onto other posts.

(Tom K¿s followup to Brian¿s ¿Oracle Facts¿)

so what if that doesn't work in plsql, because

execute immediate 'create table t (x int )';

sure does. I'm not sure why this is so grievous a thing to you.

Simple questions (since I have forgotten). Can one ¿grant select on t to ¿¿ afterwards within PL/SQL or must one use the execute immediate command instead?

(Vasudeva and Sybase Position in Vendor Value Study)

Additional CIO historical rankings:

Oracle Sybase
2006 32 21
2005 39 21
2004 28 N/A
2003 30 N/A

On a tangent, customers (and readers of this forum) have to be wary of claims. But I think that one really has to be very wary (ouch!) of Oracle marketing/sales. There have been too many instances where Oracle has been accused of misrepresentation, etc (e.g.,,1759,1913887,00.asp?kc=EWNKT0209KTX1K0100440 ). If there is any ¿vendor¿ that I would trust ¿out of the box¿ it would be ASA ¿ but there are a lot of DBMS vendors that I have not had contact with.

(Mark from NY and UPDATE FROM).

I notice that the updates are with constants. What I don¿t like about the ASE syntax is that the table being updated is referenced twice if one uses correlation variables/pseudonyms/whatever. Using the provided example:

update my_table
set my_table.a = 3,
my_table.b = 17,
my_table.c = 99
from other_table o,
my_table m
where =
and o.x = 12

Why is there both ¿update mytable¿ and ¿from ¿ my_table m¿? I would prefer:

update my_table m
set m.a = 3,
m.b = 17,
m.c = 99
from other_table o
where =
and o.x = 12

Continuing on, what would be the Oracle syntax for non-constant updates? Would someone convert the following to Oracle:

update my_table
set my_table.a = m.a * o.a
from other_table o,
my_table m
where =
and o.x = 12

Offhand I find the provided Oracle syntax hard to read ¿ but this may be due to unfamiliarity. One can specify reasonable coding formats for the ASE syntax (and I believe in coding standards). What do you recommend for the Oracle syntax? Left-aligning every line doesn¿t seem very good to me ¿ not that you necessarily intended that.

Tom Kyte
January 04, 2007 - 9:43 am UTC

grant is DDL, it would be execute immediate.

Why execute immediate 'create table t (x int )' instead of just "create table..."?

Duke Ganote, January 02, 2007 - 11:01 am UTC

FORALL Command

Brian Ceccarelli, January 02, 2007 - 12:22 pm UTC

Yes . . . I am one the "DBPowerSuite guys"! :)

And I want you to correct me if I get something wrong. I haven't worked intensively with Oracle since 9i. There are some new things in 10g, which through you guys, I am just learning.

Some things, like the FORALL command, you have to work with other databases to fully understand how far Oracle falls short. While Oracle has the FORALL command, one can only invoke the FORALL command within a PL/SQL block. An Oracle-only user expects this limitiation. He knows no better. But in Sybase or SQL Server, a "FORALL" is automatic and transparent. The ability to send multiple SQL commands to the server exists outside the context of a stored proc.

Oracle-only users take pride in the features of Oracle. They glory in the FORALL command, the binary_double data type, and the ability to invoke IEEE integers as user-defined types. But they don't understand that Oracle adds lots of complex syntax and inefficiencies to provide the basics, which should be transparent and efficient. And then there is the matter that Oracle implements the basics incorrectly (e.g., length byte for a fixed length type).

Many years ago, in a nuclear physics class, I thought I did a great job solving a test problem. My calculations were strewn out over 10 pages. I knew I had the correct answer. I was immensely proud of my work. But when the professor handed back my paper, the professor only gave me partial credit. I forgot a couple of fundamental concepts. I should have solved the problem in 1 page. I did 10x more work than I had to. The professor served me up a big slice of humble pie.

The Oracle system, its PL/SQL, its SQL*Plus, its server architecture, etc., reminds me of my 10 page solution. And every time I write PL/SQL, in the light of Transact-SQL, I know I am writing another 10 page solution.

Tom Kyte
January 04, 2007 - 9:58 am UTC


that is not a stored procedure, it is 9 extra characters. It does the same thing as


does. SQL Server HAS NO FEATURE EVEN REMOTELY SIMILAR to forall - it is lacking that feature entirely.

Now what.

In Sybase it is sql, t-sql, isql - each with their own nuances and commands they support.

still not getting your point, other than "you don't know oracle"


Mobra, January 02, 2007 - 12:56 pm UTC

"And every time I write PL/SQL, in the light of Transact-SQL, I know I am writing another 10 page solution."

You have got to be kidding. T-SQL only recently got functions (2000), even more recently got exceptions (2005), and still (as far as I know) lacks constants, not to mention any concept similar to packages.

T-SQL hardly qualifies to be a "real" programming language, it's more of a simple scripting language.

This from someone who has years of experience with both PL/SQL and T-SQL.

Re: FORALL Command

Saibabu Devabhaktuni, January 02, 2007 - 2:18 pm UTC


What components of Oracle server architecture is inefficiently designed compared to Sybase. Do you think allowing dirty reads is a great feature.

One will find many differences across Oracle and Sybase if your compare command to command, but if you look at the big picture Sybase falls short of Oracle in lot of ways.

"I forgot a couple of fundamental concepts...PL/SQL, in the light of Transact-SQL..."

Duke Ganote, January 02, 2007 - 2:34 pm UTC

I look the DBPowerSuite statement "Oracle has at least three different languages: Server SQL, SQL*Plus and PL/SQL" then wonder:

Who are these DBPowerSuite folks who, among other things:
1. Aren't familiar with SQL*Developer instead of SQL*Plus
2. Don't seem to understand that SQL, SQL*Developer and PL/SQL are just analogs to SQL, Query Analyzer and TRANSACT-SQL in the SQL Server realm.
3. Don't grasp that T-SQL can not be simply and efficiently ported to PL/SQL because Oracle and Microsoft have implemented different parts of ANSI SQL, e.g.
and have even implemented common SQL concepts (e.g. transactions) differently

Oracle Fervor

Brian Ceccarelli, January 02, 2007 - 4:59 pm UTC

In the end, I realize that many Oracle users fervently defend Oracle. Many of our careers depend on Oracle. As long as Oracle lives, there will be food on our plates.

Just to let you know, fighting the battle of Oracle vs Sybase or whatever database, is not important to me. I have more worthy battles to fight. If you guys come up with something that I truly missed, I am interested to know. I am interested in truth, because I too deal with Oracle on a daily basis.

I have read many of your comments. And my conclusion is simply this. Many of you certainly do not understand what I am saying. Many of you are certainly convinced of your accuracy, but really, you shouldn't be. I am not that stupid.

In brief, correctness is found in simplicity. Elegance and consistency are a part of the simplicity. If you are a mathematician, you know what I mean. Mathematical simplicity should be the techincal goal of all apps. When a system abides by these things, it is a good system and easy to use. T-SQL is simple; it is simple because it is basically correct, not because it lacks robustness.

One may try to defend Oracle. Try as one might, one can never defend that the null set includes the set containing empty strings, or that a fixed length field needs a length byte. One may believe IF statements should be confined to PL/SQL blocks, and that inconsistencies should exist inside and outside of a PL/SQL block. One may ignore that inconsistencies imply a model problem.

One may defend the exception model of programming, and believe that allowing a program to blow up and cleaning up after it is normal. But you must admit, it's a good thing that homes are not built that way, nor cars.

The presence of outward features of a language, like user-defined functions, are important but not as important as the basic architecture of the system. Whether or not a system supports packages is also not important. There are other ways to organize procs. (Though packages are nice, all systems don't require packages.) Be careful about the ANSI committee. The ANSI committee does not dictate truth. Most behaviors of a database, data models, and language syntax are derived directly by math, set theory and logic. Those things transcend rule by committee.

Tom Kyte
January 05, 2007 - 7:43 am UTC

then why do you publish such utterly incorrect information - all the while saying "I don't really use Oracle, haven't used it for the last three production releases, any knowledge I have is dated and based on really liking sybase and knowing sybase really well"

Elegance and consistency

Gabe, January 02, 2007 - 5:19 pm UTC

Yes, consistency as in "data consistency" .. wrong answers are wrong answers no matter how elegant ... :-) ...

A reader, January 02, 2007 - 6:53 pm UTC

To Brian Ceccarelli from Apex, North Carolina,

>>I haven't worked intensively with Oracle since 9i. There are >>some new things in 10g, which through you guys, I am just >>learning.

And still you keep rambling about Oracle it is not good blah blah bleh bleh....Don't forget to post your knowledge about Oracle on your website as well.


Sour Grapes

Vinny, January 02, 2007 - 7:05 pm UTC

Most of the arguments I see from the Sybase folks are pedantic. So what if Sybase is more elegant or easier to use - who cares. If it was such a hot item how come it is lagging so far behind in terms of penetration?

Sounds to me like he is a bit peeved that his personal favorite is not a leader despite being so "superior"...
Tom Kyte
January 05, 2007 - 7:45 am UTC

more likely he is peeved because people are pointing out that "hey, it just isn't the way you describe it, you admit you

a) don't use oracle
b) have very dated knowledge of oracle
c) use sqlserver extensively

so why do you write about Oracle - given that most everything that comes out of your keyboard regarding Oracle is technically inaccurate - and even when it is pointed out, you do not, have not, and for whatever reason will not correct it"

I've pointed out these things about this web page more than once in the past.

A reader, January 02, 2007 - 7:25 pm UTC

In the end, I realize that many Oracle users fervently defend Oracle. Many of our careers depend on Oracle. As long as Oracle lives, there will be food on our plates.

And thats what you are trying to do right defend Sybase as it is disappearing from db realm?

Defending Sybase

Brian Ceccarelli, January 02, 2007 - 8:06 pm UTC

Food on my plate does not depend on Sybase. Thank God, else I'd be starving! :)

A reader, January 02, 2007 - 9:47 pm UTC

<Food on my plate does not depend on Sybase. Thank God, else I'd be starving! :) >

Says all we need to know about Sybase ;)


A reader, January 03, 2007 - 3:16 am UTC

Yes very true.. product is superior, hence we find handful ferrari's :)

To Brian

Dinesh Velhal, January 03, 2007 - 4:08 am UTC

To Brian,

<quote>One may defend the exception model of programming, and believe that allowing a program to blow up and cleaning up after it is normal. But you must admit, it's a good thing that homes are not built that way, nor cars.</quote>

Funniest remark I have ever seen... (It seems like argument for argument's sake)

Brian, Even T-SQL now a days supports Exception Handling. Are you actually recommending writing code without exception handling in place?

Softwares are very different than cars and homes, so I don't think you expect them to be built in the same way, or do you?

Interestingly you have kept a mum about multiversioning or transaction model of Oracle...

No exception, for your sake!

A reader, January 03, 2007 - 7:58 am UTC

They don't have exception for the programmers' sake! It's not they have a very basic language, it's they want the programmers to code more carefully...
However, houses and cars have "exception handlers" too. Circuit breakers, ABS, etc. are devices that gets activated by "exceptions". Of course you don't design your electrical circuit to blow up because there is a breaker, but think if you have to check the current everytime you operate a switch - and no way to handle the situation if something bad occurs :)
Tom Kyte
January 05, 2007 - 8:09 am UTC

a language without exceptions is a language full of:

when others then null;

that is, errors happen but people just ignore them constantly. It is one reason I love exceptions (hard to MISS THEM isn't it) but despise "when others"

Ten page !!

HK, January 03, 2007 - 9:31 am UTC

I think it is a very good debate and it will benefit everyone.

Brian Ceccarelli from Apex, North Carolina you stated "And every time I write PL/SQL, in the light of Transact-SQL, I know I am writing another 10 page solution."

Ok Brian, how easy it is to covert an hexa to decimal (and vice-versa) in T-SQL? Guess what in Oracle it is just one line. This is just one example. I know you will come out dozens of examples that are difficult to do in Oracle.

Sorry my intention is not to prove you wrong, but there are some functionalities or features in Oracle which are far more superior than SQL Server (e.g transaction management).

IMHO what Oracle lacks is good GUI tools like the one SQL Server provides (I know Oracle has SQL Developer, OEM etc but they are no way near to SQL Server EM etc.).

I have got decent experience in multiple databases, but Oracle is one which I liked best.



Sybase & locking

Duke Ganote, January 03, 2007 - 1:57 pm UTC

Read for yourself what Sybase says about locking and concurrency...
"By default, Adaptive Server locks the data used in T1 until the transaction is finished. Only then does it allow T2 to complete its query. T2 'sleeps,' or pauses in execution, until the lock it needs it is released when T1 is completed."

Sybase & locking

Gabe, January 03, 2007 - 3:24 pm UTC

In another words: Sybase can make an exceptional database ... single user database that is. Alternatively you can choose to get the wrong answer (dirty reads). The obvious "solution" is to make transactions as short as possible ... hence the complaint about set autocommit on (DBpower "fact" #5)... data consistency gone ...

Knowing what I know I am still puzzled how Sybase (and MS SQL) managed to sell their databases as enterprise class ... oh yes, I'm sure you Sybase guys have developed many techniques how to get around the basic architecture flaws of Sybase and you certainly might enjoy re-inventing the wheel.

And while I am at it let look at the "fact" #5:
"PL/SQL blocks within a SQL*Plus script ignore SQL*Plus's 'set autocommit on'. Committing transactions within PL/SQL is independent from the SQL*Plus in which the PL/SQL is embedded. The commit syntax is also different."

I must admit I never used autocommit in my life. Why would I? I can imagine how it could be used in an installation script but if you are using it in anything else you got bigger things to worry about ....

Yep, the commit syntax is completely different:
PL/SQL: commit;
SQL*Plus: commit;

Tom Kyte
January 05, 2007 - 8:34 am UTC

... I am still puzzled how Sybase (and MS SQL) managed to sell their databases as enterprise class ....

because there are four classes of people out there:

Developer (I prefer to call them "coders")

And unfortunately, coders sometimes make the call - the DBA is not wise enough to understand the transactional issues and the coders have not a clue what a database is about.

We need more


people out there.

Sybase isn't unique that way...

Duke Ganote, January 03, 2007 - 3:36 pm UTC

I get emails reminding me that:

> When accessing DB2 data on the IBM mainframe
> using SQuirrel, you need to code an explicit
> "COMMIT;" even after a SELECT.
> Make sure both statements end with a semicolon.

IBM's own recommendations:

yes commit on db2

Jim, January 03, 2007 - 7:40 pm UTC

Yes, you have to issue commit in mainframe DB2 after you issue a select (dml) from an interactive tool. Why? DB2 on a mainframe doesn't do dynamic SQL. It is architechted to allow Cobol programs to be bound tot he database. At Cobol compile time the plan is generated and stored. So when the SQL statement comes from the Cobol program it doesn't have to generate an executon plan. (It already has one)

So when you issue dynamic SQL it writes a little program, generates a plan and then executes the plan. That is fine but the plan table is locked until you issue a commit. So one one else can bind their sql (compile their programs). It is a real pain in the neck.

Locking problems

Pablo, January 04, 2007 - 4:15 am UTC

I had a brief flirtation with Sybase about 10 years ago and remember making frequent calls (two or three a day) to the DBA to resolve locking issues. I was told this was usual for Sybase.

A reader, January 04, 2007 - 11:49 am UTC

I think Brian Ceccarelli is a nice guy and his point is to keep it simple which is absolutely fine but the problem is he is looking for one size fits all. Oracle has provided a toolbox use whatever suits your requirements compared to other databases which have limited options and i think thats the beauty of Oracle.

Technology changes and I think thats the best part of it and if you cannot accept change then one doesn't belong in IT.

Just my 0.02 cents.


Tom Kyte
January 05, 2007 - 9:10 am UTC

I think Brian is doing a huge disservice and embarrassing himself by publishing and defending statements that are utterly "not true"

Sad for me

Dale, January 04, 2007 - 4:20 pm UTC

It seems I have to drop my SQL Server stuff and jump into the database paradise - Oracle :)
But questions:
I only had 6 months Oracle experience 3 years ago, how can I start?
Which one is easier/better to start from? a developer or junior DBA?
Tom Kyte
January 05, 2007 - 9:22 am UTC

which do you want to be

a developer or...


sybadm, January 04, 2007 - 5:06 pm UTC

It was really good try to prove the Oracle is best. I think you need to join some school to learn other RDBMS too.
Following questions are self explanatory in practical environment (if you have worked on one):-
1. What is Oracle uptime to the business?
2. How many man hours it requires to maintain Oracle?
3. How frequently DBA's visit metalink? always more than sqlplus*...:)
4. What is employee strength of Oracle all over world and their productivity ratio?

With Best Regards,
Tom Kyte
January 05, 2007 - 9:38 am UTC

I have developed applications using

sybase sqlserver
ms sqlserver

among others.

1) 100% if you want it.

2) depends - think about it. I spend maybe 5 minutes a month on the asktom database, it runs itself. There are other databases that require more care and feeding - our email database for example (one database for 50,000 plus email accounts). That is sort of mission critical and huge and does lots of work. So there is a team dedicated to it.

3) depends on the DBA doesn't it. I don't have to go there very often myself.

4) no clue how you would "measure" that. Define productivity ratio for example, what two metrics would you use to divide with?

MarkDB v1.0

Mark, January 04, 2007 - 6:50 pm UTC

I whipped up an awesomely fast, extremely easy-to-manage database that has a 3 second learning curve, takes hardly any time to maintain, and you'll never need support. All it does is store a single one digit number in memory and display it on your screen constantly. When you want to change the data, you press a different number key on your keyboard. Very simple. Elegant. Query time is next to nil - just move your eyes to the screen.

Version 2 may support two digits, but there will be significant complications. Should the database wait for two digits to be entered, followed by an ENTER keypress? You would have the chance to backspace. But the extra ENTER keypress may seem inelegant to some - you could just press two number keys, and if you make a mistake, too bad. That's easier so let's do that. Also, should a leading 0 be omitted? We could make this a configurable option, but that's more complicated, so let's just say leading zeroes are allowed. But I dunno, these new features will still give the DBA more work, and the documentation will be way bigger. Maybe I won't make version 2.
Tom Kyte
January 05, 2007 - 9:45 am UTC

laughing out loud, very nice.

grep, sed, sort and awk make a very nice database too.

Sniff... sniff.. it smells...

Billy, January 05, 2007 - 5:13 am UTC

Mark from Canada said in "Sybase/SQL server beats Oracle" on December 31, 2006 said

>I did the following tests in 2005.
> Case1: Sybase ASE vs Oracle EE (same hardware,same memory > allocated to db)
> OS: Solaris 10
> Sybase: 12.5.3
> Oracle:
> Table recors: 100million
> A. table scan: select count(*) from my_table
> Sybase beats Oracle

*sigh* where to begin.. I have posted this query for several years now on Usenet and various Oracle forums. And through the years the size of the table has quadrupled and yet performance stayed the same.

So here it is, again, in all its glory. Proof that a statement like "Sybase can do a select count(*) faster than Oracle" is an ignorant and bs statement to make.


SQL> select count(*) from vlt;


Elapsed: 00:00:26.02

Execution Plan
Plan hash value: 3628587714

| Id  | Operation                         | Name           | Rows  | Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |
|   0 | SELECT STATEMENT                  |                |     1 |  3264   (3)| 00:00:59 |       |       |        |      |            |
|   1 |  SORT AGGREGATE                   |                |     1 |            |          |       |       |        |      |            |
|   2 |   PX COORDINATOR                  |                |       |            |          |       |       |        |      |            |
|   3 |    PX SEND QC (RANDOM)            | :TQ10000       |     1 |            |          |       |       |  Q1,00 | P->S | QC (RAND)  |
|   4 |     SORT AGGREGATE                |                |     1 |            |          |       |       |  Q1,00 | PCWP |            |
|   5 |      PX BLOCK ITERATOR            |                |     1 |  3264   (3)| 00:00:59 |     1 |  2557 |  Q1,00 | PCWC |            |
|   6 |       BITMAP CONVERSION COUNT     |                |     1 |  3264   (3)| 00:00:59 |       |       |  Q1,00 | PCWP |            |
|   7 |        BITMAP INDEX FAST FULL SCAN| STYPE_X25CALLS |       |            |          |     1 |  2557 |  Q1,00 | PCWP |            |

   - dynamic sampling used for this statement

         56  recursive calls
          3  db block gets
      51044  consistent gets
      31404  physical reads
        680  redo size
        229  bytes sent via SQL*Net to client
        238  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
       2557  sorts (memory)
          0  sorts (disk)
          1  rows processed

Open challenge to these I-dont-like-Oracle "experts" - post a similar SELECT from a production database that shows similar performance. COME ON! SHOW ME THE FRICKEN MONEY!!

PS. I have similar benchmarks for production systems processing TB's of data, inserting 1000's of rows per seconds, running for example a lookup SQL statement over a 1000 per second. I have a lead pipe called evidence and proof that backs up my statements about Oracle performance - and I'm pretty sure I'll beat your ass using Oracle every single time.

Sniff. sniff.. more bullshit...

Billy, January 05, 2007 - 5:33 am UTC

sybadm from UK,London said on January 04, 2007

> 1. What is Oracle uptime to the business?

I have about 30+ database instances I look after as DBA. Which one should I mention? They all have 1000's of hours of uptime. Hmm.. 4,398 hours on a db instance used 24x7 for corporate network configuration (I work for a telecom btw).

How about 1,840 hours on an instance that does real-time processing of network management data? (massive UDP data streams from some seriously large Cisco routers).

> 2. How many man hours it requires to maintain Oracle?

I spend less than 10% of my time per day doing DBA type work. The majority of time is spending assisting developers and writing back-end PL/SQL code for them.

Oh, did I mention that I look after 30+ db instances on my own? And that this includes a 12 node Oracle cluster? No junior DBAs to assist.

> 3. How frequently DBA's visit metalink? always more than sqlplus*...:)

Metalink is visted when you as DBA needs to. And it is one of the finest knowledge databases out there.

Implying that frequent visits is because of Oracle db errors and problems is STUPID and IGNORANT. Why?

Because it is knowledge base and no Oracle DBA is stupid or ignorant in thinking that he/she knows everything to know about Oracle. So they will consult the knowledge base whenever they need to confirm something, troubleshoot something, explore new Oracle features, etc. etc.

4. What is employee strength of Oracle all over world and their productivity ratio?

Ah.. so now you imply that Oracle employees are lazy bastards that are not productive.

You arguments are pathetic.

Okay, which dumbass is next?

Oy, reminds me of Intel v AMD

Tom Fox, January 05, 2007 - 9:13 am UTC

TO: Billy from Cape Town, ZA

See my note above? How about Access being the best database? No DBA required! :)

On a side note, this reminds me of the infamous "Intel vs AMD" or "ATI vs Nvidia" debates on many hardware forums. You can just as easily substitute vendor names in there ("Cisco vs Foundry", "HP vs Sun", etc). I don't believe any person will convince another in a message board. People need to learn to ask questions first, and test it for themselves, and decide which one fits the bill for them.
Tom Kyte
January 05, 2007 - 10:45 am UTC

People need to learn to ask questions first, and test it for themselves, and decide which one fits the bill for them.

just in case anyone MISSED THAT.

It's an Oracle?

DB2, January 05, 2007 - 12:19 pm UTC

latest Winter Top Award Winners for Peak Workload, OLTP

Company/Organization Peak Workload DBMS
United Parcel 1,134,034,718 DB2 Service
US Bureau of Customs 340,838,403 CA-Datacom
& Border Protection
Experian 202,214,000 DB2
State Street Corporation 195,430,140 CA-Datacom
Caixa Econômica Federal 131,847,300 CA-IDMS
CheckFree Corporation 66,046,711 DB2
LG Credit card 36,639,038 DB2

OOPS, where is Oracle?

Winter data

Gabe, January 05, 2007 - 12:50 pm UTC

and where is Sybase? and DB2 on Unix? and MS SQL?

year: 2005
platform: z/OS (IBM mainframe), all the mentioned, serious money involved ... I mean really serious money involved ... give me half the money they spent on these systems and I make it work on Oracle ...


Gabe, January 05, 2007 - 1:03 pm UTC

And did I mention that DB2 on mainframe and DB2 on Unix are two different databases? I mean like they have nothing in common but name.

The Rest of the Story

Phil Singer, January 05, 2007 - 1:07 pm UTC

This was taken from near the bottom of

What was left unsaid what that this was a comparison of applications running on IBM Mainframes, where Oracle has never been a strong player.

Of more interest is a comparison a little way down, of Windows Data Warehouses:

Company Peak Workload DBMS
OTP Bank 22,585,648 Oracle
UPSS 658,967 SQL Server
Omnicron 281526 Oracle
HP 166,105 Oracle
Premier Bankcard 55,896 SQL Server
Sage Telecom 49,895 SQL Server
Premera Blue Cross 42,100 SQL Server
Microsoft 36,046 SQL Server

Peak OLTP on Unix

Gabe, January 05, 2007 - 1:14 pm UTC

So if we are really looking at an old data, why not look at the platform (Unix) where Oracle, DB2 and Sybase can compete?

Peak OLTP on Unix

Company/Organization Peak Workload DBMS
KTF 7,160,276 Oracle
BPU Banca 6,274,536 Oracle RAC
ICICI Bank Ltd. 5,477,020 Oracle
Anonymous 3,902,413 Oracle
ICICI Bank Ltd. 3,205,327 Oracle
Turkcell 3,194,200 Oracle
Elsevier 3,102,248 Oracle RAC
Hutchison Telecom India 3,053,494 Oracle
Bharti Televentures India 2,368,938 Oracle

Where is DB2 Sybase? MS SQL?

And give it a few years and the mainframe will be under attack too ... it is just too expensive but for a limited few ....

Phil Singer

DB2, January 05, 2007 - 1:14 pm UTC


You listed so many SQL Server in your post, Tom will give you tough time:
... I am still puzzled how MS SQL managed to sell their databases as enterprise class ....
Tom Kyte
January 06, 2007 - 8:39 am UTC

why would i give anyone a hard time for posting accurate information?


Gabe, January 05, 2007 - 1:33 pm UTC

.. yes I'm puzzled .. but on the other hand Phil's stats are for datawarehouse so no real concurrency required. See the stats are posted for OLTP on Unix.

DB2, January 05, 2007 - 4:28 pm UTC

Does anybody have the following doc from IDC?

Worldwide RDBMS 2005 Vendor Analysis: Top 10 Vendor License Revenue by Operating Environment

We can get the big picture there.


Gabe, January 05, 2007 - 8:07 pm UTC

I said something stupid:
> Where is DB2 Sybase? MS SQL?

Of course there is no MS SQL as there is no MS SQL for Unix. It looks like that for OLTP Sybase and DB2 are out for big systems.

to those who talked 'Winter Top Award..'

SZB, January 05, 2007 - 10:29 pm UTC

there was the "Peak Workload".
what does it mean on "Workload?


Gabe, January 06, 2007 - 1:32 am UTC

from Winter Corp web site:

Peak Workload measures the peak SQL statements or database operations per hour in the database system. (Workload results are not comparable across platforms.)

and their FAQ:
What does the Peak Workload metric measure?

Peak workload counts the number of SQL statements (or equivalent database operations in non-relational systems) executed in the peak hour of the measurement period. For queries, it measures the number of select statements executed, not the number of rows fetched. This information is gathered from internal database statistics.

So, it really does not mean that much but it is a good excuse to stop discussing technical merits :-) ... I'm sure that many times a product A could be perceived as the winner in the marketplace but still be technically inferior to a product B ... as could be the case even with Oracle. There might be a product way better than Oracle but it is not Sybase, DB2 or MS SQL. A simple 2 session test with update and select will confirm it.

Comparing X with Y

Billy, January 06, 2007 - 4:16 am UTC

Tom Fox from Cincinnati, OH in "Oy, reminds me of Intel v AMD" said:

> See my note above? How about Access being the best
> database? No DBA required! :)

I did.. :-)

> On a side note, this reminds me of the infamous
> "Intel vs AMD" or "ATI vs Nvidia" debates on many hardware
> forums. You can just as easily substitute vendor names in
> there <snipped>

Agree. Which is why I was getting cheesed off with some of these comparison postings. Like that idiot who said he benchmarked Sybase vs. Oracle in 2005.

Someone who makes a statement like that only shows true technical incompetency. It is like an ordinary guy who only drove a 4 door sedan for all his life, getting in behind the steering wheel of 2 very different muscle cars to determine just which car is the best.

There is a lot more in doing comparative testing and benchmarking that making statements like "platform is the same, memory is the same, rows are the same".

As I have shown, a bitmap index can make a very significant difference in SELECT COUNT performance. Sybase don't have bitmap indexes.

So what do you now compare? Dumbing down Oracle to Sybase's level? Ignoring Oracle features that Sybase do not have? Just what type of comparison will result?

Oracle is a very poor Sybase imitator. Turn Oracle into a Sybase wannabe and of course it will perform worse than Sybase itself. Even an idiot should be able to realise that. But of course, they seldom do...

Which is why I reacted the why I did. They want to fight it out using the "which database has the biggest penis" approach, using raw SELECT COUNTs for example as performance indicators? I will be happy to obliged. I'm in a fighting mood. (lack of caffeine and Irish ancestors - so I get p'ed off quite easily)

> People need to learn to ask questions first, and test
> it for themselves, and decide which one fits the bill for
> them.

A noble concept. Except that it does not work. Most people are incapable of making such a decision as they lack the technical skill and expertise to make that decision on whether or not product ABC fits the bill. And the they resort to these idiotic comparative benchmarks exercises.

You can take a brilliant developer with 20 years of Sybase experience and he will not necessarily be able to make an Oracle system and application work. He may very well concluded that Oracle is crap and does not fit the bill at all.

Or you get the IT director with technical knowledge that dates back to writing Cobol code and processing ISAM files in the 80's. Now he needs to ultimately decide what product fits the bill. And he gets fed information about product ABC from that vendor's sales person (a so-called account manager). 99% of this information is usually crap as it is pure sales and marketing talk in order to convince that poor IT director to buy product ABC.

I have seen combinations of these scenarios more times than I care to remember. And almost always it results in the WRONG DECISION to be made.

People need to learn to ask questions first - most definitely YES!.

Test it for themselves? NO!! They need to get experts in for that product to show them how it works. What it can do. What the pros and cons are.

And decide which one fits the bill for them. Yes. As long as that decision is not made by a single person, like Mr IT Director to whom a 5% discount is more attractive than to the developers and business that needs scalability using a feature like partitioning or RAC or PQ or whatever.

As long as such a decision is a balanced and informed one that also takes all technical requirements also into consideration.

To: Billy

Tom Fox, January 06, 2007 - 8:24 pm UTC

Test it for themselves? NO!! They need to get experts in for that product to show them how it works. What it can do. What the pros and cons are. 

That's what I meant, only you said it better. If someone is a Sybase developer, and they wanted to test another database and do not have the appropriate knowledge, they should bring in someone who knows it to assist in testing on their systems.

What I truly meant is not comparing someone else's test to prove a point for your data. Your data, your load, and your systems are not the same as theirs.

People can make claims and compare all of these whitepapers all they want, but when the rubber hits the road, would the bank their career and/or company on it? Some may, but that's a gamble I choose not to take.

Who's better? SQL Server

DB2, January 07, 2007 - 11:24 am UTC

MS did way better job than Oracle in RDBMS in past several years.
SQL Server's market share was less than 10% in 2002, and it's 18% in 2005 (from IDC).
Since we have snapshopt isolation level in SQL Server 2005, the brilliant Oracle feature "non-blocking" is no more a advantage to SQL Server.
SQL Server is the only RDBMS which has over 10% growth from 2002-2005. I bet SQL Server will be the No. 1 RDBMS in 10 years.
The market share doesn't mean everything, it's from the revenue, please see the 2005 data from Gartner.

Company 2005 2005(%) 2004 2004(%) 2004-2005 Growth (%)
Oracle 6,721.1 48.6 6,234.1 48.9 7.8
IBM 3,040.7 22.0 2,860.4 22.4 6.3
Microsoft 2,073.2 15.0 1,777.9 13.9 16.6
Teradata 440.7 3.2 412.1 3.2 6.9
Sybase 407.0 2.9 382.8 3.0 6.3

Sybase and Teradata are not dead but grow, just because their revenue is much less than Oracle/DB2/SQL Server, so their market share is decreasing.

Tom Kyte
January 07, 2007 - 8:24 pm UTC

on windows.

how about across the board?

You would have to be also saying that windows will be the number 1 OS in 10 years.

A reader, January 07, 2007 - 4:27 pm UTC

>>SQL Server is the only RDBMS which has over 10% growth from 2002-2005. I bet SQL Server will be the No. 1 RDBMS in 10 years.

Hmm.. don't think so! heck not sure if MS OS will be what it is today forget about db market share.


SS2005 v Oracle

Duke Ganote, January 07, 2007 - 4:32 pm UTC

I think it's pretty clear that the only real competition amoung commercial DBMSs is between SQL Server 2005 and Oracle (or, to get personal, between Bill and Larry). Microsoft had that huge gap between releases of SQL Server, and now they've got snapshot isolation:
"SQL Server 2005 Database Engine assigns a transaction sequence number (XSN) to each transaction that manipulates data using row versioning. Transactions start at the time a BEGIN TRANSACTION statement is executed. However, the transaction sequence number starts with the first read or write operation after the BEGIN TRANSACTION statement. The transaction sequence number is incremented by one each time it is assigned."
Oracle has introduced gobs of defaults and automatic-this and automatic-that (I'm no DBA!) to simplify administration, and Oracle Express Edition (XE) and SQL*Developer to lower total cost of ownership.

Who's better? SQL Server - NOT!

Billy, January 08, 2007 - 1:03 am UTC

DB2, in "Who's better? SQL Server" on January 07, 2007, said:

> MS did way better job than Oracle in RDBMS in past
> several years.

Er.. yes, SQL-Server did a "better" job in playing catch-up with Oracle than Oracle as:
a) Oracle does not need to play catch-up with Oracle
b) Oracle is busy breaking new grounds in RDBMS features

> Since we have snapshopt isolation level in SQL Server
> 2005, the brilliant Oracle feature "non-blocking" is no
> more a advantage to SQL Server.

No more an advantage to SQL-Server? A pretty confusing statement.

You probably mean that this feature is no more an advantage to Oracle, as SQL-Server can now say "me too!".

Well, in marketing there are a few things to learn right from the start. One of these is that a product DOES NOT SELL because of "me too!".

A product sells because of its differences. Those differences that in the mind of the buyer/consumer makes it a better product than the others.

While SQL-Server has been playing catch-up to the MVCC feature - which btw is a very mature and robust and scalable feature in Oracle, something which cannot be said of this feature in SQL-Server..

Anyway, while SQL-Server has been playing catch-up, Oracle has released new features over the last years like advance user defined object types for SQL. Oracle Automatic Storage Manager. Bulk processing in PL/SQL. New index types like bitmap indexes. Oracle APEX. Etc. Etc.

Oracle is leading the pack. And I do not see SQL-Server playing anything but catch-up. Desperately trying to break new ground, always trying to be a "me-too", always lagging behind.

> SQL Server is the only RDBMS which has over 10% growth
> from 2002-2005. I bet SQL Server will be the No. 1 RDBMS
> in 10 years.

You must live and work in a very small world if you think that the RDBMS market on the Windows operating system is significant enough in size in order for SQL-Server to claim the #1 RDBMS spot.

To be honest, I don't want SS be No.1

A reader, January 08, 2007 - 11:16 am UTC

>You must live and work in a very small world if you think >that the RDBMS market on the Windows operating system is >significant enough in size in order for SQL-Server to >claim the #1 RDBMS spot.

Thanks, Billy, I worked with Oracle till 9i.
I'm current working as DB2/Sybase DBA for top 3 finiancial company in Wall street. We don't have Oracle shop.
I saw SQL Server was pushing it's way very quickly.
I heard New York Stock Exchange moved to SQL Server 2005, is that true?

Re: To be honest, I don't want SS be No.1

Billy, January 09, 2007 - 3:06 am UTC

A reader said in "To be honest, I don't want SS be No.1" on January 08, 2007:

So I jumped on your case for nothing? :-)

> I'm current working as DB2/Sybase DBA for top 3 finiancial
> company in Wall street. We don't have Oracle shop.

My sympathies. Seriously. I personally would not like working on technically inferior RDBMS products.

> I saw SQL Server was pushing it's way very quickly.

That has to be seen in the context of new market growth and not taking existing market away from competitors.

SQL-Server's single biggest con is that it is tied to the Windows platform. It will never be able to gain the #1 RDBMS spot because of that. Simply look at the incredible growth of Linux. And just what new will the o/s market have in 10 year times?

SQL-Server's single biggest pro is that it is tied to the Windows platform.

It is much cheaper (so Microsoft sales will claim) to get the Back Office suite of software than to purchases these components from different ISVs independently. And then there is also the issues of interoperability and intergration of these products.

No surprises if SQL-Server is indeed ruling the roost on Windows.

The real question is whether it is fair for an ISV to compete with a Microsoft Product when that same company also builds and sells the operating system?

The JoD ruling of the late 90's seemed to me to indicate not. So did the recent EU ruling. Why has Microsoft not be broken up?

And it is not a question of trying to stop innovation as Microsoft claims.

> I heard New York Stock Exchange moved to SQL Server 2005,
> is that true?

Would not surprise me as SQL-Server is a capable RDBMS.

I do not think anyone here will deny that. Simply that technically, Oracle is a far more capable product feature-wise and platform support wise.

DB2/Sybase are also top players

DB2/Sybase, January 09, 2007 - 11:37 am UTC

> My sympathies. Seriously. I personally would not like
> working on technically inferior RDBMS products

No worries, Billy.
DB2/Sybase are also great products, they're not inferior. Otherwise Wall Street couldn't survive.
My life is b-e-a-utiful managing Sybase/DB2 databases from 10G to 2000G; I don't have plan to switch back to Oracle.
One more thing, no matter how hard you tune the database server, over 80% performance gains come from good database design and well written SQL statements. RDBMS platform doesn¿t matter that much.

Re: DB2/Sybase are also top players

Billy, January 10, 2007 - 1:32 am UTC

DB2/Sybase from NY said:

> DB2/Sybase are also great products, they're not inferior.
> Otherwise Wall Street couldn't survive.

Yeah... The Orbiter (incorrectly called the Shuttle) is a glider. The complete approach after re-entry to landing is done as a glider. This does not mean it is a very good glider. In fact, it has an exceedingly poor lift:drag ratio. Worse than most big passenger planes - never mind comparing it to a glider.

The F4 Phantom was a capable aircraft. Despite the acknowledgment that if anything, the F4 did prove that with enough power and thrust, even a brick can fly.

Thus when saying that something is not inferior because it is capable of doing XYZ... well, that is not always strictly true.

> One more thing, no matter how hard you tune the
> database server, over 80% performance gains come from
> good database design and well written SQL statements.

With you on that a 101%

> RDBMS platform doesn¿t matter that much.

Beg to differ on that. Features like bitmap indexes, partitioning, real application clusters, parallel query, formal procedural language for stored procs, advance data types, automatic storage manager, concurrency, lack of lock escalation, etc. etc. all make huge differences.

The systems I design and deploy is 100% Oracle. Not a single line of external code. From custom written replication to front-end user interaction.

That same PL/SQL code can be run on any 10G platform. Which means full portability to even a better extend than Java.

I have full scalability as that code can be run on Oracle RAC, allowing the benefits of increased processing capacity, redundancy, high availability and so on.

At the same time I can do my initial prototyping and development and testing using the free Oracle XE version.

It is a mistake to think of Oracle as just a RDBMS. It is a data processing platform that has all the features that you will find and will expect from an operating system for developing all kinds of applications.

We have a web browser in Oracle which we can even use in SQL. We can make a web page look like a SQL table that can be SELECT'ed from, ORDERed, GROUPed, filtered, etc. We have a XML parser. We have a TCP client for doing telnet, ftp, smtp, pop3, etc. We have object orientation. We have pipes and message queues for IPC. And the list goes on and on.

Oracle has long since ceased to be "just a RDBMS". The thinking that a RDBMS is just a RDBMS is utterly flawed when dealing with Oracle.

migrate from 8i to 10G

A reader, January 11, 2007 - 3:34 am UTC

Dear Tom,

I the oracle magazine of January/February 2007 It is mentionned that we will soon have the oracle 11G release.

I am working in a compagny using oracle 8i for more than 7 years. There is no plan to migrate to any new oracle release.

Could you please in few words let me know what will be the benefit of migrating from 8i to 10G oracle release.

I would like to know the benefit taken into account the cost of this migration. Because even when we speak here about the migration we are answered that we have not enough money for the cost of this migration (not the software itself but what we have to do arround, oracle designer, oracle forms regeneration, plsql code etc...)

Thanks for your answer

A reader, January 11, 2007 - 12:03 pm UTC

To a Reader above,

Are you currently developing on this platform? is new functionality being added? if so then what would happen if you encountered a bug without an existing workaround esspecially if it caused a loss of data. COntacting support for help on new bugs in 8i would not get a response beyond recomending a workaround or advising to upgrade.

ALso what versions of the development software are you using and how easy is it to find and retain people with the skills to develop new application functionality and DBA's who want to continue managing an 8i database. unfortunatly these costs tend to be hidden, it takes longer and costs more to fill a vacancy and staff turnover may be higher but this isn't seen as a direct cost.

By delaying upgrading you do not save money on support/license costs as all versions cost the same amount to license and you will need to maintain a support contract with oracle to continue to have access to the Metalink knowledge base.

Finally if you delay long enough you can end up having to upgrade to a version that is not in support before getting to one that is, currently I am involved in a project to upgrade a system from 7.3.4 to 8i then to 10g only problem is there are a number of links to other systems that are still 7.3.2/7.3.4 so everything need to be tested and upgraded to 8i first then tested again and upgraded to 10g

MVCC vs nonMVCC; multi-OS vs single OS

Duke Ganote, January 15, 2007 - 11:43 am UTC

Any DBMS that lacks multiversion concurrency control (MVCC) is out. Such systems are, as Gabe noted, just large single-user systems. Non-MVCC DBMSs include most DBMSs like Sybase, SQL Server 2000, DB2. This quote from the "Oracle to DB2 Migration Comparison White Paper" summarizes the lot:
"The time an application is blocked because the unavailability of a lock is called the lockwait time. In Oracle, when an application requests to fetch a row, no locks are acquired. In DB2...applications that have updaters and readers accessing the same data from the same table may experience ...lockwait time... This is not an issue if applications each access their own set of tables." My bolding added...LOL!!!

Commercial MVCC DBMS include Oracle and SQL Server 2005, but SS2005 only runs on one operating system.

I think that pretty well summarizes the essential comparison! Oracle has multi-version concurrency, and runs on multiple operating systems.

That leaves only the amount of Oracle DBA support required in question. I've been on projects with swarms of Oracle DBAs and others with just one or two. My opinion is that the variables are the gullibility of management and the ability (or lack thereof) of the DBAs, not the Oracle DBMS itself.

"Any DBMS that lacks MVCC

Carl Kayser, January 16, 2007 - 1:24 pm UTC

is out." I'm glad that this is settled once and for all. After all, this comes from high on Mt. Olympus and must be the ultimate qualification of being an RDBMS. But is this everything? Perhaps we should also require that the RDBMS ... also be UNBREAKABLE (versus merely unbreakable)!

MVCC, once and for all.

Duke Ganote, January 18, 2007 - 2:11 pm UTC

I've read the apologetics for nonMVCC DBMS, like Bonnie Baker's quite readable "Joys of Commitment" recommended by DB2 fans
but everytime she writes about the need for releasing those ever-accumulating locks, I see images of Jacob Marley's ghost
dragging his locks and chains.

nonMVCC? No chance.

Re-read Tom's original answer: "In Oracle, the overhead of having 1 lock is the same as having 1billion locks (eg: none). In the others ...locks are a scare resource... they consume memory, take up space, are stored in in-memory data structures. Our implementation of the feature is so different as to not be comparable...We never block on a read -- they frequently block on a read."

nonMVCC gurus

Duke Ganote, January 19, 2007 - 12:33 pm UTC

I particularly thought of Tom's gem at the bottom of
The problem is, people become legendary in Sybase groups for coming up with unique techniques to solve issues like this -- having that inside knowledge of how to set up the perfect clustered index, using timestamps, never lock data -- do the concurrency control yourself, all of these neat "solutions" and then they discover [that in Oracle] "hey, you don't need to do that, why would I want to go over there where I mean nothing, where all of the knowledge I've gained over the last 10 years is useless". Talking to those guys, thats hard. Its like trying to sell the first C compiler with an IDE to a bunch of assembler programmers who love their punch cards. A bit of resistance."
``You are fettered,'' said Scrooge, trembling. ``Tell me why?''

``I wear the chain I forged in life,'' replied the Ghost. ``I made it link by link, and yard by yard; I girded it on of my own free will, and of my own free will I wore it. Is its pattern strange to you?''

Where *is* Oracle behind?

Old Ada Guy, January 24, 2007 - 12:26 pm UTC

I just caught up on this thread, and to summarize what I learned: almost all of the bad stuff people believe about Oracle is nonsense, and what's left is that Oracle *might* be behind in market share and/or performance on certain platforms. Not very exciting if you're in a scandal-hunting mood. Before I wander off to research Britney and Paris, I'd like to ask, where *is* Oracle behind other DBMSes? A few years ago you could make an argument, for example, for self-managing database, but that's gone, and the remaining stuff is minor. My own comparison also includes Java, because Oracle is closer in some ways to other virtual machines than it is to, say, DB2. My list:

1. developer IDE. SQL Developer isn't mature, and the 3rd party products are poorly designed bloatware.
2. Oracle-ized code formatters, Ant, Junit, Subversion, Javadoc. I've used the Oracle equivalents, which are embarrassing.
3. graphical dependency trees. Seems like there must be a simple tool out there, but the closest I've found is Oracle Designer, not so good.

Is Sybase dead?

DB2/Sybase, January 25, 2007 - 3:37 pm UTC

Sybase today reported financial results for the fourth quarter and year ended December 31, 2006.

"Growth was driven largely by robust demand for our flagship ASE database and IQ analytics server, which grew 30% and 22%, respectively, over the same quarter a year ago."

Please see: for detail.


Rajiv KUmar, January 26, 2007 - 6:23 am UTC

I have read these posts and feel that this thread makes an intresting

1) People have bias towards the product they have used.
2) They have not been able to fairly evaluate the other products.

In my opinion what DBMS to choose from depends on the no of factors
1) Existing infrastructure. People may not have choice to take a particular DBMS. I
2) TCO- Mostly Managerial decisions but play a vital role.

Having put the above argument, i would say that oracle beats other vendors by miles mainly on its features.

A reader, February 10, 2007 - 12:46 am UTC

Hi Tom,

Three months ago, your said to wait for 1 month for TPCC result. Nothing has ever changed. I notice that you keep saying that TPCC workload is artificial. Is that a reasonable execuse not to excel?


>what about it? wait a month and come back. go back - read >the history.

Tom Kyte
February 12, 2007 - 9:44 am UTC

you take me too literally. Look at the tpc-c's over time. "hey we are fastest (on the brand newest hardware), followed by 'no we are fastest (on the brand newer-est hardware), followed by...."

do you see a pattern there.

read the history.

A reader, February 13, 2007 - 1:12 pm UTC

Hi Tom,

>Look at the tpc-c's over time. "hey we are fastest (on the brand newest hardware), followed by 'no we are fastest (on the brand newer-est hardware), followed by...."
What you are saying is that no difference between Oracle and DB2 in terms of TPCC, only hardware matters. If so, Oracle might not have tried brand newest hardware for a couple of years or simplely can't publish a ME-TOO result.

I would expect Oracle 11G would take back the No. 1 position soon. Don't let us down.

>do you see a pattern there.
I only see the pattern is broken here. DB2 has hung in that position since 2004.
Tom Kyte
February 13, 2007 - 1:20 pm UTC

The Tpc actually is a hardware benchmark - yes.

i see 2005, but rather 'moot' as you can see - there just ain't that much activity. And I don't see a broken pattern at all.

It cost a lot to run these, and for what?

I've yet - in 20 years - to see anyone actually running a tpc-c in production.

Which one is better

A reader, February 14, 2007 - 2:42 pm UTC


Out of sybase/sqlserver/DB2/terradata/Oracle/dbase,msacces/INGRES/informix - which one do you consider is better than the others ? And which one is 2nd best ?

Tom Kyte
February 14, 2007 - 3:25 pm UTC

hmm, let me see....

Oracle would be first (you must have seen that coming??)

And the others all tie for "not first, way behind first"


it is after all.

which one is better

A reader, February 14, 2007 - 4:39 pm UTC


Still you won't say the 2nd ?

didn't know ...

Sokrates, February 15, 2007 - 2:59 am UTC

that there are others till I discovered this thread !

Just divide

Alexander Fatkuklin, February 15, 2007 - 6:24 am UTC

"What you are saying is that no difference between Oracle and DB2 in terms of TPCC, only hardware matters. If so, Oracle might not have tried brand newest hardware for a couple of years or simplely can't publish a ME-TOO result."
"A reader",
Just do the math...

IBM eServer p5 595 64 core = 3,210,540 (DB2)
IBM eServer p5 595 32 core = 1,601,784 (ORACLE)

for you see - Oracle and DB2 produces virtually _the same_ tpmC per CPU. And the hardware isn't very outdated either - IBM second position uses the same server with twice the CPU capacity. It is a _hardware_ benchmark often used to leverage DB market (since most people didn't realize that).

A reader, February 17, 2007 - 5:24 pm UTC

Hi Tom,

Hardware benchmark? A brilliant and creative observation. TPC committee member will laugth at your face. HP, Dell and other hardware providers will be upset about your comment.

In case you don't know, "TPC Benchmark C is an on-line transaction processing (OLTP) benchmark".
"The goal of TPC benchmarks is to define a set of functional requirements that can be run on any transaction processing system, regardless of hardware or operating system. ... This methodology allows any vendor, using "proprietary" or "open" systems, to implement the TPC benchmark and guarantees to end-users that they will see an apples-to-apples comparison."

I hope the description is self-explanatory.

Here are a list of reasons why Oracle can't deliver a ME-TOO result:
1. too expensive to run
2. an artificial workload
3. hardware benchmark

None of them can explain that Oracle isn't the best in TPCC. Making excuses is not a winner's manner.

Tom Kyte
February 18, 2007 - 9:47 am UTC

why would they laugh at me? That is basically what it *is*

This is going in circles...

laatikko, February 18, 2007 - 12:16 pm UTC

This is turning into an infinite loop, but here is Kevin Closson explaining the "TPC-C is hardware benchmark". I think he has some credibility on the subject...

... 5 years' on!

Richard, February 19, 2007 - 6:35 am UTC

You said (04-NOV-2001): "Now, fast forward 5 years from now. To paraphrase and twist a famous comercial ask yourself "where do you want to be". In 5 years, I'll betch windows is not the place - it'll be replaced by some new hardward/software combo and then where are you? you are with a database that limits you to exactly one OS -- their OS."

tick-tock, tick-tock, ...

It's 2007, and Windows is still there, bigger (no pun intended) 'n' better than ever... and the Database fight is still going on!

If Microsoft ever manages to create a runtime environment for MS SQL for other OSs, then Oracle is going to be under BIG pressure! Unlikely? I wouldn't bet on it! Computer power is now waaaayyyy in advance of, and proportionally cheaper than, it was just a few years ago - so fancy runtime environments are preceived as being less draining than in days of yore.

I love Oracle (I have used MS SQL and found it to be rather terrible); but the big win for MS SQL is not its technical brilliance (Oracle wins, no question), but that Windows folk tend to love Windows apps. And if they can run MS SQL on Linux/IBM/whatever, I can see a scrambling for licencing costs' reviewing at Redwood!

An aside: If Oracle made the Tuning and Monitoring Packs for EM a LOT less expensive (and I say free), I think the following might happen:

1. Oracle Support would be able to spend a lot less time fiddling around with "My SQL is slow" user complaints (I bet they number in the tens of thousands!) and more time on real bug identification/fixing.
2. The "word on the street" would be that Oracle is super-dooper, and problem analysis/fixing is such a breeze, etc.

OK - revenue is very important, but reducing/scrapping licencing costs for the Packs seems sane to me: think of the savings in manpower at MetaLink!!!

Tom Kyte
February 19, 2007 - 9:29 am UTC

it is smaller than it was, not bigger and better.


Richard, February 19, 2007 - 12:14 pm UTC

Windows is smaller? Huh?

O/S & Disk Required:
Win 95
30-40MB: <--- Just amazing!!!

Win 2000:

Win XP:


... and let's not even talk about CPU & Graphics Cards!

We are on the same page, here, aren't we?
Tom Kyte
February 19, 2007 - 2:19 pm UTC

smaller as in "linux and others are more popular now then they were then"

Why we need to patch Oracle for DST?

A reader, February 26, 2007 - 2:32 pm UTC

Hey Tom,

Why do we need to patch Oracle for DST?
Can't we get date/time from OS just like SQL Server/Sybase/DB2?
Tom Kyte
February 26, 2007 - 3:34 pm UTC

we do timezone conversions and "arithmetic" on timestamps that have timezones.

You can just get the date from the OS, that is the DATE datatype.

Timestamp also.

Timestamps with timezones and the ability to do "date math" on things with timezones requires - well - timezone support.

TPC-C numbers

A reader, February 27, 2007 - 12:18 pm UTC

Just saw the news that Oracle created a new record of 4,092,799 TPM for the TPC-C benchmark.

So here is a question for all the folks harping on and on about DB2 being the TPC-C leader. Is Oracle all of a sudden a better product than DB2 (most would answer yes BUT NOT because of the new numbers). Oracle, the product hasn't changed a whole lot (features may have been added but the architecture itself is pretty much the same) since the last result but the number more than doubled - This just goes to show that the numbers by themselves are pretty meaningless. Each product has its strengths and Oracle happens to have more strong points than the rest. If DB2 or SQL Server suits your needs use them by all means but the arguments solely based on TPC numbers are pointless.
Tom Kyte
February 27, 2007 - 2:10 pm UTC


A reader, March 06, 2007 - 10:53 pm UTC

Finally I am glad to see Oracle's new TPCC record. For Oracle itself, it's a big improvement.

However, Oracle just gets the 1st position by a very small margin. I guess that is already the best effort.
If looking closely, Oracle uses 64 processors/128 cores Itanimu 2, on the other hand, DB2 uses 32 processors/64 cores Power 5+. If I just copy and paste the comments above, such as "do the math" or "hardware benchmark". I can boldly claim that Oracle is STILL a loser. : )

PS, Power 6 will be out this year, if it's just a hardware benchmark, Oracle will lose soon.
Tom Kyte
March 07, 2007 - 10:16 am UTC

and you are comparing itanium to something not itanium - which is a virtual impossibility to do.

The day you run a TPC-C in production, these numbers will actually mean something to you. So, when you have a seven table schema with a handful of queries and a ton of non-real world requirements - this will be useful stuff :)

A reader, March 07, 2007 - 9:14 pm UTC

If TPC-C is a function of hardware and software, the mainly differences are processors, operating system, and RDBMS.

TPCC = Hardware Performance * Software Performance
= Processor * OS * RDMS

Since there is only 1% difference between Oracle and DB2's result, it's essentially the same.

64 * Itanium 2 Processor * Oracle * HPUX = 32 * Power 5+ * DB2 * AIX

2 * Itanium 2 Processor * Oracle * HPUX = Power 5+ * DB2 * AIX

So the combination of Itanium 2 processor, Oracle, and HPUX perform 50% of Power 5+, DB2, and AIX.

Either Itanium 2 is much inferior than Power 5+ (2 times) or Oracle contributes part of it.

Either way, to publish such a result is some kind of embarassing. If I were Oracle or HP, I wouldn't bother to do so.

HP/Intel claims that Itanium 2 delivered unmatched scores.

And IBM's:

Ajeet, April 05, 2007 - 4:09 pm UTC

Hello Tom,

Its good to be loyal to a technology if thats your religion.

Let us not compare just RDBMS, but the IT strategy and companies who provide infrastructure for the same. As you have tried to make fun of informix and sybase.....and simply ignored the fact that these comapanies faced somwhat different maket pressures and are almost on the verge of getting extinct. But informix was always a great DB and certainly more advanced than oracle (hopefully I didn't offend Oracle DBAs).

But Oracle Corp was also in the same place ... and Larry sweared in the court that Peoplesoft acquisition is for Oracle's survival (becuase oracle was already smaller than Peoplesoft and JDE duo and EBS is just too buggy)

Oracle has always been a company that is revolving around the RDBMS product and Microsoft a company that revolves aroung OS technolgy.

None of the IT company loves an RDBMS or an OS just for the heck of it. Its the entire technology solution that is bought and now the days it is dictated by Application software and not by RDBMS/OS/Hardware infrastructure.

Oracle RDB is available on all OS and H/W combination becuase you can never produce a OS....and Larry showed this by trying to intimidate RedHat for JBoss Acquisition. If you people know how to protect you business (acquiring innobase and launching oracle was scared!)MS is also smart enough that Windows doesn't goes out business. And Windows X86 Server market just toppled the netire UNIX/Linux/RISC. They always sold more XP than ORACLE Corps turnover (thats little debatable).

As long as the particular infrastructure supports the application you want to run it doesn't matter whether its oracle or Sql Server or even MySql(now they support procedural logic).

I have worked both on SQL Server and ORACLE RDB as a Production DBA. And it was always a consensus that intangible costs and skill to administer the Oracle RDB was always higher. Here we are judging the end user satisfaction and not how good oracle commandline as compared to SQL Server's GUIs. And you tried to do the same thing with ORACLE AS too.

By any calculation oracle's grid solution is not cheaper and for the core performance it relies on the performance of the storage(expensive sans).

Oracle is certainly a good product but that doesn't makes SQL Server any weaker.

We all know that we are part of the IT industry and are not tools specific guys. What oracle is doing is just business..and talking loud about..the so called superiority of oracle RDB. All these things can be done by SQL Server or DB2. IBM also learnt it the hard way that its not the infrastructure but its the services that will rule IT now. And the biggest sub organization in IBM is the IGS (earning more than all other divisions). Oracle has also learnt that and bought many application and BI vendors...or say other than OS..they tried to buy everything...ERP,CRM,Security,Application Servers (Oracle AS is based on ORION from IronFlare code snapshot), BEA/JBoss didn't worked..., even JVM (BEA Jrockit)

This is a huge sponsorship from oracle but still its a public forum .... Oracle boasting...simply doesn't looks good..

And ORACLE still have to show the world that more than $30B worth of acuisition was a right decision...or maybe you need to spend 30B rather than relying on Oracle RDB alone.


Tom Kyte
April 05, 2007 - 7:41 pm UTC

Informix - certainly more advanced - interesting. I used (as an end user) both. I never saw that myself. Informix was closer to Oracle - but suffered many defects (blocking reads being one, locks being a scarce, precious resource another). Informix was good, much better than Sybase, however - Oracle it was not.

And then they introduced that boutique of databases. This one for oltp, this one for warehousing, this one for interesting object data, this one for .....

Sorry, don't buy it.

Offering new products and changing strategy is not "fear", it is called "doing business". Evolve, revolutionize every now and then - or die.

Saying there is consensus does not in any way mean there is consensus. For I have worked with the others as well - they all took learning. ALL OF THEM. And to the same level.

Power5+ Vs Itanium

Alexander Fatkulin, April 06, 2007 - 2:02 am UTC

"TPCC = Hardware Performance * Software Performance
= Processor * OS * RDMS "

Dude, you forgot to put $$$ in there.

"Either Itanium 2 is much inferior than Power 5+ (2 times) or Oracle contributes part of it."

Again - your forgot the $$$. For you see - every tpmC is cheaper on Itanium. Who cares if you need 2xItanium - in the end of the day it is even _cheaper_ to buy twice as much?

sql server 2005

Reader, April 06, 2007 - 11:20 am UTC

With the sql server 2005 on 64 bit windows 2003 server, sql server has become a very powerful database. Do you still think it is inferior to Oracle because it does not have undo for read consistency?

Tom Kyte
April 06, 2007 - 11:47 am UTC

yes, blocking reads, reads that block writes (to get an accurate answer, one that actually existed) are still the normal mode of operation.

And there is that fact that - well - it runs on an OS, singular, one.

Not impressed

m00nmikney, April 08, 2007 - 2:36 am UTC

Hello, I have used serval databases for many years (10+ year) and working in very large production environments. I appreciate that some databases do things better or more efficiently that other databases, and perform differently.

Tom's comments here are bias to the Oracle product, and i can half expect that being an Oracle employee.

I have alot of respect for Tom and he's knowledge, but this article disappoints me slightly.
Tom Kyte
April 09, 2007 - 10:29 am UTC


I too have used many databases in my life. And Oracle hasn't disappointed (whereas for me, others have)

so, wherein lies your disappointment? Anything here technically inaccurate? Is read consistency a good them (yes, vehemently yes from me). Is non-blocking reads a good thing (see prior comment). Is the ability to move operating systems as needed a good thing (oh yeah, big time)...

Oracle bugs

A reader, April 09, 2007 - 10:36 am UTC

I have worked in Oracle for 15 years :)

The one thing which disappoints me is the large number of bugs - esp. with new features - it takes a few releases for the newly introduced features to "Stabilize"

There are a lot of things to be learnt in Oracle to become a master in that - wheras I guess that much time is not required for informix/sql server etc


MBPP, April 09, 2007 - 3:08 pm UTC

Funny but I just heard a few minutes ago the SQL Server team here complaining about their latest application "freezing" with too many deadlocks... About the Rdb reply, one of the best databases I ever worked (before Oracle of course). It was back in 1991, VAX/VMS... good times...

Unfair Opinion

A reader, April 15, 2007 - 1:08 pm UTC


I appreciate you and your contributions to the IT industry:

But I do not agree with your biased opinions and you are not truthful enough (you are spelling out your own version of truth).

Oracle is doing good and so are other companies. Oracle might be enjoying a market share but it is certainly not the RDBMS with best features. You people came really late in self managing databases and locally managed tablespaces and you never acknowledged in the forum.

You simply cannot scream about RAC and highlighting that other do not provide certain type of locking.

Larry and Phil White is a old story now it might be Larry and forces are still the same just the requirements are changing so comanies are adapting.

You might have interacted or trained some people and they got convinced that ORACLE RDB is the good...but I just want to restate what you said...'Just by saying consensus is there doesn't means consensus is there'.

Informix was always a good database and they brought technology to market when oracle was just talking about OPS. RAC/DataGuard/Advanced Replication were things Informix was already there with some solutions.

Maybe Phil White made some mistakes at the corporate level but that doesn't makes Oracle a better database (everyonr knows larry is the only gentleman in the IT industry). Have a heart and acknowledge on the forum that Oracle was about to be bankrupt in the nineties when sales people were selling the best RDBMS for more commision.

Just saying that Windows will be a platform that will be out of business in next couple of are stating an opinion that you belive is true and you have no data to support. Probably if Google says that based on the web services still holds some ground.

Acquisition may a way to evolve but oracle has jumped into that in a big way and soon Oracle Fusion will be launced with the same fanfare that its as good as Oracle RDB where all the components were shopped by oracle couple of years back.

But there might be a chance that oracle really goes out of business like Novell, Informix. Now IBM is anyway releasing IDS 10 so it will be still available from a company that ten times bigger than Oracle. I do doubt what are the capabilities thats informix will bring to the table. But you scratched the history to show people that Informix and Sybase were bad products becuase they had not so good top management and never spoke that oracle faced these things in 1990s and in 2000s.

PeopleSoft , Innobase and Oracle Express are proof of the concept that Oracle is in defensive mode. But a staement like Windows will be out of business is unfair and is about misguiding the readers.

I am into Oracle and PeopleSoft adminstration and do have a decent handsome experience but thats not because some Tom or Harry tells me that Oracle is good at read consistency..its the market. 10g is grid and SS2K5 is BI, BEA is SOA...let people decide what they want..give them opinions that fair not biased.

I could have written some technical stuff in it. But the direction of the series is not fairness...but biasness.

Tom Kyte
April 16, 2007 - 1:08 pm UTC

what is your version of "the truth"

I am entirely "truthy" here.

Locally managed tablespaces? That is your "biggest feature" to pick on? Hmm, interesting.

History has shown repeatedly - operating system platforms come, and they go, and then come and then go. That isn't an opinion.

Compare software companies - MS, Oracle, Adobe - in that order are the three largest software companies. Where does IBM fit into the scale?

Oracle is always in the offensively defensive mode. All successful companies are.

"I could have written some technical stuff" - wish you would have.

do I have bias - no duh, no kidding, hopefully - I mean really, just look at the URL - - one would know that.

But show me where I've been untruthy - is SQL Server single platform? Yes or No.

Look at the points in the original answer.

the I&I's - don't really exist as standalone entities.
Sybase - do you disagree?
DB2 - see sybase above.
SQLServer - we've flashed forward - when written originally, Linux as a platform was "not quite there". It is - now what?

You'll need to be more clear where you think the "un-truthiness" is here.

Reader, April 16, 2007 - 10:38 pm UTC

Tom, This thread started in Nov-2001 and you made a comment about sybase "Ask yourself, will this be here in
3-5 years". The fact is sybase is still around and companies are investing on sybase too.

Tom Kyte
April 17, 2007 - 9:56 am UTC

ask yourself - is sybase as a database vendor

a) a growing market
b) a shrinking market
c) a stagnant market

do people talk about sybase?
is sybase the hot database?
is sybase even on the radar screen for new development (forget maintenance for a moment)

I'll admit, I see less sybase to oracle conversions - but frankly that is because most that will be done are done. legacy sybase systems, we'll be seeing them for years. new sybase systems ?

I frankly do not even hear about them from customers. SQL Server from Microsoft, sure. DB2 from IBM, absolutely. Sybase - who?

or just

A reader, April 17, 2007 - 10:54 am UTC

bad memory, Tom

Oracle/Sybase DBA, April 17, 2007 - 3:47 pm UTC

Somebody already pointed out in the previous thread, Sybase is not dead but grows at 6% annually.
Most of the growth were from North America, I saw large banks are developing their new apps on Sybase.
Tom Kyte
April 18, 2007 - 11:35 am UTC

I don't see it - where is the "evidence" of

a) all of this new development (I see large banks maintaining legacy, and migrating to one of the three I mentioned above)

b) this growth in database (remember: we are talking database)

shows a market share decline (4% in 2003 to 3% in 2005)

It is not that I'm saying that "it is all going to Oracle", but rather that - I'm not hearing Sybase, at all, ever. After years and years of hearing Sybase (and Informix).

Now the only thing I hear is DB2, SQLServer (the other sqlserver - from Microsoft)

Alexander the ok, April 18, 2007 - 11:56 am UTC

Sybase has blocking reads, end of discussion. When you read too much data from a table it will lock the entire table and no one can make changes.

Saying it's still popular could be considered a fallacy of logic called appealing to majority. Doesn't mean it's a better engine at all.

To me there's no comparison between one that blocks reads and one that doesn't.

Tom pointed out Sybase TCO cheaper than Oracle

Oracle/Sybase DBA, April 19, 2007 - 2:11 pm UTC

Tom, from the above link you gave, it says:
"There is only one database vendor Sybase when it comes to 24-by-7 availability," says Mike Harrold.
An ongoing study of 2,000 IT organizations by the Standish Group research firm finds that Sybase's total cost of ownership is about 15% less than Oracle's.

Tom Kyte
April 19, 2007 - 4:54 pm UTC

that guy seems to think TCO reports are not that meaningful in the long run...

Oracle & Others

Suraj Sharma, April 20, 2007 - 1:19 am UTC

Tom & All,

Please correct me if I am wrong because even I am not a person with too much of experience as you all are in this blog.

Please refer this link

As you can see by referring the link that:

"The worldwide relational database sales for 2005 showed that revenues across all vendors and geographies grew by 9.4 percent to $14.6 billion. Oracle had the largest market share, with 44.6 percent, driven mostly by sales of its eponymous database for Unix, Linux, and Windows platforms. IBM had the number two spot in the relational database market with its DB2 UDB for Windows, Unix, and Linux servers, its DB2/400 database for OS/400 servers, and DB2 for mainframes, garnering a 21.4 percent share of the relational database pie for 2005. Microsoft continues to dog IBM's heels with its SQL Server database for Windows, with 16.8 percent of the market. Sybase, which is popular among financial services firms on Unix platforms (mainly Solaris), had a 3.5 percent slice, and the database at the heart of NCR's Teradata data warehousing platforms accounting for a 2.9 percent slice. Other vendors--including open source challengers that only charge for support, such as MySQL--accounted for 10.8 percent of relational database sales in 2005, according to IDC, which is still around $1.6 billion."

From the above we can see that the closest competator of Oracle is IBM's DB2, which itself has a market share of 21.4%, which is less than half.

If we refer the link, which was posted above in this blog we can see that Oracle has 39% of the market share and IBM has 34% in the year 2002 (which is quite close)

If we compare these two links we can figure out that since 2002 (where the gap between market shares is quit less between these two competitors) in 2005 the gape has increased like anything, which clearly indicates that inspite of Oracle being the most expensive RDBMS companies prefer Oracle over any other RDBMS just because of all its features and cross platform compatibility, security, performance. As I saw in this post that some of the RDBMS claims for better performance, some claims for better relaibility, but if we think it as overall that we want all of them together we can see that Oracle is the better option than all.
Tom Kyte
April 20, 2007 - 6:58 am UTC

be careful with those numbers by the way. One is "database", the other "relational database" - for marketshare.

Some other Oracle facts

Oracle/Sybase DBA, April 20, 2007 - 1:30 pm UTC

Hey, Tom,
How about these facts?

Tom Kyte
April 20, 2007 - 2:56 pm UTC

wow, a whole page of fun. I'll just copy the silly subject line here. The "half truths", you can click through to read.

1) Indexes can become invalid

if and only if you use a direct path load and the index is unique - hey, wait a minute, do you even have direct path loader? Oh - yeah, there is that. You cannot have a problem there because you don't even have that feature.

Seems funny to ping Oracle for its ability to do a high speed load, a feature sqlserver doesn't have. Hmmm....

2) Drop table: does a delete in the background.

Ok I lied, I have to copy this one it - but ONLY BECAUSE IT IS SO AMUSING :)

This is fixed in Oracle 10g. In previous versions of Oracle, a "delete from" was performed when a DROP TABLE was issues. Crazy, but true. Now, in 10g, the data is moved to the "recycle bin" which brings up a whole new set of problems!

hahahahahaha, that would be crazy - IF IT WERE TRUE. But, you know what, it isn't. Oh well.

3) Each connection takes too much memory (2-4 MB)

Umm, well, gee, sorry - no it does not. (wow, we are at #3, and yet - we have yet to find any facts, this is disappointing - no?)

It is in fact significantly less (1/8th) and - well, since you only NEED ONE connection and you are setup to do lots with that single connection in your application (as far as open cursors and such go), it goes further than that sqlserver connection - of which applications tend to grab 2, 3, 4, ..... N of in order to do anything useful....

4) Stored procedures don't return a result set.

hahahahahhaha sigh, this is so sad.

Oh, they say:

This is impossible in Oracle:

create proc P_get_employee as
select emp_id, emp_name from employee

and quite bloody right they are, because the syntax is, was, will be in Oracle:

create procedure P_get_employee( C in out sys_refcursor ) as
open c for select emp_id, emp_name from employee;

gee, that is so amazingly different - I can see how they could be confused by that.

sigh... sigh... sigh... #4 and we are "fact free"

I shall continue...

5) Oracle does not support update within a join.

You can't do an update, like this:

update company_data
set t1.msci_gics_sector = t2.msci_id
from company_data t1, msci_map t2
where t2.company_id = t1.company_id

darn, you are right - oh wait, it doesn't matter, since we can do the ANSI standard way:

update (select t1.msci_gics_sector, t2.msci_id
from company_data t1, msci_map t2
where t1.company_id = t2.company_id)
set msci_gics_sector = msci_id;

wow, #5 and we have yet to see "a fact", only tons and tons of MISCONCEPTIONS, 1% truths, and truly made up stuff...

6) Oracle stores numeric data as varchar strings
you can run
select * from invoices where invoice_id like 1477%
... as a valid query (invoice_id being of type "number")

This can be proven by loading data and comparing tablespace sizes. (e.g. load value 1.1 in 10,000,000 rows, and then load 1.123456789 in 10,000,000 rows). More decimal places means more space taken in the tablespace.

well, that proof is "funny", I mean - it is wrong....

ops$tkyte%ORA10GR2> create table t ( x number );

Table created.

ops$tkyte%ORA10GR2> insert into t values ( 14779 );

1 row created.

ops$tkyte%ORA10GR2> select * from t where x like 1477%;
select * from t where x like 1477%
ERROR at line 1:
ORA-00911: invalid character

ops$tkyte%ORA10GR2> select * from t where x like '1477%';


ops$tkyte%ORA10GR2> @at
ops$tkyte%ORA10GR2> column PLAN_TABLE_OUTPUT format a72 truncate
ops$tkyte%ORA10GR2> set autotrace traceonly explain
ops$tkyte%ORA10GR2> select * from t where x like '1477%';

Execution Plan
Plan hash value: 1601196873

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time
|   0 | SELECT STATEMENT  |      |     1 |    13 |     3   (0)| 00:00:01
|*  1 |  TABLE ACCESS FULL| T    |     1 |    13 |     3   (0)| 00:00:01

Predicate Information (identified by operation id):

   1 - filter(TO_CHAR("X") LIKE '1477%')

You cannot run their query, it doesn't work. And I would PRESUME that the second query, that actually does work - would actually *gasp* RUN IN SQLSERVER!!!

why - the rules of SQL say that when thou compare a number to a string, you shall implicitly convert said number into string - as my autotrace shows.

But the bottom line is - even if this fact were true (it is a 10% truth, they are stored in a varying length field - simply so you get 38 digits of precision - oh, say what - you ask "what is 38 digits of precision"??? Oh, that would be something your database it not capable of providing!!!! with numbers.

That 38 digits of precision, comes in very useful for things like - oh, financial applications and other things that require - well - preciseness.

Funny to get pinged (again) for something sqlserver is not capable of doing...

So, stored in a string? no
So, you have a query that proves it? no (hey, if it did, you just proved sqlserver stores numbers in strings!!!! funny isn't it)

Hey, can someone out there store: 1.123456789003231201124 in sqlserver for us and fetch it back out? I'm curious (oh wait, your 4 byte float with 6 and 8 byte double with 13 digits of precision might - just might - well, not be able to do it?)

ops$tkyte%ORA10GR2> insert into t values ( 1.123456789003231201124 );

1 row created.

ops$tkyte%ORA10GR2> set numformat 9.99999999999999999999999999999
ops$tkyte%ORA10GR2> select * from t;


wow, this is boringly easy...

7) No real numeric data types

hahahahaha, who says number isn't a real numeric type? that is funny...

8) Schema/user methodology is dated, and difficult to work with.

Try setting up a schema with read_only users, dbo users, and read/write users. You'll need to create separate schemas, and then maintain synonyms (at least now there are public synonyms to make this less painful).

I love the "at least now" bit - as if there were a time, well, there wasn't? Well, since sqlserver has existed as a product anyway.

If you need to set up read only, dbo (guess they mean "really important") and read write users in sqlserver - would you or would you not... well.... create users? (which are synonymous with schemas). I'm missing something - how is it - well - easier?

8, 8 and well - 8. 8 none "facts about oracle".

9) Error messages are useless most of the time
- try coding a stored proc, and figuring out what the errors are
- typical error statement: Cannot allocate segment in tablespace 10
( yet there is no way to find which tablespace is #10 ?!?!? )

Hmm, error messages in sqlserver are useless most of the time. I just said so, it must be so. So there. We are even.

I code stored procedures all of the time, while from time to time there are error messages that are vague (replace stored procedures with C compiler, javac, you name it please - I think we can all agree on that) - mostly they are pretty darn useful. (I said so, so there - it is now true, I've published it - just like the factoid paper!!!! At the very least we nullify each other)

Hey, here is a "typical sqlserver error message"

Neofarb, garbleflock - immediately fark to west

I find that useless - don't you. How horrid of them.

ops$tkyte%ORA10GR2> create user a identified by a quota unlimited on users;

User created.

ops$tkyte%ORA10GR2> connect a/a
ORA-01045: user A lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.
ops$tkyte%ORA10GR2> create table t ( x int ) tablespace system;
SP2-0640: Not connected
ops$tkyte%ORA10GR2> connect /
ops$tkyte%ORA10GR2> grant create session to a;

Grant succeeded.

ops$tkyte%ORA10GR2> connect a/a
a%ORA10GR2> create table t ( x int ) tablespace system;
create table t ( x int ) tablespace system
ERROR at line 1:
ORA-01031: insufficient privileges

a%ORA10GR2> connect /
ops$tkyte%ORA10GR2> grant create table to a;

Grant succeeded.

ops$tkyte%ORA10GR2> connect a/a
a%ORA10GR2> create table t ( x int ) tablespace system;
create table t ( x int ) tablespace system
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSTEM'

a%ORA10GR2> create table t ( x int ) tablespace users;

Table created.

that is just a quick sample of a couple of error messages - I'm not saying they are perfect all of the time (are you saying sqlservers are??? really??)

9, 9 is fine - and factoid light we still are....

this is fun, been a while since I've done the "shoot the proverbial fish in a barrel" thing - thanks for this!!!

10) No built-in export utility; for export to delimited files.
Oracle has SQL Loader for getting data in ... but Larry Ellison does not want you to get your data out!
You need to code a hack spool program, using SQL-Plus to export to a flat file.

well, there is spool
there is apex (point click and ship)
there is enterprise manager
there are dozens of utilities a couple of lines long (seriously, it does not take much)

Ok, tell you what - I'll "give you this one", partially. Because it isn't true really (there are tools available for this), but what the heck, I feel pretty safe...

11) No database dump utility, tablespace backups require you to offline the file.
There is no "block dump" style backup program in Oracle, export is a p-coded series of SQL statements, transportable tablespaces are basically copies of different segments of the databases. Loading one Oracle instance from another is not a simple task!

wow, man, OK, this just proves why you should never have a sqlserver expert talk about oracle. They are clueless.

There are hot backups, have been - since - well - BEFORE SQLSERVER EXISTED.

transportable tablespaces are - well - NOT COPIES OF DIFFERENT SEGMENTS OF THE DATABASE, rather, they are - well - copies of tablespaces that can be plugged in (without reloading at all, just attach) to another instance. Why bother dumping if you can just copy stuff - and not have to reload?

this one is very amusing. indeed.

12) PL-SQL is inconsistent with Oracle SQL-Plus implementation
Some functions work in SQL Plus, but not in a PL-SQL procedure ( like to_lob ).

hmm, sqlplus is a command line environment that executes SQL and PLSQL. there is no such thing as a "sql-plus" implementation.

that would be like saying "isql and transact-sql do things differently"

13) PL-SQL is inconsistent
e.g. When declaring a parm, varchar must be used ... varchar2(10) does not compile!

a%ORA10GR2> declare x varchar2(10); begin null; end;
  2  /

PL/SQL procedure successfully completed.

wow (shhhhh - don't tell my code this "fact", it might stop working?????)

14) SQL Plus procs wait until they are completed, before displaying printed terminal output.
This really makes debugging difficult. The output from the PRINT function (DBMS OUTPUT) does not appear to the console until the stored procedure has completed executing.

hmm, we - we have these amazing things called - well DEBUGGERS for debugging. But anyway - hmm, fascinating. Guess we could not use dbms_application_info to communicate (sure we could), guess we could not use utl_file (sure we could) guess we could not use pipelined functions (which means that plsql procs do not HAVE TO WAIT until they are completed to display stuff - hmm, that would conflict with this "fact")

14 and factoid lighter than helium still..... up up and away.....

15) Space reclamation is poor, table grows after deletes. Need to drop/rebuild tables periodically.
Even after deleting rows ... a query might still scan those empty blocks, which are part of the tables extent list.

are you telling me - ARE YOU REALLY TELLING ME - that sqlserver - after deleting a row - would not scan the space where that row was? Are you telling me that sqlserver - if you removed all of the rows from block #5 in a 10 block (sorry - page) table - would skip block #5? Wow, that's cool.

Oh wait, it doesn't - it actually does what oracle does... A query is going to scan the empty blocks - because they are surrounded by possibly full blocks you see.

I do not see any need to drop and rebuild tables - that is laughable. Our tables are many times way too large to consider doing that to :)

really, this isn't even funny any more, sad - but not funny...

16) Support, software is too expensive, poor value.
Oracle is the true leader when it comes to sucking up IT budgets.

because I say it - it is true - has to be..

you know what, apply this:


on that page please - it'll be at least as accurate!

17) Performance is lacking; this is inherent in the architecture.
- Raw devices are discouraged, Oracle tablespaces are made up of files in filesystems. With 10g, Oracle invented its own filesystem type ... but still, there are files in the filesystem, visible at the OS prompt.
- Oracle keeps 'before image' available, allowing dirty reads. Nice to have that dirty read available, but the overhead with the redo log really puts the damper on update performance.

raw devices are not discouraged, they are not necessary, you can use them. ASM - well, sorry, but you don't see files in the filesystem - and even if you did, we must ask:


dirty reads? That is something sqlserver touts as a FEATURE,
dirty reads? That is something Oracle explicitly DOES NOT DO, EVER

sqlserver does it
oracle does not

so, who is "bad" now?

and if this puts such a damper on the redo logs (which store AFTER - redo, not BEFORE - undo - whoops, it is easy to be confused by that which you DO NOT KNOW), why is oracle fairly good in OLTP?

18) GUI tools included are poorly designed, rareley implementd at client sites. ( Enterprise Mgr, Oracle Forms, etc )
The toolset which ships with the database is rarely used by DBAs. Hence the popularity of TOAD and DB Artisan.

"because I said so" says the author.

sorry, but all that "fact sheet" shows is - the fact that the author of the fact sheet knows nothing about what they just wrote about.

as factless as Powersuite

Duke Ganote, April 20, 2007 - 3:25 pm UTC

Facts on, a spirited debate

John S, April 20, 2007 - 7:00 pm UTC

More detail/response.

1) With partioned tables .. indexes can become invalid.

When you replace a partition, the index is hosed. Do you deny this?

2) Dropping a table is logged (or was in 9i) ; as it does to a delete ..
otherwise, why is it so slow? This was confirmed by our Oracle DBA on staff.

3) Most Java apps use connection pools, thus typically 3-4 connections per user.

Oracle connection do take 1-2mb .. read the user's guide.

Or, try "ps -elf" at the OS level.

4) A pointer to an open cursor is NOT a result set, it's wasted network traffic.

5) ANSII or not, the update you present is a lot more confusing ..

6) A past issue of Oracle magazine brought this issue up, with the introduction of
"numeric" data types in Oracle 10. I'll dig that up.

7) See #6. Numerics were introduced in version 10.

8) The error messages are really bad. Search for TWO_TASK ERROR in google ..

9/10 we seem to be on the same page

11) One you work with DB dumps in SQL Server and Sybase .. Oracle's "hot backup"
will not make sense. A SQL Server db-dump is a single file, which can be
loaded extremly fast into a target database. Imagine a huge bitmap loading
into a graphics program, with multiple read processes (striping).

12) There is a set of SQL functions which do not work in SQL-Plus .. you can't deny that ...

13) Try declaring a parm as type varchar2

14) Debuggers - not a solution here; what if you want your production team to
monitor the output, while the job is running ?

15) One of out tables grew to 50GB in size, even though the data took 5GB;
dropping, rebuilding the table was the only solution.

16) Oracle maintenace costs are high, check Gartner ...

17) ASM is a layer on top of the O/S (perhaps red hat) filesystem. We've found it to
a bit high maintenance. RAW filesystems are simply the best - any Sun engineer will agree.

18) As a user of past Oracle Enterprise, and Context Cartridge apps .. this is a qualified opinion.

Tom Kyte
April 20, 2007 - 8:36 pm UTC

1) yes - i deny.

Yes, indexes may become invalid - if - IF - you choose so, and you might.

If you can afford downtime, we can do partition operations (the likes of which I might add sqlserver dreams of) with minimal redo, undo, etc generation.

If you want, we can do them online - but need to have the normal protections in place (but remember, it is online, so - so what - it is online).

So, you choose - YOU CHOOSE, your choice, you the intelligent human being - you choose.

and what does this have to do with sqlldr? Moving my cheese, not nice :)

2) false, absolutely false. Confirmed by ME, ok - now we are even.

this is utterly FALSE.

Maybe your onsite DBA was not good? Didn't know of what they spoke? I don't know.

big_table%ORA9IR2> select * from v$version;

Oracle9i Enterprise Edition Release - Production
PL/SQL Release - Production
CORE       Production
TNS for Linux: Version - Production
NLSRTL Version - Production

big_table%ORA9IR2> select count(*) from big_table;


big_table%ORA9IR2> set timing on
big_table%ORA9IR2> drop table big_table;

Table dropped.

Elapsed: 00:00:00.07

Man, I WISH I could delete 1,000,000 rows (indexed!) that fast. That would be cool.

and this is really really really important: ok, we are in production - why are we dropping tables (eg: why is this even RELEVANT - if it were true, which is ain't, never was, never never was)

3) try selecting from v$tables - since ps reports, well, shared memory (something sqlserver doesn't use). shared memory be - well, SHARED.....

and hmm, most sqlserver apps I've seen use multiple connections whereas any well written oracle app uses


4) umm, you best explain the science behind that - because that just sound stupid from where I sit. Well, it is. sorry to be blunt, but "thou just don't know what thoust sayest" there.

Now, a streaming result set that just starts dumping rows back to the client - whether they actually want them or not - that is a waste (oh wait, I'm sorry - I just described sqlserver)

A ref cursor is a pointer to a cursor, true - that is the way you interact with data in Oracle. You cannot say "that is inefficient because that is not the way sqlserver does it"

You could however, prove it - go for it, do the science. Talk is cheap, I'm good at talking too - but show us the science - PLEASE.

A ref cursor in Oracle is no more (or less) efficient than a cursor is in Oracle and cursors are - well, the way it is done.

Tell me, your programs that run that procedure, what do they do?

Oh wait, they get this handle thing
that looks a lot like a cursor (cause it is)
and start fetching rows from it

What does an oracle program do?

Oh wait, they get this handle thing
that looks a lot like a cursor (cause it is)
and start fetching rows from it

it is basically the same - if you can prove it is somehow a 'bandwidth hog' - please do so, saying it - don't make it so.

5) nope, this one is:

update company_data
set t1.msci_gics_sector = t2.msci_id
from company_data t1, msci_map t2
where t2.company_id = t1.company_id

why do you reference company twice? what the HECK is up with that. Oh - wait, I got it, you are

.... drum roll....

used to reading it, so it makes sense to ....


but to me, that is non-sense, makes no sense.

Now, as I sql guy - you know what I get? I get joins - I understand sets, to me:

update (select t1.msci_gics_sector, t2.msci_id
from company_data t1, msci_map t2
where t1.company_id = t2.company_id)
set msci_gics_sector = msci_id;

makes perfect sense, I build a result set, I update it. done.

I fail (utterly and completely) to see what is "confusing about it".

However, you missed the point - the page said "you cannot do it", that page said lots of utter "not true things" period.

I don't care if you like the syntax or not, can it or can it not be done? without a correlated subquery? do YOU DENY IT?? :)

6) please, I like number, numbers rock, they are totally much better than 4 byte integers for many things, really beat 4 byte float and 8 byte doubles for lots of other stuff

Hey, can you store that number for me? Please? I really need to do that - can you?

Oh, you'll use a string, nice. got it.

7) no, binary_float and binary_double - native IEEE floats with all of their problems were added as a feature, they are not "numerics", they are datatypes.

Number is as numeric as floats are.

8) so, are you saying every sqlserver error message is awesome? If I can find one that is not, you'll have to agree that sqlserver error messages stink. want me too?

11) we call those transports, we do that cross platform, online, etc. now what? the author didn't understand what a transport was I think.

we have direct path loads for other types of unloaded data - do you?

we have data pump to do tons of stuff - direct pathed, the whole thingy - have you looked at that - at all?

12) sure, I can and do - please show me a sql function that doesn't work in sqlplus (you've just proven you have no clue what sqlplus is - this will be fun :)


big_table%ORA9IR2> create or replace procedure p( x in varchar2 )
  2  as
  3  begin
  4  null;
  5  end;
  6  /

Procedure created.

yawn, next

14) I gave you a list, dbms_application_info being first or foremost. what is the sqlserver equivalent of that? what - you don't have it? how awful, how do you monitor your long running procedures from a remote gui? what, you don't know what dbms_application_info is? got it.....

15) when I used sqlserver - one of my tables grew to 5 gig and the database crashed, we had to erase it.

I should have gotten training, I know, but erasing it was easier than actually understanding what we just did and why it happened.

16) no, you point - show us.

17) no, it is not, you lose. If you think it works on top of a filesystem you either

a) never used it
b) don't know really what a file system is.

ASM would love to be given RAW, so we can let the DBA pretend there are files (easier to manager) and cut out the file system.

Ask any sun engineer - they'll tell you.

ASM is a datafile file system - we manage things in segments, extents, blocks - just like a file system.

We eat RAW disk for lunch, love it, please - give it to us

but don't give us a file system - that'll not work.........

Give us DEVICES - that works.

18) context? cartridges? left field - and yes, my opinion is qualified :)

drop table = delete

Alexander Fatkulin, April 22, 2007 - 6:30 pm UTC

"Dropping a table is logged (or was in 9i) ; as it does to a delete .. "

Well, there is case when dropping a table what is a part of the cluster - sort of a "delete".

But hey - that guys don't even bother to specify these details (that table should be clustered). And you can do "drop cluster ... including tables". And that is only half of the story in 10G anyway...


John, April 23, 2007 - 11:14 am UTC

John S must be correct, right? After all he read it on the internet and the internet ALWAYS contains factual information :-)

John S is great!

Oracle/Sybase DBA, April 23, 2007 - 2:17 pm UTC

Sorry Tom,
Your reply to John S didn't seem to make sense.
We know every software has its limitation, Oracle does so, you don't have to deny/hide them.
Tom Kyte
April 23, 2007 - 4:48 pm UTC

I won't deny


I will however vehemently deny falsehoods

and make fun of those that persist in spreading them...

drop table deletes data and 10g fixed that. ahahahahahaha, amusing.

and it gets funnier from there, in that sad way.


Mark, April 23, 2007 - 6:29 pm UTC

I think they're just messing with you at this point, Tom. Let me give it a go.

Major flaws in Oracle that I've found:

1) I tried installing Oracle on my Commodore 64 and it crashed. I reported the problem to support and they said I had to upgrade. Those jerks.
2) The alert log keeps getting bigger. This is a security flaw because eventually the disk will get full and Oracle will hang.
3) The "undo tablespace" is a worthless feature that just slows down the database. Support said I should try putting it on another disk. I'm really starting to hate those guys.
4) No support for null primary keys.
5) I need a table with 1001 columns and Oracle only supports 1000. Tom Kyte says there's something wrong with my design. What an insult.
6) I deleted all the data in the table and it still took up space.
7) Because TOAD exists, every GUI tool Oracle offers is horrible.
8) Everything you do is logged, whether you like it or not, wasting an average of 12.7499 GB/min according to
9) Oracle charges you $300 per row returned. One time I accidentally cross joined instead of inner joined and I had to file for bankruptcy.
10) In SQL*Plus, you can't run Java commands unless you create a "Java Stored Procedure" and even then you're forced to call a static method. Static methods are so 80s. They went out with The Culture Club and velcro sneakers. Get with the times, Oracle.
11) I can't get dirty reads with Oracle. It should be a standard database feature for me to be able to read your incomplete transaction. If you're transferring $1000 from your savings to checking account, I should be able to see your savings down by $1000 before checking is increased by $1000. This way the check I'm trying to clear bounces even though you have the money. Oracle arrogantly breaks this standard. Stay away from this awful software.
12) Data types are all screwed up. Dates are stored as numbers and you can't specify precision or format, and you can't even cast a long raw to a rowid.
13) In fact, VARCHAR3 and 4 don't even work AT ALL.
14) I tried modifying Oracle data files in Windows Notepad and the database broke. Support told me you can't do that with Oracle...Obviously the software is inflexible in its methods of data access.
15) It's slow even when I index every column.
16) Try returning a hash table of 2D arrays of cursors pointing to user passwords in Oracle. Can't do it.
17) No one would ever use Oracle for a serious business. Sure Blizzard uses Oracle for its 8.5 million user MMORPG, but that's the exception, not the rule. They should have used MySQL and saved money.

I could do this all day. :)


Alexander Fatkulin, April 23, 2007 - 7:10 pm UTC

"drop table deletes data and 10g fixed that. ahahahahahaha, amusing. "

if the table is CLUSTERED - yes it is.

SQL> select * from v$version;

Oracle9i Enterprise Edition Release - Production
PL/SQL Release - Production
CORE Production
TNS for 32-bit Windows: Version - Production
NLSRTL Version - Production

SQL> create cluster c1
2 (
3 owner varchar2(30)
4 );

Cluster created.

SQL> create index i_c1 on cluster c1;

Index created.

SQL> create table clustered cluster c1 (
2 select *
3 from all_objects;

Table created.

SQL> create table heaped as
2 select *
3 from all_objects;

Table created.

SQL> select round(ms.VALUE/1024,2) "kb"
2 from v$mystat ms, v$statname sn
4 and sn.NAME='redo size';


SQL> drop table clustered;

Table dropped.

SQL> select round(ms.VALUE/1024,2) "kb"
2 from v$mystat ms, v$statname sn
4 and sn.NAME='redo size';


SQL> drop table heaped;

Table dropped.

SQL> select round(ms.VALUE/1024,2) "kb"
2 from v$mystat ms, v$statname sn
4 and sn.NAME='redo size';


7MB of redo to drop clustered table and 30KB for normal heap table.

If this isn't enough - I'll quote the documentation here:

"When you drop a single table from a cluster, Oracle deletes each row of the table individually."

That was my point. I don't think that that guys from rocket are correct about drop being a delete. But there is the case.
Tom Kyte
April 24, 2007 - 10:26 am UTC

and how did 10g fix that.

The rocket science guys would not even know what a table in a cluster is in Oracle speak.

and again, even if it was what they were talking about (it isn't), it would be a damnation of a feature that - well - sqlserver doesn't even have.

Tom where are you

A reader, April 24, 2007 - 3:45 am UTC

Hi Tom,

I am sure you are preparing for the 17 points raised by Mark from NY.


Mark needs a software development company of his own

Khalid, April 24, 2007 - 7:16 am UTC

I Read Marks questions and couldn't control myself. Man this guy is hilarious. He has put requests here as if people are waiting here to do software development for him. Put this request in a proper document and be ready to pay couple of million dollars and i am sure there would be software companies who would develop a database as per your specs.

Mark, take a hike man. And you are right you could keep going on because we all can see that you do not have anything productive to do.

Mark's omissions

SeánMacGC, April 24, 2007 - 7:37 am UTC

You missed a few I believe:
18. Doesn't make my tea
19. Hasn't solved nuclear fusion for power generation.
20. Hasn't secured world peace.


Mark you can't be serious

Alberto Pedretti, April 24, 2007 - 11:00 am UTC is a plataform designed to home use. You can't be serious installing oracle in this. And you call support guys jerks ?
Tom Please don't ever bother to answer this guy, I've read the first question and I don't want to read more.
Posting this stupid list is a waste of Tom's precious time.

Tom Kyte
April 24, 2007 - 11:31 am UTC

sarcastic tongue in cheek humor is something I really like... I do it myself.

Mark was being sarcastically tongue in cheek above - it was a joke.

Alexander the ok, April 24, 2007 - 11:24 am UTC

I can only assume he must be joking. Some of those statements are the equivalent of saying the world is flat.

#3 is priceless. The feature that sets Oracle above the rest and allows greater scalability than any other engine is a "waste". Hahaha.

I must have heard wrong, blocking locks are good?

Alexander the ok, April 24, 2007 - 11:30 am UTC

Ok I kept reading, he's joking. Those are good.

I didn't said that

Alexander Fatkulin, April 24, 2007 - 11:44 am UTC

"...and how did 10g fix that. "

Where I said that?

I said "this is only half of the story". It's quite different from "10g fixed that"??????

Drop isn't always a drop in the 10G - recyclebin.

But please don't ask me to comment if you misquote a quote.
Tom Kyte
April 24, 2007 - 12:59 pm UTC

I didn't say you did, they did.

they said "ha, until 10g, Oracle did a drop table via a delete"

they wrote:

Drop table: does a delete in the background.

This is fixed in Oracle 10g. In previous versions of Oracle, a "delete from" was performed when a DROP TABLE was issues. Crazy, but true. Now, in 10g, the data is moved to the "recycle bin" which brings up a whole new set of problems!

they were not talking about clustered tables at all - just regular old tables.

the "fixed in 10g" and the mention of the recycle bin - that removes clustered tables from their point.

Can anyone spell Irony?

Steve, April 24, 2007 - 11:48 am UTC

Obviously not if your name is Khalid or you're from Brazil!


RobH, April 24, 2007 - 12:19 pm UTC

Frankly I didn't have much trouble with analytic sql in oracle, but I do find the updates more difficult (especially using the ANSI example you provided).

SQL> create table x (id number, col1 varchar(1));

Table created.

SQL> insert into x values (1,'a');

1 row created.

SQL> insert into x values (2,'c');

1 row created.

SQL> insert into x values (3,'z');

1 row created.

SQL> insert into x values (4,'g');

1 row created.

SQL> commit;

Commit complete.

SQL> create table y (id number, col1 varchar(1));

Table created.

SQL> insert into y values (1,'f');

1 row created.

SQL> insert into y values (2,'f');

1 row created.

SQL> insert into y values (3,'f');

1 row created.

SQL> insert into y values (4,'f');

1 row created.

SQL> insert into y values (5,'f');

1 row created.

SQL> commit;

Commit complete.

SQL> update (select y.col1, x.col1 from x,y where x.col1=y.col1) set y.col1=x.col1;
update (select y.col1, x.col1 from x,y where x.col1=y.col1) set y.col1=x.col1
ERROR at line 1:
ORA-00904: "X"."COL1": invalid identifier

Don't forget, we know the dangers of this:
SQL> select * from x;

        ID C
---------- -
         1 a
         2 c
         3 z
         4 g

SQL> select * from y;

        ID C
---------- -
         1 f
         2 f
         3 f
         4 f
         5 f

SQL> update y set col1 = (select col1 from x where;

5 rows updated.

SQL> select * from y;

        ID C
---------- -
         1 a
         2 c
         3 z
         4 g
         5    <=========Whoops! (I understand this is expected behaviour and how to correct it with a where clause, but for a newbie, its a gotcha)

SQL> rollback;

And to those who say Sybase is simpler, I find having to add a device, then allocate it to a database more confusing than just adding space to a tablespace (but I guess I can understand if you add granting quota's in). Also, the log management in Sybase seems more prone to problems and much more manual than archiving logging in oracle (but again, its based on personal knowledge).

Tom Kyte
April 24, 2007 - 1:04 pm UTC

why does your example of invalid syntax show that it is harder to use??!? We are just following the normal rules of scoping and name resolution - something any SQL developer should/would be familiar with?

that correlated update better work in sqlserver, if it doesn't sqlserver is really non-conformant with SQL.


Mark, April 24, 2007 - 12:28 pm UTC

Yikes, remind me never to do standup... Maybe my "complaints" are just that indistinguishable from what the real critics are saying. Scary. (Actually I've heard the TOAD complaint before, only worded slightly differently.)

To be clear to all: My above post was an attempt at satire (or irony, or whatever it might be). Please please please don't think any of those complaints are real. I would never refer to Oracle Support as jerks, nor would Oracle ever charge you $300 per row. I did define a column as VARCHAR3 once, but it was a typo.


Tom Kyte
April 24, 2007 - 1:04 pm UTC

I got it right away :)

I should have written "laughing out loud" - like I was going to do....

Edit button!

RobH, April 24, 2007 - 12:34 pm UTC

"Look honey, I made a fool of myself.....", man, an edit button would be nice (although, I guess, REALLY proof-reading would be better).

this is wrong,
SQL> update (select y.col1, x.col1 from x,y where x.col1=y.col1) set y.col1=x.col1;
update (select y.col1, x.col1 from x,y where x.col1=y.col1) set y.col1=x.col1

What I meant was (notice the join):
SQL> update (select y.col1, x.col1from y,x where set y.col1=x.col1;
update (select y.col1, x.col1 from y,x where set y.col1=x.col1
ERROR at line 1:
ORA-00904: "X"."COL1": invalid identifier

Why people keep thinking that Buenos Aires is in Brazil?

A reader, April 24, 2007 - 2:24 pm UTC

Sorry to get off the topic, but this is for "Steve from UK"

I don't know why people keep thinking that Buenos Aires is in Brazil, where it actually is in Argentina.

Alberto Pedretti said it clear on his review.


A reader, April 24, 2007 - 2:48 pm UTC

Ah my bad - but they're both in South America, both have great footballers!! And when I clicked on the review button I couldn't remember where the comment was from and took a guess!

Alberto Dell'Era, April 24, 2007 - 2:50 pm UTC

The Relational Angel visited me last night in a dream, and told me that the supersecret syntax to make RobH's statement work is

update (select x.col1 source, y.col1 target from x, y where = set target = source;

it also told me that this is called an "updatable in-line view", and promised, but only if I keep my Relational Karma high enough in the next two years, to visit me again, and tell me the URL of a supersecret web site, where a lot of examples about this can be found easily, and where "All your Relational Questions will be Answered".

It mentioned also something about a supersecret sacred text, "Concep<whatever>", but then the bell rang, and I woke up.

So long and thanks for all the fish. . . .

RobH, April 24, 2007 - 3:45 pm UTC

I for one, welcome our Vogon overlords. I'm glad everyone is so witty today.

My point with the update example that you stated, that it was easy and understandable (and valid), but with a certain pre-text (and thus the point of showing another "gotcha").

For those who don't know, but are curious to the answer (although Alberto points it out well)

SQL> update (select x.col1 source, y.col1 target from x, y where = set source = target;
update (select x.col1 source, y.col1 target from x, y where = set source = target
ERROR at line 1:
ORA-01779: cannot modify a column which maps to a non key-preserved table

SQL> create unique index x1 on x(id);

Index created.

SQL> update (select x.col1 source, y.col1 target from x, y where = set target = source;

4 rows updated.

Tom Kyte
April 24, 2007 - 3:47 pm UTC

well, there is the easier

merge into target
using source
on ( =
when matched then update set col1 = source.col1;

as well... :)

"You live and learn. At any rate, you live."
douglas adams....

To Mark from NY

A reader, April 24, 2007 - 5:08 pm UTC

Sorry to clutter with another review, but I laughed out loud when I read your post. Q. When will ORA be released on Symbian OS - I want to run it on my cell phone...

Fuel for the Fire

NH, April 27, 2007 - 8:08 pm UTC

I'm not a big fan of Sybase. I work with it now as an analyst and find some things about it annoying (like automatic commits, and deadlocks -- something I never experienced in nine years of working with Oracle). But as a former Oracle DBA, I'm biased. Anyway, seems Sybase is in no danger of disappearing anytime soon.

"IBM, Oracle and Microsoft dominate the enterprise database market, but the oft slighted Sybase turned in a record performance in 2006 as well. The company on Thursday said its revenues rose 7% to $876 million compared to $819 million in 2005. New Sybase license revenue, an indicator of health for software companies, represented $327 million or 37% of the total. Earnings per share were up 11% to $1.03 versus $.92 in 2005. Net income increased 11% to $95 million compared to $86 million the year before, according to generally accepted accounting principles." - Infoweek, January 26, 2007 05:00 PM;jsessionid=I2A4RYTRWAIX4QSNDLRSKH0CJUNN2JVN?articleID=197001017&queryText=Sybase

Tom Kyte
April 29, 2007 - 9:01 am UTC

well, then again...

Sybase Q1 profit down, Q2 outlook weak; shares fall

April 26 (Reuters) - Business software provider Sybase Inc. (SY.N: Quote, Profile , Research) reported a 12.7 percent fall in quarterly profit and forecast second-quarter results below Wall Street expectations, sending its shares down over 5 percent.

quoting the Internet

A reader, April 30, 2007 - 5:25 am UTC

what about

A nice comparison between Oracle and the Others !

Understandable frustration, but that doesn't change the facts...

Duke Ganote, April 30, 2007 - 12:43 pm UTC

I understand the frustration of procedural programmers about DBMSs: Java is purportedly Write Once Run Anywhere (not that that is it is 100% so),_run_anywhere
But SQL isn't SQL everywhere; ANSI no longer certifies compliance with SQL standards, and no vendor offers a complete implementation of the standard.
Throw in the vendor variants on concurrency control, and -- well -- SQL doesn't look nearly as enticing as Java to the "I have to support multiple databases" teams.

So the 'correct' solution (have Java call stored procedures, and leave the SQL in the database) is very annoying to believers in the siren call of write-once-run-anywhere and database-independence. Yet those siren calls undoubtedly have shipwrecked many.

Latest Trends

T. Hussain, May 01, 2007 - 1:20 am UTC

I would like to take a one hour seminar on "latest trends in database" to my collegues. Kindly advise me the areas to concentrate. Also please let me know, if there is any white paper available.
Tom Kyte
May 01, 2007 - 9:53 am UTC

well, it would really be a matter of what you are interested in, there are virtually limitless topics in that area.


T. Hussain, May 02, 2007 - 9:28 am UTC

If you are asked 4 or 5 important developemnts in the past 1 year, what will be your answer?
Tom Kyte
May 02, 2007 - 5:03 pm UTC

it might be conditional compilation, full database transports, transparent data encryption, DML error logging, online tablespace transports.

The other side of the story

A reader, May 03, 2007 - 9:12 am UTC

Tom, from your link, I saw:
Revenue for the first quarter rose 18 percent to $230 million, boosted by a 17 percent rise in database license revenue.
You can find the same thing at:

So we can easily see the market for Sybase is growing.
Tom Kyte
May 03, 2007 - 10:26 pm UTC


the rdbms market grew

however, is their marketshare (of that market) growing by leaps and bounds....

No. It actually dropped

IDC states in its latest report, "Worldwide RDBMS 2006 Vendor Shares: Preliminary Results for the Top Five Vendors (March 2007, IDC #206061)," that Oracle's market share in 2006 jumped 14.7 percent over 2005 results and now stands at 44.4 percent, well ahead of competing products. The closest competitor holds 21.2 percent market share. Overall, the worldwide market for relational database management systems grew by 14.3 percent in 2006.

Another differentiator

Andrew, May 11, 2007 - 11:30 am UTC

full database transports and online tablespace transports

TH, May 15, 2007 - 6:18 am UTC

What is the difference between full database transports and online tablespace transports?
Tom Kyte
May 15, 2007 - 4:51 pm UTC

full database transport - take entire database, including system (something you never transported before) and transport it, sort of like "backup on platform A, restore to platform B", as long as platform a and b have the same byte order.

online tablespace transport - take a single tablespace - and without making it readonly, transport it to another database on any other platform, regardless of byte order.

Wonderful thread

Dinesh Velhal, June 28, 2007 - 8:47 am UTC

Recently came across this

In the PDF document on the page 2, it describes in 8 steps how Oracle achieves multi version read consistency. It mentions about cloning the block multiple times to get a time consistent image of the block causing un-necessary io.

Is it really the way Oracle implements MVRC?
Tom Kyte
July 02, 2007 - 10:26 am UTC

I love blanket statements like:

.. With Oracle,the data you see in any query is the data as it existed at the start of that query. This does not conform to any ANSI standard isolation level, nor is it the way other RDBMSs work. To accomplish this,each statement ...

that is an utter fabrication :) there *are* in fact other RDBMSs that do multiversioning (Oracle, RDB, Firebird, and either postgress or mysql do it - forget which, heck even sqlserver is trying to implement it in their current releases)

and it absolutely conforms to READ COMMITTED and fully supports the ANSI definition of SERIALIZABLE as well.

further they say:

So in essence,any statement that is trying to read a page that eitherhas been
updated oris currently in the process of being updated,must go to the
rollbacksegment to get an olderversion of the data so that it does not wait on
the updaters lock. It is true that a pure readerwill not wait on a writerbut it
is reading old,and possibly out of date data,performing additional I/O,filling
the bufferpool with non-reusable pages,and using up extra CPU intructions.
Even committed transactions are not seen by the readerif the reading
statement started before the updating statement.

the information is not out of date, by definition - it is the information that was requested (when you open the query, the result set is preordained, CONSISTENT (eg: correct). DB2 by default reads data as it hits it, giving you by design answers that never existed in the database at any point in time.

the additional IO is typically AGAINST THE BUFFER CACHE (eg: undo is cached just like any other bit of data).

the blocks - the cloned blocks - are fully reusable by any other transaction that needs them as of that point in time.

we use up extra cpu instructions (extra??) so you keep running. You cannot put CPU into the bank and save it for later can you?? So, why should a reader of data block, stop and wait - it is not like you are saving on anything (ok, well, maybe - just maybe your electricity bill will be lower with DB2 since the machines run so cool with everyone sleeping waiting for locks to be released - you obviously need less air conditioning with DB2)

Yes, this is more or less the way it works. If you have access to my book Expert Oracle Database Architecture, you'll get a full read on this - and how it compares to "other" approaches.

Thanks Tom!

Dinesh Velhal, July 03, 2007 - 12:47 am UTC

The other database which supports multiversioning is Postgres
Tom Kyte
July 03, 2007 - 10:31 am UTC

got it - i knew it was one of the two :)


vinh, July 04, 2007 - 9:03 am UTC

Hi all,
...and what is your point of view about teradata ?
Tom Kyte
July 05, 2007 - 12:51 pm UTC


give me proprietary hardware, software in a box and live with the restrictions (eg: thou shall be nothing other than a data warehouse with static partitioning and no trickle feeds (since writing to teradata sort of blows off the ability to read)...)

To Vinh

A reader, July 04, 2007 - 10:39 pm UTC

"What is your view of Teradata"

Teradata actually recommends that you use access locking to increase concurrency and it is used in pretty much every Teradata shop. Access locking is euphemism for "it is perfectly to read dirty data - just get me whatever is there at this point regardless of the locks and who is updating a piece of data"

I have actually heard people argue that Teradata has high concurrency because it uses and in fact encourages dirty reads. Yuck...

PostgreSQL - EnterpriseDB vs. Oracle

Martijn, August 06, 2007 - 10:04 am UTC

Hi Tom,

It seems that a relatively new player on the DB-market, EnterpriseDB, is aiming 100% at Oracle and their strategy starts to pay-off. Key features are costs, speed and "Oracle-compatibility", f.i allowing cst's to quickly change from DB.

How, from your point of view, does EnterpriseDB relate to Oracle? And PostgreSQL to (Oracle) SQL?
How will (or is) Oracle respond(ing) to this new player?

Thanks in advance for your inputs.


Tom Kyte
August 06, 2007 - 12:09 pm UTC

I've never touched it.



way beyond EnterpriseDB:

Martijn, August 06, 2007 - 12:28 pm UTC

EE = way beyond, could you please elaborate on that?

Do you think you'll gonna touch it (eventually)?

Because: You've compared already several other DB's vs. Oracle and always succeeded (well written ;),in an understandable way what makes Oracle the #1 DB (whether it's XE/SE/EE). And I expect it to be great stuff to read, given what's already been said in this post over almost 6 years already.

As always: many thanks in advance.


Tom Kyte
August 07, 2007 - 8:40 am UTC

look at the feature and option availability with EE (partitioning, parallel, ....)

way beyond "edb"

It has taken us 30 years to accomplish this feat - it might take others a while to catch up.

oracle vs teradata

Amir Riaz, August 07, 2007 - 3:08 am UTC

while evaluating oracle vs teradata for one of our client. i found the following claims in favour of teradata.

worlds largest data warehouse exists in teradata.

teradata can scan or query large tables with millions of rows far better than oracle why? nobody explains to me.

teradata is far mature than oracle in warehousing. oracle start warehousing seriously from oracle release 9

the partitioning which oracle claims will benefit warehousing in both administration and performance is infact rarely benefits in large table full scans. full scans are most used feature of teradata. however teradata has horizantal and vertical partitions

Teradata uses hash indexes or hashing algorithm for its index which is very good for MPP. in oracle there is no equalent to hash indexes.

some people says oracle has materialize view than teradata has join index.

oracle is good for only oltp comparing teradata and oracle is like comparing apple and oranges.

teradata has locking system has been designed for warehouse purposes in warehouse enviroments oracle multiversioning system can create problems

Specialized hardware is an additional advantage in teradata which is equal to oracle in all ways. Oracle lacks this capability. On a warehouse system oracle use on different os and hardware does not hold any wait.

Tom Kyte
August 07, 2007 - 12:44 pm UTC makes no mention of teradata... interesting isn't it?

Oracle started warehousing seriously with version 7.3 in 1995 when it started doing the terabyte test to scales. A TB sounds small today - but back then it was a million dollars worth of disk and you needed a raised floor computer room to hold them.

Partitioning does not improve the speed of full scans - this is true. UNLESS it can be used to do partition elimination at which point - duh - it does. No one ever said "use partitioning to make scanning 1 TB of data faster". You use partitioning to ease administration, to increase availability and sometimes as a tuning tool (partition elimination)

Oracle has horizontal and vertical partitioning as well - any RDBMS that doesn't have vertical (eg; also known as "just join").... well, it would not be an rdbms.

we have hash clusters, we have hash partitioning, we have hard partitioned indexes. You want to hash it, we do it.

we have join indexes AND materialized views - so what?

Oracle is not good for only OLTP (reference winter group again please)

In a warehouse, multiversioning does not really COUNT against us - no one is modifying the data!!!

However, in a warehouse, it actually permits us to LOAD (trickle feed for example) WHILE you query - something they cannot even consider.

You are right in some regards on the last point - in order to make teradata perform, you have to buy proprietary, non-open systems hardware from a sole source vendor, this is true.

oracle vs teradata....

AMIR RIAZ, August 07, 2007 - 5:55 am UTC

some other claims

the locking mechanism when oracle performing parallel DML is like teradata(surprised i thought it uses multiversioning). because during parallel DML oracle by pass cache and cannot use rollback segaments

Teradata is a parallel database system using a shared nothing approach from the very beginning, whereas Oracle just added some parallel options and even RAC is still using shared storage

These are pretty serious claims and anything you found in teradata you will found in oracle too and vice versa.I would like tom view on these.

amir riaz

Entertaining paper...

David, August 07, 2007 - 7:39 am UTC

Mark - LOL

I also had a read of that IBM paper. It's a little old but makes for some entertaining reading. I'd like to see whether the people that wrote it were able to keep a straight face.

I have never understood how IBM (and others) can make statements implying that multiversioning is a scalability inhibitor and returns "potentially stale" data, especially when compared to the downsides of their own implementations. There's understandable bias, but some of the arguments in this paper are laughable.

Personally, I think the fact that they have the potential to return results that never existed means that even if Oracle's implementation meant a 10x performance hit (well, at 10x I might have to reconsider ;-) ), I'd still prefer Oracle. It's common sense, the results are predictable and consistent. What's the good of a data store that gives nondeterministic results?

I also like how they imply that shared read locks (aka blocked/waiting readers) are much less likely to impact performance than use of undo/RBS for multiversioning.

I'd like to see whether this is still the IBM party line...I expect that it is...

sybase IQ versus oracle

paratincu, August 07, 2007 - 9:27 am UTC

I have tested Sybase and Oracle. Sybase is 6 time faster then Oracle in transactions.
Backup Sybase is very simple compared with Oracle backup and more performing using multiples stripes each stripe could be backup on different server.
Sybase work on all platform inclusive Aple. Sybase replication is more advanced then Oracle replication. Sybase IQ perform very complex queries in several second for witch Oracle consume days. Conclusion Sybase is by far better then Oracle and Sybase IQ humiliate ridicule Oracle.

Tom Kyte
August 07, 2007 - 2:02 pm UTC


sure it is - and we are 5.22152 times faster doing....

anytime I see "X is Y times faster than Z" I just have to laugh out loud at the sheer audacity...

thanks for the grin, it is truly from ear to ear.

Looks like marketing speak to me ...

cd, August 07, 2007 - 10:16 am UTC

@paratincu: You don't provide any test cases, hardware specs, etc. So far, my conclusion would be: You know your way in Sybase, but you've still got to learn a lot about Oracle (the DBMS).


A reader, August 07, 2007 - 1:04 pm UTC

paratincu reminded me of one our Sybase(ex) DBA who was yapping about it Sybase blah Sybase bleh, Oracle not good sucks. Once he learned Oracle he never looked back at Sybase and now we all have a good laugh whenever that subject comes up.

Sybase Vs. Oracle

Tim, August 07, 2007 - 1:12 pm UTC

Above someone stated "I have tested Sybase and Oracle"

I would love to see their test plan, hardward setup, database design document, replication setup and their overall comparison document.

"Conclusion Sybase is by far better then Oracle and Sybase IQ humiliate ridicule Oracle."

Unless you have the documentation to back that opinion up, then it is just that an opinion which like arm pits everyone has two and they both stink.


Sybase vs oracle

Arvind, August 07, 2007 - 1:42 pm UTC

Tom :
At the begining you wrote Syabse sold it to MS that's the wrong statement, Sybase still have it's database. It was a joint venture in SQL server 4.2c and MS departed from sybase taking the code and started MS 6.0.

Tim, the last post.
There are lot and lot documents which proves that sybase and ms sql are best in performance as compared to Oracle.
Besides it's common sense if you know sybase and oracle, oracle writes same transaction on 3-4 diff places, redo, undo, flash back and what not. Sybase is simple Transaction log.
No doubt Oracle has lot and lot nice features, some are even worth migrating too. But besides performance Oracle still did not manage to fix it Backup and Recovery issues.
I am currently working in both Oracle and Sybase and believe me have done so many recoveries and migrations, oracle takes days while sybase is matter of hours. Users were so much surprized at sybase migrations after oracle ones.
Like you guys have seen Sybase to Oracle Migration, I have seen more than 3 clients migrating from Oracle to Sybase and ofcouse bunch of clients getting sybase.

Once again, Not saying one is better then other but there is a market for both sybase and oracle. With Oracle RAC and other new features oracle will get bigger market no matter what.

Tom Kyte
August 07, 2007 - 2:19 pm UTC

Sybase sold the rights to their code to MS - that is not a wrong statement, they sold their code to MS and from there - it was all down hill for them....

MS 6 was not significantly different from Sybase - even today, they are not - syntax wise (t-sql and their sql dialects).

There are lot and lot documents which proves that sybase and ms sql are best in
performance as compared to Oracle....

where - please - point them out. I'd love to see that "proof" :)

You are funny with your simple transaction log - that is hillarious. They write undo and redo into their transaction log, we write undo into memory, redo into the redo log. Flash back - a feature they do not have - is entirely optional.

What is broken pray tell in backup and recovery???

If you are taking days to do a recovery in Oracle, we need to talk and get you up to speed - it just doesn't take that long - you are doing something fundamentally, horrifically *wrong*.

silly claims

Mark, August 07, 2007 - 1:55 pm UTC

Anytime anyone says database x is n times faster than database y (add "in transactions" if you like), they're full of it. It strongly suggests they did something like: create a million row table in database x and y, delete all the rows in both, and compare the times. Usually the tester configures their favorite database - with which they are experienced - pretty well, and "the leading brand" they're testing against is an out of the box configuration, possibly not even running on the right hardware.

I could expand on this but what's the point?

A reader, August 07, 2007 - 4:39 pm UTC

Most of the Sybase guys who come here get humiliated with all their false claims and incomplete knowledge hope so there are people out there like Tom and others who can point them to the right direction.

A reader, August 07, 2007 - 6:37 pm UTC

>>I am currently working in both Oracle and Sybase and believe me have done so many recoveries and
>>migrations, oracle takes days while sybase is matter of hours

You got to be kidding me! Recently one of our developer deleted couple of thousand records from the table and we were informed after an hour.

Guess what for recovery one simple command(flashback - as of) and we were able to retrieve all the records in less than a minute. Now you tell me how is that not far better/easier than other databases.


AMIR, August 08, 2007 - 5:42 am UTC

Hi tom

Nice replies especially the partitioning section makes perfect sense. Now things started to make sense to our clients too they were suffering from teradata fobia previously.

Tom can you please comments on these remarks
"Teradata is a parallel database system using a shared nothing approach from the very beginning,
whereas Oracle just added some parallel options and even RAC is still using shared storage"

i have failed to understand how a shared nothing architect is better than shared architect like RAC. How teradata implements shared nothing architect.

Your best views needed

Amir Riaz
Tom Kyte
August 14, 2007 - 9:53 am UTC

You and I are in agreement with:

i have failed to understand how a shared nothing architect is better than
shared architect like RAC. How teradata implements shared nothing architect.

I too fail to see how a design defect is turned into an advantage in their marketecture.

Ask teradata "so, what happens when we add a new node to this shared nothing situation - oh, you mean we have to rebuild the entire database? That is not cool"

difference between RDBMS and DBMS

Oracle novice, August 09, 2007 - 11:36 am UTC

Could you please tell me the difference between the RDBMS and DBMS systems? To be frank, I have not used any DBMS software so far.

Please forgive me, if this query is not relevant to this thread.

Thanks heaps always

Yes you are saying all this on your own website

Reader, August 09, 2007 - 12:37 pm UTC

Come out of your cage and see what's world is saying about oracle's performance. Recovery is horrible.

To the reader from uk

cd, August 10, 2007 - 5:15 am UTC

Care to provide some links and examples?


Shared nothing and shared storage

lds, August 10, 2007 - 9:36 am UTC

Theoretically, a "shared nothing" architecure could scale better than a "shared storage" architecture because there is less overhead to coordinate the cluster nodes, especially in read-only situations.
But this comes at a price: or each node has its own copy of the data (impossibile for very large DBs, and tricky to insert/update, changes must be propagated, until that a node could return the "wrong" answer), or data must be partitioned and each node "owns" one or more partitions, and that could lead to "hot spots" if requests can't be evenly distributed, and "single point of failures", if a node dies that partition is no longer available until another node takes ownership of that partition and gets a copy of the data.
Also, "shared nothing" architectures are usually easier to design and implement.
AFAIK the "shared storage" architecture of RAC is a design choice to allow *any* node access and modify *any* data. It allows for better load balancing and parallelization without requiring multiple copies of the data, handles read/write scenarios better, and as long as at least one node is active all data are available - just performance degrades.
Storage fault tolerance can be achieved using the proper hardware, and DataGuard.
Of course the need to keep all nodes in synch adds some overhead, but I prefer to pay this price if that means that all of my data are always available and up-to-date, no matter how many nodes may have failed.

great here is what is find in teradata

AMIR RIAZ, August 10, 2007 - 10:06 am UTC


here is what teradata documents about their MPP system and it looks to me like a RAC.

"The clique is a feature of some MPP systems that physically groups nodes together by multiported access to common disk array units. Inter-node disk array connections are made using FibreChannel (FC) buses.FC paths enable redundancy to ensure that loss of a processor node or disk controller does notlimit data availability.The nodes do not share data. They only share access to the disk arrays. The following figure illustrates a four-node standard clique"

so teradata does uses shared nothing architect another cheap trick by the marketing guys but i would like to know
difference between clique and RAC

lds, August 10, 2007 - 11:23 am UTC

The answer is here (, page 5): "Each AMP owns a portion of the database."
That does not happens in RAC. If n users have to access the same database "portion", each node in the cluster can serve them, not just the "owner".
Also, parallelization is not always the "silver bullet". It may be DW, where few users access many data, but in OLTP where many user access few data, you want available resources to be load balanced among users, and avoid any "serialization" due to conflicting accesses to any data "owned" by a single resource.

A reader, August 10, 2007 - 5:02 pm UTC

>>Come out of your cage and see what's world is saying about oracle's performance. Recovery is horrible.


And which world are you from "Reader from UK"?

going with oracle.

AMIR RIAZ, August 11, 2007 - 2:50 am UTC

our client has decided to use oracle. Reasons

oracle matches toe to toe with teradata. in some cases better than teradata.
previous experience with oracle standard edition + Linux was wonderful

But i must say the research oracle vs teradata has proved very knowledgable for me. Now i gave Teradata as much respect as oracle.

thanks for all the people who contributed in discussion

Amir Riaz

read and write performance

Paul, October 03, 2007 - 4:19 pm UTC

A real world test shows that read and write really do affect each other in Oracle. I have a table with 30 columns and 500k rows. I do a simple count(*) and it takes 5 or so seconds. I start SQL*Plus and do an insert into the table from itself thereby doubling the data. In another session I do a count(*) and 3 minutes later it is still going! Can't see how it can not affect the speed.
This is on the 10g XE database. Would moving the data and indexes to different tablespaces help bearing in mind the disk would be the same?
Trying to see if Oracle can offer some quick wins here but XE does not seem to come with Enterprise Manager which we have been told will help point out bottlenecks?

Oracle backup&recovery suck

John, October 11, 2007 - 9:30 pm UTC

I am a pure SQL Server DBA, I came to this thread just by chance.
I don't know Oracle/DB2/Sybase at all, but I do know Oracle needs to improve its backup&recovery procedures (strategies, mechanism...whatever you call).
We had our annual BCP test last weekend, all the primary production nodes went down and there were 4 hours time window for DBAs to prepare the BRP databases (Oracle/Sybase/SQL Server). We have more applications running on Sybase with less DBAs.
Two hours later, SQL Server/Sybase DBAs were having coffee and enjoying their time. Unfortunately, Oracle DBAs were busy to death and couldn't finish everything within the time window.
It also took Oracle DBAs much much longer to restore the BRP nodes after the test.
What's going on? Dear Oracle DBAs? (I dare not ask this question in my team )
Tom Kyte
October 14, 2007 - 9:32 pm UTC

we cannot comment as you didn't tell us what they were doing, or how they were doing it.

All I know is Oracle cannot compete in a BCP test, since - well, BCP is Sybase's "let us dump your inconsistent set of data to flat files" (no point in time query....)

I can say backing up an Oracle database can be as easy as:

RMAN> backup database;

we need NO downtime for this at all - and we can drink lots of coffee, tea, or whatever else floats your particular boat.

A reader, October 15, 2007 - 3:29 pm UTC

To John from NY,
>>I don't know Oracle/DB2/Sybase at all, but I do know Oracle needs to improve its backup&recovery

Hahaha..So you don't know but you know? WOW!

It all matters how much knowledge the DBA has as that will gain or loose customer confidence. In fact you should be asking your DBA's what the heck was going on or time for new DBAs :-)

Tom doesn't know BCP?

John, October 15, 2007 - 4:37 pm UTC


It seems you're not aware of BCP, which means Business Continuity Procedure.
BCP test is a critical annual test for financial companies after 9.11
Please make sure you understand the question before answering.


BCP is also Bulk Copy Program...

Maurício, October 16, 2007 - 9:29 am UTC

John, you also need to better explain what your "BCP" is because if you ask any SQL Server guy, he will tell you that BCP is the utility from SQL Server which exports data...
You cannot attack Oracle without telling us what were the procedures to backup and restore in both databases, we need some concrete facts to only then, make a judgment.

Re: Tom doesn't know BCP?

David Weigel, October 16, 2007 - 10:52 am UTC

Umm, John from NY, if you Google "Business Continuity Procedure", you'll find only 253 hits, most of which are about other things. Like the previous commenter, I thought you meant "bulk copy program" (18,800 hits). Or maybe you mean "Business continuity planning", which has 927,000 hits. It's a little rich to assume that someone else should be able to read your mind when you're abbreviating a term that, in this context, is really unlikely to mean to anyone else what it means to you.

I, too, would be interested in knowing how the tests for these were carried out, and how they differed among the tested databases.

John From NY

SeánMacGC, October 19, 2007 - 5:46 am UTC

Please consider this:

1) In a SQL Server 2000 environment, where I had two windows open, with two identical queries to the same database, on data that I was not modifying, I got DIFFERENT results! Yes, same query, different data back.

2) On running a grouping query, again on the same SQL Server 2000 database, on data that I was not modifying, I received a result set where the total of the individual grouping columns' amounts, DID NOT EQUAL THE OVERALL TOTAL AMOUNTS FOR THOSE SAME COLUMNS, i.e., the WRONG data.

I'm fully aware of how 'easy' it is to backup and 'restore' a SQL Server database (I've done it), but please forgive me if I count that for zilch if I cannot trust the data I get from that database. After all, what does it matter what's restored if the data cannot be trusted in the first instance. RMAN used wisely is a cake-walk, and I've NEVER had the wrong results back from an Oracle database.

To SeánMacGC from Ireland

John, November 01, 2007 - 3:48 pm UTC

You must be kidding, how can our NYSE survive?
MS did a stupid thing, it didn't buy Unix code base from Sybase in 1994, otherwise ....

Oracle v/s Teradata

Chinmay, November 01, 2007 - 6:54 pm UTC

Very informative post indeed...! Rightly said- every DB has its own set of strengths & USP. I feel Oracle does a remarkable job at Backup & Recovery as against other existing DBs.

I particularly found the comparison between Oracle & Teradata pretty useful since we were evaluating "Teradata" as the DB for 2008.

To John from NY

A reader, November 04, 2007 - 6:22 pm UTC

Nope, no kidding at all, and that's the REALLY SCARY aspect of SQL Server -- bad data, and all on Windoze, no Unix in sight!

MVCC -- great feature

James, November 19, 2007 - 5:03 pm UTC

Thanks Tom,
MVCC, read consistence, non-blocking reads are great features from Oracle. Some other databases have the same features now. I have two questions about them:
1) How many times/places Oracle needs to log one transaction?
2) Will they affect the transaction processing performance?

Tom Kyte
November 20, 2007 - 1:15 pm UTC

Sqlservers "multiversioning" is done way different - versions of rows in tables - you need to ask them the same questions :)

1) only place stores logs of transactions, the redo logs

2) sure, in a positive fashion - your queries never stop querying - your transactions never stop transacting. Very nice.

Netezza database

JAM, November 20, 2007 - 4:55 pm UTC


What do you think about a company called Netezza and their database offering for a data warehouse?

I briefly worked on it but wasn't very impresses. Properietary everything. Even though their disks are redundant, the advised us to expect to have to replace a disk every month.

Performance wise, do you think their approach to processing data at the lowest level (memory and cpu power at the drive level) has any merit.

Tom Kyte
November 21, 2007 - 11:35 am UTC

There is something to be said for having tested, thought out configurations.

I do not see the problem with "they told us to expect to replace a disk" - disk's fail, fast, constantly. If you have lots of them, replacing a disk per month/week/day is a fact of life, regardless of who you buy them from.

oracle vs teradata

jayson, November 21, 2007 - 7:10 am UTC

The above posts of Oracle vs teradata are really informative. i think its just teradata's good marketing like microsoft that these databases are in the market. but i think teradata's biggest strength is its especialized harware

Tom, you're against yourself.

A reader, November 25, 2007 - 11:06 pm UTC

Tom, your answer to the following question is wrong
Q: How many times/places Oracle needs to log one transaction?
A: only place stores logs of transactions, the redo logs

Based on your book EOOOO (page 35):
Whenever you modify data, Oracle creates entries in two different locations. One entry goes to the redo logs where Oracle stores enough information to redo or 'roll forward' the transaction. The other entry is an undo entry, written to a rollback segment... That's why DB2/Sybase enthusiasts always say Oracle's transaction processing is slower.
I have another question: If we enable 'flashback', will Oracle create entry in third place?
By the way, PostgreSQL also provides MVCC, not just Oracle and SQL Server.
Tom Kyte
November 26, 2007 - 1:02 pm UTC

but the only place it logs the transaction is the redo log. the redo LOG. it is not an undo log, there is only a redo log. That is where the log of the transaction goes.

I see no conflict here.

And if it were slower, they would best us every time in real life - or even fake like like the TPC-C.

But they do not.

The fact that DB2/Sybase use their 'redo area' for rollback and redo is a performance problem for them. It SLOWS THEM down. It is not a performance boost.

They manage their redo in a "heap". Not in a circular buffer (we use circular buffers, trivial to manage). Not only that but this 'heap' of theirs is actively READ and WRITTEN to constantly. Read from to rollback. Written to to commit. Hence they tend to thrash themselves on this resource.

Additionally - since we store undo in an undo segment, we can use it - ask yourself "how many rows per second does db2/sybase process when it encounters locked data". Then, ask the same of Oracle.

Which one is correct? Your book or your answer here?

A reader, November 26, 2007 - 3:27 pm UTC

Thanks for your answer, Tom,
So the statement from your book Expert One-On-One Oracle must be wrong, right?

Tom Kyte
November 27, 2007 - 3:01 pm UTC

umm, no - not really. I see no conflict

Oracle Vs Sqlserver

A reader, November 26, 2007 - 4:31 pm UTC

That shows only till 2005.

Guess the gap is reducing with the introduction of sqlserver 2005 and SSIS

A reader, November 26, 2007 - 8:52 pm UTC


Often hear from Db2 and Informix folks hot-hot setup is much more advanced less administration & maintenance overhead as compared to Oracle and much more stable, can you please shed some light on that as well .

Tom Kyte
November 27, 2007 - 3:15 pm UTC

and what is their definition of "hot hot"

To: A reader from NY

Gabe, November 27, 2007 - 12:49 am UTC

Tom, your answer to the following question is wrong
Q: How many times/places Oracle needs to log one transaction?
A: only place stores logs of transactions, the redo logs

Based on your book EOOOO (page 35):
Whenever you modify data, Oracle creates entries in two different locations ...

Not sure why you equate transaction with data modification. An INSERT statement is data modification but it is not necessarily a transaction in itself, part of a transaction sure.

So ... a transaction is logged to the redo ... and a data modification results in both redo (since it is part of a transaction) and undo (for multi-versioning) entries.

Now, your critique is not totally without merit ...

So the statement from your book Expert One-On-One Oracle must be wrong, right?

The statement itself wasn't wrong. But, taken in context, it was open to interpretation (said more than it was really needed). You'll find that Tom's latest book clarified that particular paragraph (page 25).

oracle is good but not easy and no direct answers for most common problems

renee, November 27, 2007 - 4:40 am UTC

I have been using oracle since 10 yrs and i have observed few things - first yes it has lots and lot of features and it always brings a new release with more features like oracle 11g has so many good things about partitioning - but at the end of the day - i am not sure why there is so much of lack of knowledge on basic things -

one problem which i have been facing since quite sometime is in my environment - the explain plan of most of the porblematic queries do not matches with the row source operation of TKPROF and cardinalities shows huge difference - i tried to ask around read books,this site,Jonhath's site,and so many papers - but so far I got 2 answers - one is limitations of optimizer as mentioned and well explained at this site

and many other places in one way or other.

the other reason they say rightly that poor stats on the table..but no one seems to bother to answer the right things such

1. tell us how to collect a good or perfect stats..
2. what are the other reasons....

if i ask anywhere - i will be told that this will be a could be a book -but where is that book :)

i read Jonathan Lewis book - there will be 2 more parts of that - by that time oracle will bring 2 more releases ppl will get busy with catching up the new features which thier managers want to use..and so on.

oh ..i guess to use oracle we have to be more intelligent a mere enginerring degree does not help!


To Gabe

A reader, November 27, 2007 - 2:52 pm UTC

"An INSERT statement is data modification but it is not necessarily a transaction in itself, part of a transaction sure."
>>> Are you sure INSERT itself is not a transaction? If you just log in using sql/plus and run an insert statement then exit, didn't you just finish one transaction?

"a transaction is logged to the redo ... and a data modification results in both redo (since it is part of a transaction) and undo (for multi-versioning) entries. "
>>> You are snapping your own face!! Above you mentioned 'INSERT' is 'part of a transaction sure'. Here you said an 'INSERT' results in both redo and undo, why the heck the whole part (transaction) is logged to the redo only?

Tom Kyte
November 27, 2007 - 4:12 pm UTC

... Are you sure INSERT itself is not a transaction? If you just log in using
sql/plus and run an insert statement then exit, didn't you just finish one
transaction? ...

only because, as documented, sqlplus issues COMMIT; upon you exiting. So, there was an implicit commit performed by the environment (not the database)

and so what if you have a transaction that consists of a single insert - it is not NECESSARILY the transaction in itself.

and what if your insert fired a trigger that runs a procedure that updates 50 tables....

redo logs are the transaction logs. Period.

about snapping faces

Gabe, November 27, 2007 - 4:31 pm UTC

"An INSERT statement is data modification but it is not necessarily a transaction in itself, part
of a transaction sure."
>>> Are you sure INSERT itself is not a transaction? If you just log in using sql/plus and run an insert statement then exit, didn't you just finish one transaction?

Yes, the transaction is completed. And your point is?
If you want to prove my statement wrong (assuming you understand what "not necessarily" implies) then you would have to show that all INSERT statements, by themselves, constitute transactions. And obviously this sequence of steps - INSERT, UPDATE, COMMIT - would be a particular case where that wouldn't be true. So, I maintain my position that using transaction and data modification interchangeably is incorrect ... specifically here where you took 2 statements, from 2 different contexts, one about transactions and the other about data modifications and tried to show a contradiction.

"a transaction is logged to the redo ... and a data modification results in both redo (since it is part of a transaction) and undo (for multi-versioning) entries. "
>>> You are snapping your own face!! Above you mentioned 'INSERT' is 'part of a transaction sure'. Here you said an 'INSERT' results in both redo and undo, why the heck the whole part (transaction) is logged to the redo only?

I'm not snapping any face.

a transaction is logged to the redo ... that is TRUE.

a data modification results in both redo (since it is part of a transaction) and undo (for multi-versioning) entries. ... that is TRUE as well.

The point was that both statements are true ... where is the confusion? But work through this example of a transaction:

Step 1: INSERT
Step 3: UPDATE
Step 4: COMMIT

Steps 1 and 3 are data modifications ... step 2 is not data modification ... but all these steps result in entries in the redo. That would be like writing a journal (logging): I did this, then that, then that. Hence, a transaction is logged to the redo ... as in, all its parts - data modifications steps or otherwise - are recorded to the redo.

Now, data modifications are done within transactions, and hence there will be entries to the redo to record the fact that they happened. But as far as how are they implemented to allow for multi-versioning ... well, that would be through undo entries. An undo entry (a copy of the block prior to being modified) is totally different than a redo entry (to oversimplify, a line in a file saying an update took place here in this sequence ... just like the steps I listed above). Totally different things.

To Gabe

A reader, November 29, 2007 - 3:17 pm UTC

Please don't try to explain too much, let's make it simple:
Oracle provides MVCC by creating mutiple entries when you modify data;
DB2/Sybase doesn't provide MVCC because they only create single entry when you modify data.
Tom Kyte
November 29, 2007 - 7:19 pm UTC

no, they do not because they chose not to - it is not efficient they way they did it.

they store UNDO and REDO together, in a heap.
that makes the option of providing mutliversioning, non-blocking queries hugely expensive for them.

but not for us.

we create undo and redo
they create undo and redo

we keep our undo in a special place, organized so it can be used readily.
they do not.

MVCC impact?

A reader, December 13, 2007 - 3:49 pm UTC


Please comment on the following stuff:
Oracle keeps 'before image' available, allowing dirty reads. Nice to have that dirty read available, but the overhead with the redo log really puts the damper on update performance
Tom Kyte
December 14, 2007 - 12:29 pm UTC

Umm, Oracle *never* permits dirty reads - we use multi-versioning in order to never have to resort to a dirty read in order to have concurrent queries and modifications.

Other databases permit a "dirty read" simply because they lock up otherwise. They have no way to give you consistent correct answers to queries while supporting modifications at the same time.

Oracle does not permit dirty read, anyone that said they do - and that multi-versioning is there to permit a dirty read does not understand what they are talking about.

And as far as I know, pretty much all of the databases keep a 'before image' around - well, as least the ones that support the concept of "rollback" and statement level atomicity...

And - as far as I know, pretty much all of them have redo in some form or another.

And if update performance were so poor, well, I guess it would show up in industry audited benchmarking where we would be dead last - oh wait, it doesn't actually show that...

A modification generates undo, the undo is stored in the buffer cache just like any other data block. Modifications to data blocks are recorded in the redo logs (just like any other database). The undo you generate might never ever hit the disk (it is in the cache, in memory). The undo you generate allows the other guys processing queries to continue doing so without getting locked up.

why oracle

A reader, January 09, 2008 - 12:45 pm UTC


How would you answer a question to a customer on why to use ORacle instead of an Open source database.

Customer already has ORacle Enterprise 9i server and hundreds of stored procdeures and many applications.

If customer is thinking of something free like MySQL what would be the biggest issues here: cost, support, etc.

DO you have a article on this or reference.

Personally I would pay 30K for a server license and has the best of breed in databases instead of something free and then pay millions to convert applications (if conversion ever works).

Tom Kyte
January 10, 2008 - 2:09 pm UTC

I can speak volumes of fud, but I don't like to.

In order to answer the question of "A or B", one needs to know the requirements - what is the customers HOT SPOT.

Many times a sales person will come to me and ask me to convince their customer to go Oracle. If they cannot describe to me this customer in detail - what their needs are, what their goals are - I politely refuse.

For you see, I could literally talk for a week about Oracle's capabilities - and yet say nothing of relevance to that group (what would rock their boat would be in week two - I just never got there).

Is high availability key for this customer? Then we need to talk about the scores of online features (online index create, build, table reorgs, resource manager to prevent a single user from mounting a denial of service attack with a runaway query), the ability to cluster if you want and the years and years of development that went into data guard - and what you can do with data guard beyond just using it for failover.

If high availability is not a hot point for them - I'd have wasted a good 2-3 hours of talk time.

By the way - we support MySQL - in fact we own the transactional engine inno-db that you sort of need for commit and rollback to work.

And to move from 9i Enterprise Edition to a database that just recently got subqueries

That might take some amount of work - since you would be reinventing the proverbial wheel (ok, there goes the fud factor... )

The ROI Mirage

SeánMacGC, January 11, 2008 - 10:58 am UTC

Interesting discussion.

Database Management Systems (DBMS) other than Oracle may appear to deliver a greater Return On Investment (ROI) on the face of it, but, there is potentially a huge cost:

* Rather primitive and rudimentary DBMS SQL languages, such as T-SQL, can easily add an order of magnitude to development times, and the costs associated with that (I speak from experience): no proper LOOP constructs resulting in many blocks of repeated code, which differ only in a very minor way, no file handling, no BULK processing, no Analytical SQL, few built-in packages, weak cursor support, limited dynamic SQL, etc.
* Restrictions in relation to the chosen OS
* Restrictions in relation to the chosen hardware
* Less advanced data loading/processing

I think in a nutshell, Oracle will perform as well or better than any other DBMS, and the DBMS tools are without equal, but there are more variables involved, and it is these variables that deliver the versatility of Oracle across different platforms and operational environments (OLTP, DSS, etc.). That means of course there's more expertise involved, and it seems to me that that's where there are massive general failings, where implementation and design are all wrong, which of course is going to lead to woeful performance. Unfortunately, the general levels of ignorance are quite astonishing, of even the most basic sound design techniques, for example, where tables are partitioned but implemented in such a way that Oracle cannot partition-prune, at least not without being psychic (see that so often), or surrogate keys (on immutable data) where they're totally surplus to requirements (but there because someone read it in a book somewhere!), etc.

So, of course, when Teradata (or whomsoever) is brought in to set up their system, over which they have complete control, even down to schema design, it will appear to be light-years faster than Oracle. But then, if only they'd had people who knew what they were doing with Oracle in the first place they'd have had no need to shell out gazillions on an unnecessary replacement.


A reader, January 11, 2008 - 9:31 pm UTC


1. The mySQL Enterprise is not free. It is about 40K per year for unlimited number of years. For some reason I thought Oracle license was one time fee. is it yearly thing?

2. DO you agree with Oreilly on his comments about open source?

3. It seems strage to me that Oracle would support another competitor like Mysql. The acquisition of Innobase seems to be a step toward overtaking or controlling the MySQL product just like PeopleSOft and Siebel.
Tom Kyte
January 14, 2008 - 3:19 pm UTC

1) you buy oracle once, support is an ongoing thing.

2) at a quick glance, he seems to equate "open source" with "free" - eg:

Myth #8. There's No Money to be Made on Free Software.

Myth #9. The Open Source movement isn't sustainable, since people will stop developing free software once they see others making lots of money from their efforts.

open source is a development methodology.
open source is not "for free"

adobe reader - for free, not open source.
red hat enterprise - open source, not free
oracle xe - for free, not open source.
mysql enterprise - open source, not free

the two things (development methodology and cost) are orthogonal concepts.

that article is quite old, open source communities are so different today than they were almost a decade ago.

3) define what you mean by "just like peoplesoft and siebe"?!?!?

As a capitalist company, with shareholders and a stake in the market - we, as all companies do, acquire that which we need to grow from time to time. Peoplesoft will continue, Siebel continues - not really sure what you meant there. You make it sound "bad", like it must be viewed evil. But it isn't. Remember Informix and their family of database products? They got adopted - they still exist. How about RDB?

A reader, January 12, 2008 - 5:57 pm UTC


is it true that 90% of Fortune 100 use oracle database? Is there any studies or links to show that.

I know that oracle has 50% of the unix databse market but not sure of the above.

Tom Kyte
January 14, 2008 - 3:29 pm UTC

it is probably true that 100% of them use oracle.
and X
and Y
and Z

you get to be a fortune 100 by being rather large. Most companies tend to use a bit of everything. I'd bet most

o use Mac and Windows and Linux and Solaris
o sqlserver, db2, and oracle
o powerpoint and keynote
o etc....

google this

90% of fortune 100 use oracle


A reader, January 24, 2008 - 11:19 pm UTC


Did oracle meet all tests for being a relational database. is there any studies to support that?

My understanding is that MySQL is not fully relational DB.

I am surprised that Sun bought MySQL last week instead of Oracle.
Tom Kyte
January 25, 2008 - 8:45 am UTC

Oracle was written about the same time those papers describing such a thing were being written.

There is no such thing as a fully "we are academically relational to the core supporting all of the theories of the abstract thing called a relational database". When it made sense, we did practical over theoretical.

every commercial (successful) RDBMS out there fails Codd's rule 0's_12_rules

Relational Databases

SeánMacGC, January 25, 2008 - 9:26 am UTC

A great pity that no commercial database vendor bit the bullet and designed a truly relational database management system from the off, i.e., without NULLs and with duplicate tuples strictly prohibited, at a minimum.
Tom Kyte
January 25, 2008 - 10:38 am UTC


NULLS in fact are one of the RULES OF THE GAME

Rule 3: Systematic treatment of null values:

The DBMS must allow each field to remain null (or empty). Specifically, it must support a representation of "missing information and inapplicable information" that is systematic, distinct from all regular values (for example, "distinct from zero or any other number," in the case of numeric values), and independent of data type. It is also implied that such representations must be manipulated by the DBMS in a systematic way.

And technically....

Rule 2: The guaranteed access rule:

All data must be accessible with no ambiguity. This rule is essentially a restatement of the fundamental requirement for primary keys. It says that every individual scalar value in the database must be logically addressable by specifying the name of the containing table, the name of the containing column and the primary key value of the containing row.

ROWID does that, nothing says "and the primary key must be specified by the person doing the create table".

Fact is there is "that which is practicable and usuable, of immediate value" and that which sounds excellent on paper.

Optimised warehouse link

A reader, January 25, 2008 - 11:02 am UTC


This thread is great friday afternoon reading.

I clicked on the URL for the optimised warehouse. It takes frustrating minutes for the oracle website to respond. I am referring to

Is there a quite time when I could access the Oracle website?

Tom Kyte
January 25, 2008 - 11:15 am UTC

I have a feeling you and I are redirected to different locations - you appear to be in the UK, in the US on the east coast, that page and others were quite snappy (at the same time you were looking, right now)

Relational Databases

SeánMacGC, January 25, 2008 - 11:17 am UTC

Despite Codd having embraced multi-valued logic, NULLs are, in fact, a violation of Codd's own Information Principle, and Relational Theory involves only two-valued logic (with good reason): I have, as you will have Tom, seen a myriad of data errors, due to the mishandling of NULLs, and we can be 100% assured that somewhere, right now, someone is getting the wrong results back from a query due to the existence of NULLs.

Logical modelling should be such that 'inapplicable values' (one of the two usual purposes of NULLs) should not be accommodated (higher normal forms), and 'unknown values' can be handled in other ways. Not trivial considerations, but given the very significant benefits, very desirable.

Relational Databases

Phil Singer, January 25, 2008 - 10:49 pm UTC

How I wish Lex de Haan were still with us! He was one of the few people who could comment on this matter (Nulls) and be respected by all sides. As I have made a minor hobby of trying to figure out what all the flamewar was about, I will venture to make a few remarks (in the hopes of saving others some work).

Dr. Codd came up with the idea of an RDBMS back in the late 60's. As Tom pointed out, one of the essential attributes he gave an RDBMS was the "systematic handling of missing data". The SQL Null was created to support this. Some others who worked with him (the names Date, Darwen, and Pascal are most prominent) took the view that the relational algebra they developed in support of Codd's idea was most important, and, since they could not see any easy way to reconcile Nulls with the precepts of their theory, Nulls had to be rejected. Look up "relational model" in Wikipedia for more on this (the article does a good job of summarizing Date's position).

The whole debate is more of a religious war than a scientific debate, with anyone daring to suggest an opposite point of view being attacked, with facts when available and ad-hominem arguments otherwise.

To give a (more) concrete example: Suppose you have a 6 column table (relvar) with one unique key, which is a composite key using two of the columns. Three of the columns can support a Not Null constraint, but the sixth cannot. Try as you might, you just cannot eliminate the potential for missing information there. What are you supposed to do?

The answer is that you are supposed to decompose your table into 4 base tables. Each table has three columns: the original key columns and one of the original 4 non-key columns. The table with the original nullable column not has Not Null constraints on all columns, and the missing information shows up as not having a row in the table (call it table 6).

Of course, what your application really needs is the original table. So, you create a view, joining all four tables back together. Except, to get something like the original table back, you would have to do an Outer Join, which Darwen does not allow). So, instead of an Outer Join, you do an Inner Join with a Union which adds back the rows which are not in Table 6. But, since you can't Null that column, you include in the result set some value which indicates that it was a missing value from Table 6.

Now the problem is what to make this missing value. If you are lucky, you can just substitute the string "--Missing--". Then of course, when you query against the view, you may have to write predicates of the form:

AND COLUMN_6 = '--Missing--'

But with my luck, column 6 will turn out to be a numeric column. This is supposed to show up one of SQL's problems: it does not support a domain (type) consisting of the natural numbers and '--Missing--'.

While all of this has a certain elegance, I am not convinced that it is a better account than what can be done with SQL and Nulls.

why 4?

nameless, January 26, 2008 - 12:01 am UTC

The answer is that you are supposed to decompose your table into 4 base tables.

You probably meant 2.

Phil Singer from Beautiful Downtown Brighton

SeánMacGC, January 28, 2008 - 3:14 pm UTC

Yes, as I said not trivial, however, every caveat that I've heard from Date, Darwen, Pascal, et al., in relation to NULLs in an RDBMS has come to pass -- there are very real issues there in the handling of NULLs, and to compound matters, there is no absolute consistency across DBMS vendors.

Regarding your example, why can't you, for example, when you create your view, include an extra VARCHAR column as part of the view definition, which would indicate whether the zero (that you are defaulting the value to if it doesn't exist already) in the numeric field you refer to is there because no value is applicable, or no value was supplied, or no value is known, or is an actual value. This would all be made somewhat easier were the DBMS able to support the whole realm of missing data at that particular level; big area, but not insuperable.

Why 4?

Phil Singer, January 28, 2008 - 10:28 pm UTC

The answer is that you are supposed to decompose your table into 4 base tables.

You probably meant 2.

No, I meant 4 (although I suspect (hope) that Date would allow for 2). The idea is that ideally every table should be decomposed into 6th Normal Form.

And I was trying to be as extreme as possible <g>

Nothing More to Say

Phil Singer, January 28, 2008 - 10:44 pm UTC

Yes, as I said not trivial, however, every caveat that I've heard from Date, Darwen, Pascal, et al., in relation to NULLs in an RDBMS has come to pass -- there are very real issues there in the handling of NULLs, and to compound matters, there is no absolute consistency across DBMS vendors.

You don't need nulls to introduce inconsistency across DBMS vendors. Oracle has


SQL Server has


If you can't get vendors to agree on the importance of the FROM clause ....

I agree that there are problems with Nulls. Maybe Oracle should do something to make it harder to define a column as nullable. Someday I'm going to write a long article on everything which can go wrong when nulls are used.


There are problems with the solution you sketched out. The major one is that the optimizer cannot distinguish between a value used as placeholder for a missing value, and a real value (Tom has a current thread where someone was using 999999 for a missing date - and having problems as a result). There is no silver bullet for the problem of missing data, but Nulls a generally applicable approach, which is reasonably well understood, and usually does what you want it to do.

Fatally flawed Argument

SeánMacGC, January 29, 2008 - 4:25 am UTC

You don't need nulls to introduce inconsistency across DBMS vendors. Oracle has...

You're referring to a minor vendor-specific DBMS difference here, nothing more, and not that much to worry about.

Completely different to how the Relational Model , or integral component parts thereof, is/are adhered to, or not, across vendors. And let's not get bogged down on what each vendor does, suffice it to say that there are inconsistencies, and let's just stick to the main issue please (there's more than enough in that).

You mention the optimizer: this is part of the problem historically, you're muddling up the physical with the logical. Get the logical right (totally devoid of any physical considerations), and the physical, under the covers, can be brought into line.

You speak as though NULLs weren't an actual problem, today, now, and the reality is very different.

One more, last thing

SeánMacGC, January 29, 2008 - 11:05 am UTC

There are problems with the solution you sketched out. The major one is that the optimizer cannot distinguish between a value used as placeholder for a missing value, and a real value...

We will not be storing missing data, period. The missing values that we're supplying substitutes for are by dint of the view, which is nothing more than a (stored) query in itself. Therefore, the base data, per se, are not affected, and therefore, there are no (negative) ramifications for query optimization.

And no one's saying here that we'll reach perfection, just the least fraught approach, that's the goal.

flavorful NULL arguments

Duke Ganote, March 01, 2008 - 6:39 pm UTC

I feel about the NULL arguments like I do the variant ("is an empty string the same as NULL ?"). Yuck!

Or HL7's "null flavors" (see ) which are described thusly:

NI NoInformation (default exceptional value.)
ASKU Asked but unknown (e.g., patient was asked but didn't know)
NA Not applicable (e.g., last menstrual period for a male.)
NASK Not asked
NAV Temporarily unavailable
NINF Negative infinity
NP Not present (only defined in messages, never in application data!)
OTH Other (e.g., concept not provided by required code system.)
PINF Positive infinity
UNK Unknown

(I'll take vanilla, please!)

It's really an entertaining thread to read

A reader, March 13, 2008 - 11:24 pm UTC

Tom wrote:

And if it were slower, they would best us every time in real life - or even fake like like the TPC-C.

As far as I know, DB2 hasn't beat Oracle every time. What a pity!

As for TPC-C, the following is my comment way above which got no feedback. It's hard for me to understand why Oracle wasted many years and resources just to get 1% better for such a costly game.

If TPC-C is a function of hardware and software, the mainly differences are processors, operating system, and RDBMS.

TPCC = Hardware Performance * Software Performance
= Processor * OS * RDMS

Since there is only 1% difference between Oracle and DB2's result, it's essentially the same.

64 * Itanium 2 Processor * Oracle * HPUX = 32 * Power 5+ * DB2 * AIX

2 * Itanium 2 Processor * Oracle * HPUX = Power 5+ * DB2 * AIX

So the combination of Itanium 2 processor, Oracle, and HPUX perform 50% of Power 5+, DB2, and AIX.

Either Itanium 2 is much inferior than Power 5+ (2 times) or Oracle contributes part of it.

Either way, to publish such a result is some kind of embarassing. If I were Oracle or HP, I wouldn't bother to do so.

HP/Intel claims that Itanium 2 delivered unmatched scores.

And IBM's:

And if it were slower, they would best us every time in real life - or even fake like like the TPC-C.

Tom Kyte
March 15, 2008 - 9:28 am UTC

... It's
hard for me to understand why Oracle wasted many years and resources just to
get 1% better for such a costly game. ...

because market forces force us to. For a long time we did not run tpc-c's - Informix and Sybase (they were database vendors way back when) ran ads, marketing, every customer engagement - all touting "we do these tpc-c's and they don't, they must be slower so buy us"

and here we are.

Abut teradata

Prasanth, June 02, 2008 - 9:54 am UTC

But teradata beats oracle ,right?
Tom Kyte
June 02, 2008 - 11:46 am UTC

in inflexibility and lack of features - absolutely


Oracle? No

David, June 06, 2008 - 4:10 pm UTC

Case in point, NYSE Euronext, the parent company of the New York Stock Exchange, has replaced three aging 100-TB warehouses built on Oracle databases with three Netezza Performance Servers. Complex queries that took as long as 26 hours in the conventional warehouse now take two and a half minutes, while simple queries that took seven minutes now take five seconds.
Tom Kyte
June 09, 2008 - 10:39 am UTC

Case in point - they redesigned everything.

What would have happened had they replaced Oracle with.....


If I had a nickle for every time someone says "we will switch from X to Y to go N times faster". Without looking at what they've already done. I love going into those places sometimes. Just sit down and look at a typical process - redo it (design it) and have it go N*N times faster.

So you change hardware, redesign, do it over and .....

Oracle? Yes...

Duke Ganote, June 09, 2008 - 12:49 pm UTC

I despise the "no, X DBMS is faster" argument without substantiation. Deep substantiation!

For example, I use Oracle's Heterogeneous Services to almost totally copy some DB2 schema objects (tables,
views, and indexes) into Oracle daily
And it's *LOTS* faster on Oracle.

Is that convincing?

No, not really from a technical level: 1) I don't know how big the z/OS server's Logical Partition (LPAR) is for the DB2 data or what the resource allocation is. 2) I don't even know how big the Windows platform for Oracle is!

I do know that Oracle 10gR2 is a modern DBMS. I know DB2 v7 for z/OS is just days away from being de-supported by IBM. And I know it only only took a few hours of my time to make my users happy because they used to get this error message after 5 minutes of a query running on DB2:
SQLSTATE=01S01[IBM][CLI Driver][DB2] SQL0905N
Unsuccessful execution due TO resource LIMIT being exceeded.
Resource name = "ASUTIME", LIMIT = "000000000205" CPU seconds ("000005000000" service units) derived FROM "SYSTEM PARAMETER".  SQLSTATE=57014(SQL State: 01S01; SQL Code: -99999)
And now they get this:
SELECT count(*)
  FROM ciopdba.voprcurr -- Oracle view with 1/2-dozen outer joins
 WHERE ch_asgn_id = '302619'
Elapsed: 00:00:02.50

I suspect that 10gR2 is simply better at outer joins than DB2 v7. I've seen enough evidence like this to believe Bert Scalzo's thesis: you may be able to get away with an old, stable version of a DBMS for OLTP purposes (for example, DB2 v7 is the only DBMS supported by our ERP vendor). However, you need the latest and greatest for data warehousing and reporting.

Oracle backup&recovery does not suck

Ken Maricle, June 10, 2008 - 3:34 pm UTC

I have GOT to respond to "Oracle backup&recovery suck". I know that post is very old...I read it 5 months ago and it has been sticking in my craw for all that time.

I did disaster recovery drills involving SQL Server and Oracle (and a bunch of other stuff). The Oracle was actually on VMS.

We walked into our disaster recovery site with a bunch of tapes. Here's what we had to do:

1. Oracle on VMS.
a) restore OS backup from tape
b) restore and recover Oracle hot database backup from tape

2. SQL Server.
a) install and patch Windows Server on 2 boxes
b) install and patch SQL Server on 2 boxes
c) install and patch backup software (we used Litespeed because the SQL Server backups are so slow).
c) create 2-node cluster on 2 boxes
d) restore and recover 2 SQL Server DBs on 2-node cluster.

3. Here's what we did NOT have to do for the Oracle environment:
a) install the OS and patch it
b) install Oracle and patch it
c) install any other app and patch it

There are a couple of points here:

1. You cannot take a disk backup of the disk partition containing the Windows OS and all of the installed software and restore it to another windows box and expect the OS to come up and the apps (like SQL Server) to work. You have a better chance of winning $200mm in Powerball. You must install and patch the OS on every Server. Then you must reinstall and patch SQL Server. If you are using clusters you have to configure the clusters (we had 5 4-node can understand why we only tested one 2-node cluster...we only had one day to do our disaster recovery testing in). Then you have to reinstall any other apps you might have, like Litespeed. THEN you can restore the DB backups.
2. Those who compare Oracle and SQL Server backup and recovery and say that SQL Server is easier are, as usual, speaking from ignorance. The fact is that even if you have to roll your own backup script (like I did on VMS because RMAN doesn't run on VMS), once you get it built it's easy. I know that is a stupid statement, but the fact remains that it is true. Tell me this. Did you get where you are in the SQL Server world without having to learn new stuff? SQL Server backups have their own quirks that you have to learn. Then if you have a SQL Server environment with any decent amount of data at all, you are going to be unhappy with how slow SQL Server's out-of-the-box backup process is, and you are going to have to invest in a 3rd party package like Litespeed, and then learn its quirks. What quirks you might ask? Litespeed had a very inconsistent user interface. Once you figured it out it wasn't hard. SQL Server also has some interesting quirks. For instance if you wait too long between transaction log backups and then do one during when the users are slamming the DB, the users can pretty much just go out on break until the log gets backed up and cleaned up. SQL Server backup performance is sorry most of the time, but never is it sorrier than this. Oracle backups, on the other hand, are simple file copies, as are their version of the transaction log backups.

I challenge the more adventurous of the SQL Server apologists out there to learn Oracle and get a job as an Oracle DBA in an industrial environment. Work there for 3-5 years. Then come back and tell me that SQL Server is superior. I don't think you will, because I have worked in both sides in high-availability, high-performance situations. SQL Server does not play well in that world, and it definitely does not have better TCO after you scale out and build the code into your app to scale it out, buy all the extra servers and extra 3rd party software to keep your head above water.

TPC-C 6 Million

A reader, July 17, 2008 - 3:58 pm UTC

It's hard for me to understand why Oracle wasted many years and resources just to get 1% better for such a costly game.

However, DB2 took 1.5 years to jump to 6,085,166, 50% higher to get back the top 1. That's something IBM can deliver but Oracle fail to demonstrate.

Tom Kyte
July 18, 2008 - 4:10 pm UTC

not really sure what you mean...

which two values were you comparing.

oracle is really not on the top...

essy pribadi, July 22, 2008 - 4:46 am UTC

I think, A READER means THIS page...
Tom Kyte
July 22, 2008 - 11:22 am UTC

as written many places - come back, the tpc-c results change as often as the weather.

but, I did not get what numbers exactly the "reader" was referring to. Because they seem to be comparing entirely, radically, completely different hardware platforms

which, well, think about it...

In-memory RDBMS

A reader, July 22, 2008 - 11:11 am UTC

Dear Tom, can you compare Oracle with In-memory RDBMS (like TimesTen, eXtremeDB), thanks.
Tom Kyte
July 22, 2008 - 6:10 pm UTC

in memory databases are about one thing: eliminating latency.

when you use a physical disk, response times will fluctuate.
when you use a network, response times will fluctuate.

If you remove physical IO and network IO - you are left with

a) time to access an address in RAM
b) cpu cycles available.

we know what (a) is and if you control the load, you can ensure (b) is such that there are enough for what you need to do.

An in memory database can help in the case where you want 'real time system like response times' - you eliminate the things that cause fluctuations in response times.

So, you might use them as a cache - you might use them for streaming information like a stock feed, sensor feed - to look for interesting stuff and then stuff it into a real persistent database.

And you need massive redundancy with these in memory databases - it takes a long time to start up a 100gb in memory database (it has to be read from somewhere, loaded, indexed - it is almost like building a database from scratch everytime you startup, the start times are long)

I would not say it is "X versus Y", it is more like "X can be used to solve a problem you might have with Y in some very special cases - at a pretty large cost, and it does not replace Y, it works with it"

MR Tom biased answers

Jose Alvarez, July 26, 2008 - 4:49 am UTC

First of all let me say that I worked for Oracle corporation 7 years and I admire Oracle's technology. However, as good as it is, it has its limits.

Enterprise Data Warehousing is one. When asked about Teradata, Mr Tom's answered reflects how little he knows about Tearadata. Teradata does not run in proprietary technology, since it uses Industry available components such as Intel CPU's. The only part that we could call proprietary is the Bus known as BYNET. Teradata runs on SUSE Linux and Windows (The NCR POSIX OS is being phased out).

I know that this is an old post, still the answer regarding Tearadata was not a valid one. Sorry Tom I dont like your biased comments, specially when there are people looking for good advice.

Tom Kyte
July 29, 2008 - 10:29 am UTC


of course I am biased, I make no bones about that.

but I would ask you to re-read this, do I have a preference for Oracle (duh as we like to say). Is this statement true however:

You are right in some regards on the last point - in order to make teradata perform, you have to buy proprietary, non-open systems hardware from a sole source vendor, this is true.

Teradata works best on what? Their platform, they pushed that big time, especially in the years ago when this was written. So what if their proprietary hardware uses some "open" - so do race cars, airplanes and the like (but there is still competition between them isn't there)

You don't have to "like" my "biased" comments, just make sure you understand what you are saying too - Teradata runs best on what? Especially in the year 2003 - which it dutifully timestamped for all to see.

google around, do research, don't take it from one source - doesn't that somehow seem common sense as well? (and if you google around, say with

teradata proprietary hardware

you'll find lots of current articles discussing this)


Duke Ganote, July 29, 2008 - 1:55 pm UTC

I'm not directly familiar with Teradata, but these quotes confirm Tom's opinion:

"I can't see Teradata being viable without the MPP hardware to go with it. If they became a software-only company, their database would only have appeal to existing customers. After all, without the hardware, it becomes just another database system with no clear differentiator in the market," says author Nick Galemmo, a data warehousing consultant, and veteran data warehouse architect, with consultancy Headstrong Corp. 

True, Galemmo concedes, Teradata Database is optimized for analytic queries, but Teradata's scalable, continuously available, shared-nothing MPP underpinnings are what give it most of its juice. "If you remove the MPP hardware, Teradata is equivalent to DB2 or Oracle. They all have means to optimize the environment for analytic queries, and in my opinion, of the three, Oracle does the best job with star schema," he argues.

Author and Teradata veteran Jill Dyche, a partner with Baseline Consulting, agrees. To be sure, she says, Teradata can run on platforms other than NCR servers and NCR's flavor of Unix, Windows 2000, Windows Server 2003, and SuSE Enterprise Linux are all supported, but very few customers actually choose to do so. 

"Teradata can indeed run on non-NCR hardware [but] you can really only leverage the powerful MPP capabilities via the Teradata-specific configuration," she indicates."

Just use Oracle

A reader, August 12, 2008 - 1:46 pm UTC

"That can mean more work for developers and database administrators, because of the inability to use common SQL commands such as joining tables. "Developers don¿t like this crazy stuff. That can create pushback," he said."

It seems like a lot of these Web 2.0 sites would do a lot better if they just used Oracle and leveraged the built in features. Maybe it is a cultural thing. I think a lot technical managers for sites like this don't understand what Oracle could do for them. They probably wouldn't need to use this MySQL/Memcached combination.
Tom Kyte
August 18, 2008 - 8:46 am UTC

market share

A reader, August 17, 2008 - 11:19 am UTC


Do you know of any good source article that shows the market share of leading database vendors like oracle, mysql, ms sql server in 2007 or 2008.

Is oracle really losing market share to Mysql like everyone claims. i ask that because i learn that most of the time the majority of people are wrong and say things just to show they know something.

This was an interesting article by mysql CEO who claims they are taking some market share from oracle in low or medium end customers.
Tom Kyte
August 20, 2008 - 9:23 am UTC

I'd be interested to know where they got their numbers - usually, when you say things like "we have 20% of the installs", you back it up - footnote it, not just say it.

For "official" market share reports, you would go to IDC, Gartner or the like and order one of their reports.

Basically, they show Oracle with 43-45% of the relational database market


A reader, August 18, 2008 - 1:07 pm UTC

That is true statement. There is a lot of managers that do not understand database technology at all other than it is a central repository of data.

Many managers are short-sighted meaning they look for cost savings now and not cost of ownership. Diggs used my-sql because it is free or cheaper than oracle. They would need to pay much more for oracle licenses on 30 database servers.

But they would need to pay a lot of programmers and maintenance because of the missing features of mysql.

Why you shouldn't care about share

Gary, August 20, 2008 - 8:57 pm UTC

"Basically, they show Oracle with 43-45% of the relational database market "
True, and that is based on revenue. Supporters of Open Source databases would argue that, because you don't have to buy licences or support (or can get support from third-parties) the revenue measure would underestimate them.
Of course number of installs is equally useless because it doesn't reflect the size of installs, multiple installs on single servers etc, and anyway it would be pretty much a guess for Open Source DBs anyway since you don't need to licence installs. (Same for XE if it comes to that.)
And are you interested in worldwide or local share. Does it matter to you if there are thousands or millions of users in India or China.
In short, market share in any terms is pretty unimportant when it comes to deciding which DB you should use.

Cost and availability of (local) experienced staff should be a much bigger factor.

Diffference between oracle 10g and 9i

Ajit Kumar Shreevastava, September 08, 2008 - 7:56 am UTC

Please give me the list of differences between oracle 10g and 9i
Tom Kyte
September 08, 2008 - 4:14 pm UTC


Oh wait - that would take a "while", so I'll just point you to the documentation:

there you will find a "new features guide", also chapter 1 of most documents is a "what's new in..." chapter

there is the list.

Crosstab - difference, September 08, 2008 - 7:54 pm UTC

While I think Oracle is the best available RDBMS or DBMS, however I do find lack of Crosstab queries and reports a big feature which is lacking in Oracle, not sure when Oracle will address this.
Tom Kyte
September 09, 2008 - 7:34 am UTC

pivot and unpivot are available in the current releases of the database.

Crosstab is available

Marcus, September 09, 2008 - 3:35 am UTC

For crosstab reports Oracle 11 provides PIVOT and UNPIVOT just like SQL Server 2005 or as MS Access uses TRANSFORM. So what are you missing?


Oracle and the LHC

A reader, September 10, 2008 - 11:18 pm UTC

The Large Hadron Collider (LHC) made the news recently and it was the subject of an entire program on the Science channel. It's been reported that the Collider will generate massive amounts of data that will be handled by the LHC Computing Grid. I wanted to know what database was selected by CERN to handle their data volume and [drum roll] the choice is Oracle 10g.

Read all the details here:

The paper indicates CERN utilizes Oracle 10g RAC and ASM, Oracle Streams, RMAN and Red Hat Enterprise Linux 4. The paper claims CERN has "one of the biggest Oracle database installations worldwide".

Tom Kyte
September 16, 2008 - 12:04 pm UTC

Yeah, I actually got a tour of that when it was under construction a while back - I did a seminar at CERN for a day as they were developing the software and building the underground bit - it was huge.

Very cool stuff.

In the context of above post

MH, September 16, 2008 - 12:14 pm UTC

Can Oracle then be held responsible for any unexpected black hole (or even clustered black holes)?



Tom Kyte
September 16, 2008 - 11:32 pm UTC

hah, funny you say that...

I have a slide - I used it first around the time I went to CERN.

It is a picture of a galaxy (it is a build slide)
I say nowadays:
"at the center of the galaxy" (big red arrow slides in to point to center)
"is a database" (explaining my approach - database sort of centric)

back then I used to say "My approach is - I think there is this universe <physicist raises hand at this point and says 'that is a galaxy, not a universe'>, Ok a galaxy then... and at the center of this galaxy is a database"

at this point another physicist said out loud "we are pretty sure there are black holes at the center of the universe and if so, no data would ever get out"

I was off to a brilliant start :)

SQL Server should behave like Oracle by default

RussellH, September 16, 2008 - 12:27 pm UTC

Looks like these Microsoft experts don't quite get databases, but they seem to be asking for SQL Server to behave like Oracle by default!


A reader, September 16, 2008 - 12:41 pm UTC

one may also check
to get some further informations

the beloved "UPDATE FROM" syntax of Sybase / SQL Server

Duke Ganote, September 25, 2008 - 11:05 am UTC

We hear: "Oh, it's soooo easy to use UPDATE FROM syntax"

This is illuminating: "the most important reason why I dislike UPDATE FROM is not that it's non-standard, but that it is just too easy to make mistakes with."

The Woes of DB2

Duke Ganote, October 08, 2008 - 4:49 pm UTC

This article, titled "The Joys of Commitment", would have been more accurately titled "The Woes of DB2 Locking"


Sunny, October 13, 2008 - 9:50 pm UTC

I am glad that Oracle has finally embraced the shared nothing approach (well at least for the storage portion). In my experience Oracle has struggled a bit in the large scale data warehousing arena where vendors like Teradata and Netezza (plus smaller players like Greenplum and DatAllegro) have had a great deal of success primarily because of their faster scan rate advantage. A lot of Oracle's struggles at the high end of data warehousing(Hundreds of Terabytes) are in fact related to poor I/O. Now with the new shared nothing storage architecture and data filtering at the storage sub system level a huge bottleneck has been eliminated and if as Oracle claims this leads to a 10x improvement in performance Oracle will become a major player in the high end data warehousing world as well.

I am glad that Oracle is finally addressing their Achille's heel. As fast as Teradata and Netezza are (from a raw query speed perspective) they just don't have the features and functionality of Oracle .


A reader, December 23, 2008 - 2:03 pm UTC


Can this be true.NASA switches to mysql

Tom Kyte
December 29, 2008 - 3:17 pm UTC

You know what, everyone switches to mysql, sqlserver, db2, oracle, whatever. Yes, it happens all of the time.

But, in looking at the title of the article, that would be pretty much false. They moved what sounds like a fairly small, not really mission critical system

"NAIS sends e-mail notifications to users based on specified interests and enables users to query the Web site ( for updated opportunities"

I love this comment:

Dwight Clark, project leader of NAIS, claims to have noticed an increase in speed of performance without experiencing any problems.

"claims" to "have noticed"

Do you believe by reading the title that NASA has converted every single system to mysql?

I believe NASA runs Oracle, DB2, SQLServer, mysql and probably others....


A reader, December 29, 2008 - 5:31 pm UTC


Happy Holidays! We missed your comments for the last 10 days.

You are right about what you said about the article. It does not sound anything major or mission critical and used by MySQL more for advertisement and marketing.

They are not going to tell you how many systems they convereted from MySQL to Oracle for sure.

I am wondering what the future of MySQL will be since Sun bought it and Sun now is having major problems and losing money.

Do you think that mySQL can't be used for mission critical systems or pass a security ceritifcation test?
Tom Kyte
December 31, 2008 - 8:32 am UTC

... They are not going to tell you how many systems they convereted from MySQL to ...

well, the article was an interview of one person owning one system - that is an indication "this was one system"

... Do you think that mySQL can't be used for mission critical systems or pass a
security ceritifcation test? ...

it depends on the need of the system doesn't it? Mission critical does not describe in sufficient detail what a computer system needs to do. And security might not be an issue - again depending on the needs.

Oracle at NASA

Ken Banyas, December 30, 2008 - 10:13 am UTC

I am a contract DBA/Sysadmin with NASA. With regard to the poster who asked about NASA moving to MySQL, the switch mentioned in the link happened in 2000 - 2001, at ONE IT shop at ONE NASA facility. I have been with NASA since 2001 and I am unaware of any other switches away from Oracle for large-scale applications.

NASA IT shops - there are many, many, many of them at about a dozen facilities - use whatever software products fit their particular needs.

I currently manage Oracle and Postgresql backends for my particular shop's custom and commercial applications. In the past, also at NASA, I ran an Oracle Apps implementation.
There are several other Oracle implementations at the facility where I work (including that Apps one), supporting very sophisticated scientific applications, using, among other features, Spatial.

I am personally aware of other NASA IT shops which use SQL Server and Informix. My shop, before I arrived, used Sybase.

NASA mission operations

John Gasch, December 31, 2008 - 10:35 am UTC

Although I have no opinion regarding which DBMS is better suited for IT or sending email, I have have been using Oracle for the past 17 years in the core of NASA spacecraft mission planning and scheduling systems. When it comes to commanding spacecraft, I continue to trust Oracle because it is battle-tested to be fast, reliable, robust, and virtually flawless in my experience. I have seen only a few small applications using MySQL around here.

John Gasch
Landsat Mission Operations
Goddard Space Flight Center


A reader, December 31, 2008 - 1:42 pm UTC


According to IDC, the open source databse market is 1 percent. Oracle still has 45% of market share and growing which is good.

I have to sometimes provide a good knowledge/features of that Oracle has and MySQL does not. Have you done any analysis or know of one where MySQL fails and Oracle works.

From what i understnd too is that Enterprise Version of MySQL is not free at all. It seems to me that some customers like MySQL only because it is cheap or free.


A reader, December 31, 2008 - 10:18 pm UTC


BTW, one IT manager mentioned the following when he was thinking of MySQL migration

1. Oracle is complex database and requires special expensive experts at $100/hr. His own people can't figure out Oracle architecture and PL/SQL.

2. MySQL is much easier to learn and the people who support it are cheaper around $80/hr.

That is in addition to the license costs.

Based on my analysis it would take few millions of dollars to convert the existing ORacle applications (about 10 applications) to another platform that **may** give the same result. I would be better off paying a few oracle licenses than take a huge risk in the conversion.

How would you respond to that argument?
Tom Kyte
January 05, 2009 - 10:25 am UTC

1) that would mean that his own people cannot figure out how to read?

Come on, they can figure out java, perl, php, whatever - but a language similar to Ada, PL/I - many 3gls is beyond them???? Seriously? Are you kidding???

2) you get what you pay for sometimes.

Most programmers don't understand the basics of transaction processing. Do you think the cheaper programmers are better?

Now, for $100 an hour - you would be paying that person $200,000 a year.

Quick poll readers. How many of you are Oracle developers making over $200,000 a year? I'm talking full time employees here...

A reader, January 02, 2009 - 4:54 am UTC

I dare to say that "MySQL is easier to learn" argument is mostly of "urban legend" type - you need not to learn more to obtain from Oracle functionality comparable to MySQL, but as Oracle provides much richer functionality so you may learn more in a way to use these additional capabilities.


A reader, January 02, 2009 - 1:52 pm UTC


I did not quite understood your statement. Do you mean that MySQL is NOT easier to learn and that Oracle has much more functionality built-in.

It seems you have experience with both database systems.
Tom Kyte
January 05, 2009 - 10:40 am UTC

My interpretation of what they were trying to say is:

If you learn as much about Oracle as you do about MySQL (eg: use just the subset of Oracle that is mysql functionality) - you would, well, spend just as much time learning. You have to learn about "X", doesn't matter if it is "X" in mysql or "X" in Oracle. You need to understand locking, concurrency controls, SQL, etc.

Now, the amount of stuff you can 'learn' about in Mysql is smaller than the amount of stuff you can learn in Oracle - Oracle has 'more stuff you can learn about'. In mysql, you would spend your time inventing these features. In Oracle you would spend (less) time learning how to use these already existing features..


A reader, January 06, 2009 - 11:17 am UTC


The $100 rate is for consultants (not full time). I think Oracle charges in the area of $300 for hourly rates for consultants.

I agree with you that they do not read the manuals. But still I think Oracle requires certain mindset and moderate learning curve to grasp it. But that may apply to several other databases too.
Tom Kyte
January 06, 2009 - 12:49 pm UTC

why would you have consultants - what is wrong with your full time employees.

And I think the MYSQL developers will argue "no, we like to make money too"

... But that may
apply to several other databases too. ...

that should be:

But that does
apply to all other databases too.

Thoughts and ideas

thaar, January 19, 2009 - 1:51 am UTC

Dear TOM,
i have several thoughts and ideas to develop oracle, where can i submit my thoughts and ideas.

best regards and thanks

eng thaar

thaar, January 19, 2009 - 1:53 am UTC

thoughts and ideas

thaar, January 19, 2009 - 1:54 am UTC

Dear TOM,
I have several thoughts and ideas to develop ORACLE . Where can i submit my thoughts and ideas.

best reagrds and thanks
eng thaar

for thoughts and ideas ..

Gints Plivna, January 20, 2009 - 1:31 pm UTC

.. is the way to go

Before-image and dirty read

Peter, January 27, 2009 - 2:48 pm UTC

Oracle obtained MVCC by getting the before-image, I knew it's not dirty read from the view point of database.
But what's the difference from the end users? Is this the reason why financial systems prefer DB2/Sybase/SQL Server? Traders want to see real time data, not the before image.

Tom Kyte
January 28, 2009 - 3:14 pm UTC

please provide authentic documentation that says financial systems PREFER db2/sybase/sqlserver

Since I've been at Oracle (1993), I've been on Wall Street frequently - and Sybase doesn't really exist in the year 2009 as a database entity and DB2 on open systems plus Microsoft together doesn't come close to Oracle marketshare wise - I'd really need to see something independent saying "financial systems prefer..."

Because from what I've seen - it just isn't that way...

But let us answer the question you asked:

But what's the difference from the end users?

That is simple, let us look at the simple query:

select sum(balance) from accounts;

In a MVCC system - you'll get the answer that was accurate, true, committed and actually EXISTED in the database when the query was submitted.

In a dirty read system - you'll get AN ANSWER THAT NEVER EXISTED (yes, never existed, never ever existed, a made up number, a number that if you printed on a report would get you in jail) at any point in time in the database. That is, the functional equivalent of:

select dbms_random.random from dual;

In Oracle (except, that would be much faster than a dirty read in the others)

Alexander, January 28, 2009 - 8:24 pm UTC

We have a lot of the older databases still kicking around, but the reasons are certainly not because they are better. I would say the reasons are

1) Managers want an actual dollar figure associated with much much money this will save us.

2) Nobody understands the difference (except dbas) between one database and another.

3) Everyone is afraid of how much work it will take.

And from what I've heard, the others don't do dirty reads unless you configure it that way, but they do have blocking reads, which is just as bad (pick your poison).

In SQLServer 2005 they figured multiversioning out, but it's not the default. I also doubt it scales as well as Oracle because they maintain different block versions in one place (tempdb) whereas Oracle has redo + undo. Not sure if that is 100% accurate though,
Tom Kyte
January 30, 2009 - 1:56 pm UTC

well, the others do do an INCONSISTENT read by default. That is just as bad, unless of course you only look at a single record.

eg: by default "select sum(bal) from account" will return an answer that did not exist at any point in time in SQLServer. With or without a dirty read.

your last paragraph is accurate.

re: financial systems

Stew Ashton, January 29, 2009 - 5:51 am UTC

Having spent 20 years working with (or in) the French financial sector, I would agree with Tom as long as he is talking about "open systems". The fact is much of our core banking data resides on the mainframe within DB2. This has many advantages :

1) the database is consolidated, whereas our Oracle databases are legion (don't get me started...);
2) the mainframe itself is consolidated;
3) our mainframe operations people are much more skilled and dependable;
4) whatever happens on the mainframe, it's always IBM's fault and they react rapidly.

Nothing to do with preferring one database over another.

re: re: Financial systems

Vince P, January 30, 2009 - 11:39 am UTC

I guess one man's advantage is another man's impediment....

1) the database is consolidated, whereas our Oracle databases are legion (don't get me started...);
That's surely an architectural or CIO decision, certainly nothing to do with Oracle. It usually makes business (and often legal) sense to isolate databases. Why should risk management data be stored in the same database as HR data?

2) the mainframe itself is consolidated;

Can do this with Oracle if necessary - have all databases (or just one massive all-singing database) on one server. Wouldn't recommend it though.

3) our mainframe operations people are much more skilled and dependable;
It's hard to get good staff for any system. There are good quality and poor quality staff in every arena - it's management's job (usually abrogated) to choose the best and most able people. If they can't do that, you're stuffed.

4) whatever happens on the mainframe, it's always IBM's fault and they react rapidly.

I've always found Oracle's support excellent, is IBM that much better?

All the above said, the trend is massively toward centralised systems it seems - and now Cloud Computing, one giant virtual central server in the sky - so perhaps the IBM mainframe will make a dramatic comeback. Who knows.
Tom Kyte
January 30, 2009 - 4:18 pm UTC

1) you are correct, there is no reason the Oracle databases wouldn't be consolidated - with the only cause being "we did it that way on purpose for some reason"

2) When I hear consolidation - I think "fewer databases - at most one per host". In mainframe speak that is one per lpar (logical partition). In unix speak that is one per virtual machine.

3) I've more than once said "you can make windows as reliable as you want, you just have to stop letting the guy that knows how to set up the print server be your security officer, DBA, disk technician and SA all at once". That is the problem - not that the 'systems' cannot be reliable, but rather the preconception is "a monkey can run windows, you need no management skills for wild open unix, and the mainframe is rock solid". It is the mindset of the people you hired to work on each.

4) I think he might be talking about hardware/OS related, IBM's mainframe division is pretty good there.

@Vince P re: financial systems

Stew Ashton, January 30, 2009 - 12:45 pm UTC

Hi Vince,

I agree, a lot of this has "nothing to do with Oracle", that was sort of my point: just because we use DB2 doesn't necessarily mean we think it's better than Oracle per se.

About support, when you have just one supplier it's easier to know who to call. In open systems land, sometimes the hardest part is figuring out whose support you need.


A reader, January 30, 2009 - 3:36 pm UTC

For all our new databases in SQL Server we do set to READ_COMMITTED_SNAPSHOT to on. Some of the legacy apps can't set this because they were counting on writers blocking readers.

I think this is catching on generally in the SQL Server world. I think it validates Oracle's approach.

Sybase doesn't really exist in the year 2009 as a database entity?

John, February 03, 2009 - 9:34 pm UTC


Can you elaborate your statement?
"Sybase doesn't really exist in the year 2009 as a database entity".
I went to its website and found:
Sybase Reports Best Quarter and Year in Company History on January 28, 2009
Tom Kyte
February 04, 2009 - 10:28 am UTC

Meaning, in 1993 when I joined Oracle, the main competitors were


Today, in 2009 - it is all MS SqlServer (sybase in disguise) and DB2.

Informix is really "no more"

Sybase - they just never come up - IQ from time to time in a 'boutique' sort of way, but Sybase as a RDBMS - doesn't come up.

That is what I mean, sure - they exist as a company, but not as a 'database entity'.

"Sybase doesn't really exist in the year 2009 "

Duke Ganote, February 04, 2009 - 1:22 pm UTC

"Total revenue of $305.1 million for Q408 and $1.13 billion for full year"

"Oracle's strong 2009 fiscal first quarter was built primarily on growth in its database software line which grew 27% to $906 billion."

$1B for ALL of Sybase vs 908 for Oracle's DBMS line.

Not even close.

$906 billion?

Kevin, February 04, 2009 - 3:15 pm UTC

Oracle earns $906 billion in a quarter, this could be true in one hundred years :)
It must be a typo of $906 million.
Tom Kyte
February 04, 2009 - 3:34 pm UTC

laughed out loud at that.

I sent Craig Mullins an email about that...

Oracle 11g vs Teradata(Latest version)

Arvind Mishra, February 05, 2009 - 1:40 am UTC

Hello Tom,

I am working on Data warehouse implemented using Oracle. My organization has a global presence. Recently my company has decided to look for teradata as some of our senior DBAs think that performance in Oracle it not that good when data really become huge. I am a firm believer in Oracle and I personally think that our performance is poor because we think about performance after desinging and implementing the system. Can you give me some comparison between latest versions of these two database? ( The comparison given on this page is between 9(i) and terradata which is old now) Also, is it really true that Teradata is only designed to target data warehouse?


Tom Kyte
February 05, 2009 - 10:35 am UTC

.. is poor because we think about performance after desinging and
implementing the system. ....

dead on.

... Can you give me some comparison between latest
versions of these two database? ...

but - if it is poor design, it doesn't matter *what* you do.

Ok, to make teradata 'really fast', you have to buy into their proprietary machine.


you choose.

Exadata server

A reader, February 06, 2009 - 11:38 am UTC

I am very much interested in the Exadata server but have some questions:
a) In a recent conversation with Oracle, they said that RAC is mandatory for Exadata. The specification sheet does not mention that anywhere. Is RAC mandatory?
b) The spec of each cell is 12x450GB SAS or 12x1TB SATA. However the user data is only 1GB (SAS) or 3.3GB (SATA). What uses all the remaining disk space? Is it high redundancy ASM diskgroups?
c) What is the role of Oracle Exadata Storage Server Software 11g? Is this licensed separately?
d) Does(do) Exadata cell(s) require separate database server(s)?

Very keenly looking forward to your address at the Exadata roadshow on 2/10.


Tom Kyte
February 06, 2009 - 4:10 pm UTC

a) well, it is part of the package, it doesn't *require* rac but the box comes with it.

b) I'll refer you over to (punting this one), he is much more of a storage guy than I.

c) It is, is is basically a hardware/software combination.

d) no, the database runs on the host - there is Oracle software down at the storage level, but not a full database instance or anything.

On Feb 10th, I'll be doing the software bits and Sanjay Umarji will be there to answer the really hard hardware questions :)


Sam, February 08, 2009 - 12:17 pm UTC


when you go to company XYZ who is evaluating MySQL, ORacle, DB2 and Sql server.

What is the biggest thing you focus ON to convince them that oracle is worth the money. Is it locking, scalibility, portability, etc. Many IT managers (who do not know much) seem to think that a database is a place to store data only. From their prespctive all databases can store/query data.
Tom Kyte
February 09, 2009 - 6:48 pm UTC

It comes down to

what the heck are you building. What are your needs.

Then and only then can we talk. I've written that many times before. I could spent 40 hours talking about the Oracle feature set and still not hit anything relevant to your problem (what I'm saying is there is no single answer - not for anyone - it takes a context).

Perhaps security is your #1 need
Or continuity of operations in the event of an earthquake
Or replicated data for worldwide access to a repository
Or reduced/limited unplanned downtime
Or massive data volumes
Or ease of managment

You need to be a bit more precise in your needs, then we can say "why"

I am surprised

Abdal-Rahman Agha, March 05, 2009 - 9:20 am UTC

I am Agha. The owner of this question. Its more than 7 years ago since this question been asked. Till now this subject taking high importance.
Now todays we use the first two important databases in the market: ORACLE & SQLServer. What does it mean!!!!!!!!

Tom Kyte
March 05, 2009 - 2:01 pm UTC

Actually, I think IBM is bigger than SqlServer.

And the Oracle marketshare has gone up.

And mysql and others like it have grown - they didn't really exist in a practical sense when we started this.

and if you look in the data center, you'll find a large percentage (and growing) of linux servers - something that when this was first started - was not true at all (not even close). When this started - it was Solaris/AIX/HP-UX/Windows NT. Now, it is a very different mix.


A reader, March 08, 2009 - 9:39 pm UTC


I was checking something and I found this site comparing oracle to others. Is this really true or some other vendor holds a grudge on oracle since it took their market share

I met a lot of IT people who has similar mentality that oracle is expensive and hard to work with. I concluded that you can spend years trying to show them they are wrong and it wont work.

Ignorant, and incompetent people are hard to convince. i just refer them to the realities of the market that oracle has 47% market share while others are dying.
Tom Kyte
March 09, 2009 - 3:49 am UTC

smk, if you ctl-f for


on this page, you'll find the answer you were looking for.

Thoughts and ideas

thaar, April 13, 2009 - 2:28 am UTC

Dear TOM
I post the following thoughts and ideas in last week. tell me what is your Opinion.

Dear oracle
I have the following ideas:
1. Like in Cisco switches and router s (running config), I suggest that this capabilities should be added to oracle, so that it is possible to create this file from installed and configured oracle servers and it can be used from the universal installer when we install new oracle if the old one is damaged. It can be used to return oracle to previous configurations at any time. What running config contains are all configurations such as folders configurations and enterprise manager folders and configurations ¿etc. Oracle DB can be recovered from backups ¿.etc so that it¿s not required to be added, but it can be added and replaced with present tools so that the running configurations will b e complete. Ora.ini does not contain the whole configuration. A new tool for whole oracle configurations can be created and when new configuration is added to the system, the file is updated automatically.
2. A system like ¿Last known good configuration¿ in windows OS is required to be added in oracle, so that when problems occurred in oracle system (not DB), it can be recovered by this tool. Idea 1 can be mixed with idea 2.
3. I have an idea for new encryption way where can I send it.

Best regards and thanks
Eng thaar al_taiey

Alexander, April 15, 2009 - 11:47 am UTC

Hello Tom,

I am forced to work with SQLServer because of limited staff and many different apps in our portfolio. I noticed that SQLServer and Sybase will create tables in tempdb when processing queries called "worktables". I don't know of anything like that in Oracle.

Can you explain briefly how the two differ? Oracle seems superior, why create tables and insert rows and remove them if you don't have to. Are the others that far behind?

Tom Kyte
April 15, 2009 - 2:10 pm UTC

we can do the same if we want to

ops$tkyte%ORA10GR2> /*
ops$tkyte%ORA10GR2> drop table t;
ops$tkyte%ORA10GR2> create table t as select * from all_objects;
ops$tkyte%ORA10GR2> */
ops$tkyte%ORA10GR2> @at
ops$tkyte%ORA10GR2> column PLAN_TABLE_OUTPUT format a72 truncate
ops$tkyte%ORA10GR2> set autotrace traceonly explain
ops$tkyte%ORA10GR2> with data
  2  as
  3  (select object_name, count(*)
  4     from t
  5    group by object_name
  6  )
  7  select *
  8    from data
  9   where object_name like '%Y%'
 10  union all
 11  select *
 12    from data
 13   where object_name like '%Z%'
 14  /

Execution Plan
Plan hash value: 1995908807

| Id  | Operation                  | Name                       | Rows
|   0 | SELECT STATEMENT           |                            |   109K
|   1 |  TEMP TABLE TRANSFORMATION |                            |
|   2 |   LOAD AS SELECT           |                            |
|   3 |    HASH GROUP BY           |                            | 54587
|   4 |     TABLE ACCESS FULL      | T                          | 54587
|   5 |   UNION-ALL                |                            |
|*  6 |    VIEW                    |                            | 54587
|   7 |     TABLE ACCESS FULL      | SYS_TEMP_0FD9D6606_4EB96C9 | 54587
|*  8 |    VIEW                    |                            | 54587
|   9 |     TABLE ACCESS FULL      | SYS_TEMP_0FD9D6606_4EB96C9 | 54587

Predicate Information (identified by operation id):

   6 - filter("OBJECT_NAME" LIKE '%Y%')
   8 - filter("OBJECT_NAME" LIKE '%Z%')

   - dynamic sampling used for this statement

ops$tkyte%ORA10GR2> set autotrace off

in this case - the optimizer decided "do the aggregate once, write it into temp (maybe it'll fit in memory even!), and then query the resulting aggregated data - rather than scan and aggregate T twice..."


Sam, April 20, 2009 - 11:20 am UTC


I am sure you are a happy camper now.

Mysql and java and solris are owned by you now.

I know oracle wants to get rid of MySQL competition. This started when they bought innobase which makes the engine of mysql.

Why do you want JAVA. is it because there are so many systems out there java based and you want to license it.

Larry Ellison is making smart moves with Peoplesoft, BEA, Siebel and now Sun.

IBM must be in tears now and regret they did not take it.
Tom Kyte
April 21, 2009 - 2:29 pm UTC

... I know oracle wants to get rid of MySQL competition. ...

how do you know that? How does that tie into innobase? We bought a company and have been enhancing that product over time - making mysql a better mysql - that seems to contradict what you said initially doesn't it.


A reader, April 20, 2009 - 5:44 pm UTC


Check this out. The former CEo of MySQL thinks oracle is used for legacy and not web databases. Can you believe this?

But doesn't that risk cannibalizing Oracle's database business?

MySQL is growing like crazy. That hasn't hurt Oracle. MySQL works for Web-based applications. Oracle is for older, legacy applications. Oracle might as well cannibalize themselves, then have someone else do it.


A reader, April 21, 2009 - 6:41 pm UTC


I did not hear it directly from oracle. But it is simple common sense thinking. Why would oracle be interested in acquiring and improving a competitor product -- the storage engine for Mysql. It does not sound a good business decision or make sense at all.

If I was a CEO i want to eliminate the competition from taking my market space. You think Microsoft wants people to use Netscape or Linux too. They want to kill those products if they can to leave Windows the dominant operating system.
Tom Kyte
April 22, 2009 - 1:57 pm UTC

why would we have gotten into innodb and made it better? It makes mysql better? What is the "common sense" there.

... If I was a CEO i want to eliminate the competition from taking my market space. ...

why - then you become a monopoly and you get regulated and .... best to have competition you understand and can compete with... You have to have competition.

Do you know how many database/database technologies we've acquired over the years? Before mysql?

It started with Digital's RDB (which we still sell and support and enhance, 14 years now)..

The text engine, started as a merge between an external text indexing engine (sql*text) someone cooked up and a technology called context (it did theme'ing and gisting and other linguistic things). That is going on 12 years...

Our OLAP engine? Used to be IRI Express...

Our in memory database? Times Ten.

Berkley DB

Sleepy Cat

Top Link

All of it still lives...

Sybase does not exist

Igor, April 22, 2009 - 4:00 am UTC


I would like to followup to "please provide authentic documentation that says financial systems PREFER db2/sybase/sqlserver..."

I am currently in one of the leading financial software company worldwide. Oracle is about 20% of all installations. Rest is Sybase.
If you prefer to discuss about it, feel free to contact me by mail...

Tom Kyte
April 23, 2009 - 12:28 pm UTC

which leading financial companies? For, unless you are a services firm working with hundreds of financial institutions - you have visibility into - well - your company.

And - this is for your product, your product is developed on a database and then ported to others. I wonder, what is your base platform (database independent applications - they run poorly on one database, and really really bad on the others).

Inside of those customers, outside of your niche application that you provide with a database behind it, what about that? Those companies work on *all* of the databases.

I spend way too much time in New York (Wall Street) in order to say it is only 20%. It is more like 100% use Oracle (and db2 and sybase and so on). They all use everything. I spend a lot of time on Wall Street myself.

Again, "please provide authentic documentation that says
financial systems PREFER db2/sybase/sqlserver..."

An independent study - anything. Personal observation - slightly (greatly, hugely) skewed.

I say, you say... I do not see what you see - I work with a huge variety of companies. Now what?

Overhead on locking db2 vs oracle

suresh, April 22, 2009 - 10:12 am UTC

Hi Tom,

Know you are not interested in reading this stuff but i have to give an examples to prove the same to db2 guys.


Need your assistance on this.

1) How can we overcome the concurrent waits on ITL.
2) Overhead is same as such as for 1 billion rows. (need a explanation bit with your kind of examples)
3) How such a disk based locking is better than memory based locking.

Tom Kyte
April 24, 2009 - 2:42 pm UTC

1) that is pretty straightforward and documented -

a) increase initrans, allocate more ITL's per block. If you have so many concurrent transactions on a single block (contention in the first place, in all conventional rdbms's as only a single process can actually modify a block in memory at a single instant in time) it would make sense to have more slots allocated. Or

b) spread the load out over many blocks. For example, say you have table that undergoes heavy inserts and the primary key is a sequence. Sequences are monotonically increasing values - the index on the primary key value will have everyone inserting on the very very very hot right hand side. Lots of concurrent activity. Now, since only one thing at a time can actually modify the block - you'd want to spread this out - and that would decrease the need to have a large number of ITL's as well. So you would partition (hash partition) the underlying table into some power of 2 (2,4,8,16,32,64,...) partitions and you would reduce the contention by that same factor.


2) I do not understand what you mean by that?

3) well,


A reader, April 22, 2009 - 6:58 pm UTC

I also heard that many financial firms use Sybase too - probably cheaper license.

maybe that explains why many of those financial companies went under.

Sybase market share is around 3%.

@Suresh RE: Overhead on locking db2 vs oracle

Duke Ganote, April 23, 2009 - 12:40 pm UTC

That IBM paper was probably the ignition point for this question: "Does Oracle store transaction entries on a fixed size page?"

Igor, April 27, 2009 - 11:07 am UTC


In any case, "Sybase doesn't really exist in the year 2009" simply can't be taken "as-is".

Now, you know answer on question "My car doesn't work. What's wrong ?". :-)

I hope I can be happy user of this forum and still disagree on some opinions...


Tom Kyte
April 27, 2009 - 2:33 pm UTC

market share wise, competitively wise - Sybase does not exist as a database company in the year 2009.

That is a fact - the marketshare numbers are out there for all to see.

In 1993 - every customer engagement was a head to head with Sybase and Informix.

In 2009 - I cannot remember the last time those two were mentioned - unless they were there legacy wise.