As part of my ongoing effort to teach by bad example and pass on what little I’ve learned about programming and database administration through mishap, my last column, Thank God I Chose SQL Server part I: The Tribulations of a DB2 Trial, told the tale of how my evaluation of some of IBM’s software went badly wrong. Both before and after that misadventure I tried to evaluate some of Oracle’s database server software for the same reason, to gain some basic familiarity with how Oracle handles multidimensional data in order to compare and contrast it with SQL Server Analysis Services (SSAS). I had also heard good things about some additional functionality that Oracle’s OLTP language, PL/SQL, had over T-SQL – especially the windowing functions, which will finally be included in the latest version of SQL Server 2012 slated to be released in early April. I assumed both trials would go smoothly, since I had previously installed much earlier versions of DB2 and Oracle shortly after getting my Microsoft Certified Database Administrator (MCDBA) certification in SQL Server 2000 about nine years earlier, when I knew a fraction of what I know now (which is probably also a fraction of what actual DBAs know, so if they tell you anything differently than I do, listen to them). I was disappointed to discover that the quality of the installers put out by Microsoft’s chief competitors, as well as the usability and manageability of their software, had apparently gotten worse in the interim. Since I hope to work on multidimensional data with SSAS in the future and learn much faster through writing, I had planned to post here on the positive aspects of DB2’s version of MDX and whatever advantages Oracle had in the OLAP field. Instead, I had to turn both posts into salvage operations, so that others can learn from the mistakes I encountered.
My last mistutorial was a much longer tale because the problems I encountered with DB2’s OLTP and OLAP software were numerous and constant, but spread out across all of the components of the IBM software I tried. In defense of IBM, however, at least I was able to evaluate some aspects of their software; in Oracle’s case, my experience was so bad that I never got off the ground. Perhaps the user interfaces for Oracle are even more cluttered, clunky and unusable than DB2’s Data Studio, with its glaring lack of basic features like Intellisense or modern import-export utilities, or as unusable as the web interface for Infosphere, which was hobbled by badly located modal dialogs. Then again, perhaps it is better than SQL Server’s user interface, which I will never complain about again; I may never know, because my installation experience with this version of Oracle was so bad that my trial never got off the ground. if I had to hand out grades, I would at least give IBM a D-minus, but Oracle deserves a solid F.
No Trial, All Error
Perhaps Oracle doesn’t resort to as many antiquated command prompt windows as DB2 does for access to critical functionality, but I will never know for certain. All I can say is that the installer for 11gR2 itself began with a command prompt, which made my confidence in Oracle immediately sink – if they were using such low-tech, antiquated methods from the days when America Online and Netscape were still household names, then how advanced could their database functionality possibly be? I began having flashbacks to all of the troubleshooting I had to do with similar functionality in the DB2 trial, such as the DOS-style installer for its sample database and DOS-like launcher for the Websphere application server, both of which naturally malfunctioned. As described in my last column, I encountered command windows frequently during my DB2 trial, in which they exhibited all of their usual weaknesses, such as forcing the user to waste valuable time typing out arcane commands rather than copying and pasting them; penalizing the user for a single typo by making them retype the text again, perfectly; inscrutable or non-existent communication with the user; and ungraceful, sudden exits upon program termination. I generally wince at the very sight of command windows thanks to such drawbacks; although I can understand why certain IT professionals prefer them as a matter of taste, I don’t see how they can compete with modern GUI methods to get work done several orders of magnitude faster. In the same vein, despite all the hype, I suspect that any task that can be done in Power Shell today can be done much more efficiently with SMO, but that is a debate for another time; no matter which camp you’re in on that issue, we can at least agree that PowerShell is more powerful than using an old DOS-style command prompt.
I breathed a sigh of relief when the Oracle command prompt started a GUI installer, but little did I know that it simply wasn’t in the same class as the setup programs that can now be written with Visual Studio, including those for SQL Server, which can accurately reverse failed installations on the fly and give you a file-by-file report of what is being added to or taken away from your machine by the second. In fact, it didn’t work at all. The DB2 trial software was tainted with a bad DOS-style installer for the sample database, a Windows Installer program that failed to uninstall a component properly and an Add-In for Visual Studio that degraded catastrophically, but at least some of the components got onto and off of my machine the way the developers intended. I could not say the same for Oracle, which depended on a faulty installer for the most critical components of its latest database server, 11gR2. I had originally intended to install it on my 64-bit Windows 7 machine and its six-core AMD processor before the DB2 trial, but had to put it off until that expired because of the same fatal error, which was definitely an error on Oracle’s part I remember successfully installing the trial software for an earlier version of Oracle, perhaps 6 or 7, a little less than a decade earlier, so I assumed that I would at least be able to complete the trial at some point. I was wrong, for my worst fears were confirmed: the installer consistently failed thanks to common but esoteric reasons that the Oracle community apparently didn’t understand well and the company had never developed a clear, consistent fix for. I encountered the same problems when I tried the trial again a month or two later, after I had finished my Bad Date from Hell with DB2.
The first tab in the setup program, titled Configure Security Updates, prompts you to assign an E-mail address and if you leave it blank, it spits out the following warning: “You have not provided an email address. Do you wish to remain uninformed of critical security issues in your configuration?” The wording on this is a little tricky, because I assumed it would ask if I wanted to enter an E-mail address, not whether I wanted to remain uninformed about security issues. As a result I answered No a few times, which won’t let you proceed to the next step without an E-mail, until I realized it was asking me to respond Yes to the negative act of turning down an option, which is not the way user interfaces normally operate. This was a minor issue compared to the problem I encountered after selecting Yes and moving on to the next page, Installation Options. As with a lot of other setup programs, it included an option to perform a Typical installation, with the caveat that every time I selected this option, the installer would quit without warning, forcing me to reopen the command prompt window and begin again from scratch. The only way I could proceed to the next step was to select an Advanced installation, which of course required me to input more data. After this I had to configure a wide range of server properties that were analogous to some of those found in an Advanced setup of SQL Server. For example, there were configuration options for memory management, character sets, a Sample Schemas tab for creating a sample database and other places to select options for backup and recovery, file storage and the usual database server functionality. The Installation Location option raised my eyebrows a little, because attempting to install the server in Program Files resulted in a crude error, “The Oracle home location that you have specified contains the space character.” I thought most modern software companies had overcome the daunting technical obstacle posed by empty spaces in path names a generation ago, but I guess I was expecting too much. Since this was just a temporary trial I didn’t need to be picky about where the data was installed, however, so I just went with the default options. Under Schema Passwords, I ignored the defaults and first tried using the same password for all accounts, since I am the only user on my development machine, which wouldn’t be hosting the evaluation software for long. As I troubleshooted the installation program later on, I played around with the settings for all of these options quite a bit, but normally went with the defaults. No matter which set of parameters I chose, the result was still the same: I could not get past the next page, titled Perform Prerequisite Checks.
My computer failed all of the checks, despite being comfortably within the stated requirements. The installer informed me that I didn’t have either the 922 megabytes of total RAM or 50 megs of free memory needed to continue, even though most of the 8 gigs I had on the machine was free. It also said it could not perform a necessary check on the Swap Size for the hard disk and reported that the Free Space was N/A, which I assumed meant Not Available rather than Not Applicable. There was also an Architecture check, i.e. “a prerequisite condition to test whether the system has a certified architecture,” plus an Environment Variable check to see that the Path variable “does not exceed the recommended length.” Each one of these checks failed. Clicking on the More Details tab informed me that the expected and actual values for memory were also N/A, with an error message that didn’t given me much of a clue as to the cause: “PRVF-7531 : Physical memory check cannot be performed on node “StevesComputer” - Cause: Could not perform check of physical memory on the node indicated. - Action: Ensure ability to access the node specified and view memory information.” On the first attempt, I assumed these failed checks wouldn’t cause much of a problem, because Oracle included an option to Ignore All checks. Unfortunately, selecting it and clicking Next repeatedly caused the setup program to quit without warning, forcing me to restart the whole installation process from scratch time and again. Sooner or later, I noticed in Task Manager that a process called javaw.exe exits at the same time. Whatever may have caused the checks to fail, the installer should not have degraded so ungracefully. My first reaction, naturally, was to assume that the installer had insufficient privileges to perform the checks, so my next course of action was use the Run As Administrator option, but this didn’t help. At some point, I tried granting the same administrative privileges to every .exe file I could find in the Setup process (RemoteExecService.exe, exectask.exe, oui.exe, unzip.exe, setup.exe and vcredist_x64.exe) with no discernible effect. I also tried shutting off my firewall just in case, even though the logs didn’t indicate any blocked files or network communication. The next solution I attempted was to play with the setup options I mentioned previously, including using all defaults, which consumed the rest of the time I had set aside for the trial before Thanksgiving, after which I had finally managed to get past fatal glitches on IBM’s website to download the DB trial. I resolved to revisit the Oracle trial in January after the DB2 evaluation period was over, under the assumption that I might be able to think of a fix by then.
How Oracle and DB2 Sold Me Another Copy of SQL Server
The only difference in this second round of troubleshooting, beyond the fact that the setup program was oddly recommending a different global database name and Oracle Service Identifier (SID), was that I discovered that this is a common problem for many experienced Oracle users, on both the 32-bit and 64-bit installers. Not only has the company not fixed the glitch, but the few solutions that the Oracle community has come up with on their own are all over the place, to the point that the underlying cause still isn’t understood. Even when the fixes work, no one seems to know why. If I remember correctly, I found numerous complaints and workarounds scattered across the Internet, including this thread at forums.oracle.com, as well as this one and this one. One of the most helpful threads can be found here. One workaround mentioned was to make sure that the Workstation service was already started, but mine already was. I believe another user reported success with setting a static IP address, but this was not an option for me. Someone suggested cleaning out Temp files before re-running Setup, but deleting almost everything in Windows/Temp, AppData/Temp and Temporary Internet Files had no effect on my machine. Another solution mentioned was to make sure that none of the Oracle directories had spaces in their names, so I next tried installing to simple paths like C:\Oracle or E:\Oracle to no avail. This document says an administrative share on the C: drive might help, but I have sharing and administrative shares disabled as a matter of policy; if SQL Server can operate fine on Windows without them, Oracle ought to as well. That is, unless Oracle simply isn’t as capable at developing software for the Windows platform, which I strongly began to suspect from the very fact that the company hasn’t really made much effort to fix this common problem, which may arise from multiple and completely unrelated underlying causes. For example user13254607 at this thread identified a completely different, innocuous cause that could have been prevented by proper validation in the setup program: “I was using a password for all system accounts with @ i changed that to be without the @ and it worked…It took me 10 hours to fond the problem.”
At this point, I began to suspect that if I put Oracle databases into a live production environment, I might be spending more than ten hours trying to figure out why other aspects of their software didn’t work as advertised. Setup programs can be tricky to write, but they’re not in the same league as databases servers, which may be among the most complicated contraptions ever devised by mankind; if they have this kind of quality control problems with their installation software, then their locking, indexes and other database server functionality might have far more costly glitches. By now, I just wanted to be done with it. I still suspect that in my case it was some sort of permissions error, since it was unable to perform the checks, plus the hs_err_pid1376.log in AppData/Local/Temp revealed an “EXCEPTION_ACCESS_VIOLATION in the Java Hot Spot Virtual Machine” at the time of the last installation, plus the installer never got to the point of creating the Oracle directories. On the other hand, the sprvmcli_591562936.log listed many named pipes errors, including repeated references to “None-pipe-busy error 53.”
I am certain that there is a solution to the issue, but it’s a matter of how long it takes to fix it. Getting the software installed wasn’t a critical issue for me and by now, I had probably spent at least ten hours total on it, like user13254607. I originally intended to get some surface impressions of Oracle and I had succeeded, in a strange way, of learning all I needed to know: I would have been better off investing those ten hours learning more about SSAS. The installer degraded awkwardly and had numerous glitches, one of which was frustrating Oracle users all over the planet thanks to a smorgasbord of causes, yet the company didn’t sem to care. My laundry list of complaints is a lot shorter than with DB2 only because its competitor at least allowed me to evaluate part of the software, but with Oracle I never even got to that point. What this tells me is that neither IBM or Oracle is seriously devoted to the Windows platform – and if I’m running Windows, you’re not touching my system; I went in with an open mind hoping to learn much in a short period of time, but what I took away was a greater appreciation for SQL Server. I was able to install much earlier versions of both Oracle and DB2 years ago when I had far less experience, which also tells me that both companies are paying less attention to things like manageability and usability that are underappreciated today and are only going to become more important in the future, with the coming data explosion. Somewhere in the dim past I read a report that said programmers waste about 40 percent of their time fixing software and hardware problems on their own machines than on writing code and developers are certainly sometimes at fault for those problems, as I have been on numerous occasions. On the other hand, a lot of that is due to poor design of the components that developers depend on, which is getting better in some areas but worse in others; a case in point is the documentation for Visual Studio, which seems to have gotten poorer with every iteration since the days of Visual Basic 6.0. That problem pales in comparison with what I saw with the current versions of DB2 and Oracle, which sometimes aren’t even usable at all, at least on a Windows platform. All of the benchmark tests in the world are meaningless if you can’t get the database server up and running; like an Olympic runner who can’t tie his shoes, Oracle and DB2 may be fast, but they would be badly beaten by SQL Server if setup time were included. And if the runner can’t come to the track with his shoes tied, how’s he going to tie them in a hurry during a race if they come undone? I suspect that if it’s this hard to get Oracle and DB2 running, it will be equally hard to keep them that way; I never got to find out the hard way, but I suspect that they would be nightmares to maintain due to undiscovered glitches. I am sure Oracle and DB2 gurus could point out many great features of both products, but the point is that I can’t discover them as easily as I ought to thanks to obvious software bugs. The point is not that I’m an experienced user giving an expert opinion, but that I’m a Oracle and DB2 novice who can’t easily find the information I need to know to operate the software. Some may say my opinion is due to a personal appreciation for SQL Server, but I have no attachment to it; if Oracle or DB2 were as easy to use, there’s nothing preventing me from jumping ship. Someone may say that this is all due to a lack of troubleshooting skills on my part, but I’ve never had this much trouble with a SQL Server installation, even when I was a complete novice back in the days of SQL Server 7 and 2000. I once had an embarrassing disaster with a SQL Server 2008 install which I traced back to a faulty DVD drive, which kept spinning down half-way through the process and producing fatal errors that forced me to re-run Setup many times, but that could be fixed. I had a much easier time installing SQL Server 2012 Release Candidate 0 than on any previous SQL Server installation, as I discussed in a previous post.
Maybe when the next versions of Oracle and DB2 come out I’ll give them another try, but for now they’ve dropped very far down on my priority lists. Perhaps I may even try the current Oracle installer again on my backup development machine, which has administrative shares but currently lacks a power supply. In the mean time, I will have the RTM version of SQL Server 2012 installed in early May and will post next on whether or not Microsoft fixed any of the errors mentioned in my series of posts titled An Informal Compendium of SSAS Errors. If not, I suppose that would be gaffe in the same league as Oracle and DB2’s installer errors, one that would show a lack of commitment to SSAS. Even if that turns out to be the case, however, I strongly suspect I will like the new windowing and statistical functions in T-SQL, which I may also post on in the future. I envisioned my last two posts as glowing, helpful accounts of all the positive aspects of DB2 and Oracle, but if I can’t find any good news to report from SQL Server’s competitors, I know now that I can at least count on finding some in SQL Server.