Oracle is the Terrell Owens of software: you absolutely despise playing with it, but its performance is almost good enough to make up for its unforgivable manners. Almost. Today I had the misfortune of having to perform some development work with an Oracle database. I had not touched the Oracle client installation on my desktop machine in months, except to update the Oracle .Net tools a few weeks ago. I updated them, but had not used them. When I tried to make a connection to my development database, the drivers were just giving me a big “New York Greeting.” I never did resolve the problem; I kludged together a work around. I ended up just using a different system on my client’s VPN and working with their development database. I put two hours into resolving the problem, and simply did not have anymore time to waste.

Over the last year or so, I have spent well over 40 hours wrestling with Oracle. That is a full 2% of my yearly productivity devoted to nothing but trying to get their “tools” to stop giving me grief. I can easily chalk up at least another 20 hours over the last year trying to find error in SQL statements that Oracle does not help me find. “Missing right parenthesis” is not very helpful when one is doing a JOIN on 106 subqueries. MySQL is nice enough to show me exactly where the problem is in the error message.

And then there is the sewer known as “sqlldr.exe.” Another complete waste of time to deal with. Again, comparing to MySQL, I have to write a script file to do what MySQL can do in one “LOAD DATA INFILE…” statement. Even the command line for sqlldr is complicated. For whatever reason, my current working directory needs to be the data directory, or else the files do not seem to be found.

Oracle Enterprise Manager is pretty foul too. It has menu and toolbar items that tell me to go use “Oracle Enterprise Manager Console,” which, despite its name, is not the same program, but a Web based app. The software itself barely works. It leaves a Java console window in the background, which is constantly spitting out various uncaught exceptions. The software has a positively miserable interface. Its worst habit, though, is dropping the first character typed into any text box. I have never seen that kind of behavior in any other application.

Even the Oracle client is a shrew. Each time you install an Oracle product, it tramples all over the file permissions on the client, rendering it unusable. Due to a quirk in Windows’ file permission check system, after correcting the problem you need to reboot your PC. Oracle is the only database that requires a monstrosity of a client; it is like Novell Netware circa Windows 3.1. Do not even get me started on the idiotic tnsnames.ora file contraption. Talk about a manageability nightmare! Every other database out there just needs to install a small ODBC driver (or JDBC driver in a convenient JAR file, for Java developers), make an ODBC connection, a poof, you are connected. Not Oracle. It needs to turn your computer into a mess, and you still need to create the ODBC connections anyways.

Dealing with the Oracle corporation itself is a David Lynch film at best. Their Web site makes it clear to me that they are not interested in helping me. The search system on their Web site is horribly broken which reflects quite poorly on their database products. Trying to find updated tools and drivers is a hassle. Not that they update their tools very often, Oracle has a poor track record at bug/security fixes. And again, when you do update the tools (using their awful Java installer, which takes two minutes just to start, and always gives me grief about where to install stuff), it destroys your existing setup, requiring a three hour trip down search engine lane to fix the problems.

I am not even sure if Oracle’s performance is that great. Microsoft SQL Server, when properly configured, can be pretty fast, close to and occasionally exceeded Oracle’s. MySQL is catching up very quickly, and PostgreSQL is no slouch either. And all of them are infinitely easier to deal with than Oracle. Oracle’s dominance of the database market is proof positive that the people who make IT purchasing decisions are not the people who have to live with those decisions. Why is it that there are no MySQL, PostgreSQL, or SQL Server consultants billing out at $250/hour, but there are Oracle consultants doing so? What does that tell you about Oracle?

Oracle just does not get it. When your developers tell you that using Oracle over another database makes development take 10% longer, or your DBAs cost you 25% more, or management on users’ desktops is 250% more difficult, or integration costs are $250,000 versus $10,000 for anyone else, eventually you are going to start to wonder if a 5% performance edge is worth it. I do not think it is. In its current state, I would not recommend Oracle to anyone. I simply fail to see its advantage, and I have yet to hear from a developer who likes dealing with it. The only people I have talked to who like Oracle are billing out at divorce lawyer rates to integrate and support it.

I would love to hear your Oracle horror stories, or any defense of them.