OptimalDBA
Thursday, November 12, 2009
Cost n Kewl R Crap!
Is cost reduction a customer focused motivator for IT?
I am not saying that cost reduction should not be ignored. If you can deliver the same or better service/product at a lower price, that is likely to improve customer satisfaction and experience. But should cost reduction be touted as the primary reason for change?
And 'kewlness' is NEVER a reason for change. I see too many sites/projects that try to use the latest and greatest technology for the kewlness factor. And the user satisfaction plummets.
The prime motivator for change should be 'this change improves the customer experience'. Are there features in 11g (or 10g or 9i) that will improve the end user experience? Absolutely! Better performance, increased uptime, stability, consistency are all possible benefits from an upgrade. These factors should be placed foremost in the reasons to upgrade list as they usually have a direct impact on the customer experience and user satisfaction.
For every new feature, you need to ask "Will my customers/users benefit from this feature?" If the answer is yes, then you have a reason to upgrade, if the answer is no...then move on to the next feature.
Monday, November 09, 2009
It's a mess...but it's no a surprise
I don't think that the problems come as a surprise to many, though I think the extent of the problems are unexpected. For some months, there has been a lot of grumbling about the new, Flash-based My Oracle Support, single sign on and frozen accounts.
Is this "fiasco" any different from many of the projects we have worked on in IT? I think it is actually fairly typical, though it is certainly higher profile than most others. We all could make a list of close to 100 projects, upgrades, systems that we know of (publicly or privately) that have experienced severe failures that were entirely predictable and thus preventable. Why does this continue to happen?
I won't rehash "We are IT! We are Devo!". I wrote this almost 2 years ago and I don't see any positive changes.
I'm reminded of a skit, which I am hoping I remember correctly, from the Carol Burnett Show (one of my all time favorites). Harvey Korman was trying to make a plane flight and Tim Conway was the ticket agent. All Harvey wants is a ticket, but Tim insists on over complicating the transaction, opening a briefcase, causing all sorts of problems. It is a funny skit (not as funny as the Dentist), but it also shows how overcomplication can lead to frustration.
Here's what we need to be doing...
- Focus on the customer task. I've spent a lot of time working with end users and the resounding sentiment is that they just want to get their work done in a timely manner. Poor performance, complicated processes, obfuscated interfaces waste time and frustrate people. When going about their daily business, they want simple and effective. I don't need a multimedia interface to enter in text about an Oracle error or outage. I should be able to answer a few questions (version, tool, etc.) and upload related files. Simple and effective.
- Users don't care about LGT (Latest Greatest Thing). Ask a user if you should program the interface in Java, HTML, Cobol, Assembler, Flash...they won't care. They want to get the task done in the shortest amount of time while not sacrificing data integrity or system stability. What is the simplest, most stable and best performing technology choice for a given application? If you are developing base on 'coolness factor' you are not helping your users or customers. Remember the adage "If it ain't broke, don't fix it!"
- Listen to the Negative Nellys. If you have a limited roll out and people are not moving to the new system, you need to find out why. If there is a lot of online grumbling about the new system, that is your canary in the coal mine. Convince the critic that this is actually the best system/option; convincing a "Yes Man" is meaningless. I can attest to the success of this approach when I was part of team that deployed a new system with near perfect uptime, in part due to the attitude of the project manager being open to critical thinking. I was also part of a release meeting where the sentiment was universally opposed to going live...until the Vice President walked in and asked if there were any issues that might prevent the release. The silence was deafening. The release was an unmitigated disaster.
Because it works, works well and enables me to get my work done.
And that's all I really need...
Monday, October 12, 2009
SQL Developer 2.1
In the past, I looked at SQL Developer, but found it too slow to load, not applicable to my job and I was just plain happy with SQL*Plus for Windows. Unfortunately, sqlplusw.exe is not shipped with Oracle 11g and I am also migrating to Linux (Ubuntu to be exact), so it was time to take another look at SQL Developer.
Other than the output formatting, it can do everything I need for a sqlplusw replacement. I like the ability to save connections and that I can easily run scripts that I have written for sqlplus.
Here are some of the highlights (at least from a command line DBA's perspective)
- It starts in a reasonable amount of time (less than 30 seconds on an old, slow almost 4 year old laptop). This was one of my biggest complaints about the older versions.
- The supplied Database Reports (under Data Dictionary category) are almost Enterprise Manager Lite. Not a replacement for OEM or GC, but it is nice to have session, wait, ASH/AWR reports handy.
Minor annoyances
- Some sql*plus formatting commands, specifically COLUMN, are listed as being supported, but seem to be ignored. These commands should be supported so that output will be consistent between versions and ease the transition.
- If you use TNS option to create a new connection, SQL Developer reads all tnsnames* files in the TNS_ADMIN directory. Oracle's own tools make backups of old tnsnames files and many of us create backups before hand editing, so there are usually a fair number of out of date tnsnames* files in this directory. This results in old tnsnames entries being listed in the options and entries with the same name (but different underlying config info).
- Displaying formatted sql trace files is nice, BUT it does not display the information so that it can be seen and the headings in Statistics View window are blank.
Tuesday, August 04, 2009
Is there anyone here?
Craig Shallahamer asked me to participate in his latest book project, "Oracle Performance Firefighting", as a technical reviewer. It was a great project and excellent book! I strongly recommend it for performance specialists.
Tuesday, June 23, 2009
It's Still All About The Data
A colleague was looking at an execution plan displayed in Oracle Grid Control. Most of the columns (operation, rows, bytes, cost) are either self explanatory or well known. The one that really bothered my colleague was cpu cost for the sort order by operation. The index scan and table look up were measured in the 10s of 1000s, but the sort order by was being measured in 1,000,000s (actually close to 6,000,000). Cost and io cost were less than 20, so the large number really stood out.
What is the unit of measure? According to the documentation for v$sql_plan, the column cpu_cost means "CPU cost of the operation as estimated by the optimizer's cost-based approach". No mention of a unit of measure. And a cpu cost of almost 6,000,000 to sort an expected 12 rows adds 1 to the statement cost.
A number without a unit of measure is just a number.
The second frustration with Grid Control was on the statistics page for a sql statement. I was looking at the top resource consuming user statement and found the information related to executions, cpu time, logical and physical reads, etc. Quite interesting data, but ultimately useless information. The interface fails to provide any temporal context to the numbers.
8,000,000,000 logical reads is certainly impressive, as are 600,000,000 executions. But what is the sampling time frame? An hour, a day, since the last hard parse, since instance startup? Without the relevant time information, the impact of optimization cannot be known.
Temporal context is critical to time relevant numbers.
Sunday, June 21, 2009
It's all about the Data!
Think about a program that warns you about viruses every time you start your computer. The first few times you run your antivirus program and find nothing. After a few reboots, you begin to ignore the warning...only to have it actually report a virus one day. A virus that takes out all your personal data.
If data displayed is inaccurate or irrelevant, people become conditioned to ignore it. If the data is critical, only display it when the situation requires. If the signs go up only when the path is under water or a box displayed only when a virus is actually found, people will pay attention (or at least are more likely to pay attention).
I recently purchased a car after doing research online. Vehix.com is a pretty good site with lots of cars listed and over 30 filtering options (year, number of doors, trim/style). It did not take long for me to figure out the car I wanted, but searching for a 2005 - 2007 Honda Accord Sedan 4 cylinder automatic transmission EX trim level gray fabric interior was not easy. Although each of these conditions could be specified, it was pretty pointless.
The quality of search on Vehix depends on the quality of data input. It is not unusual to find that Unspecified is the most common subcategory. What is the point of a search category if 90% of the data input is useless for filtering?
In looking for a place to stay for my ride in the Courage Classic Cycling Tour, I used VRBO.com. One of the "features" is a calendar indicating if the unit is available or booked. Unfortunately, this information is often incorrect. Not one of the units I inquired about was available for the time I needed, despite the calendar showing it available. In fact, several of the responses indicated that the unit had been booked for several months!
Interfaces are fluff and noise if the underlying data is not accurate and usable.
Wednesday, April 29, 2009
Advert - Online SQL Tuning Workshop
Frustrated with poorly performing SQL? Unsure where to begin the tuning process? Then join Daniel Fink, Oracle performance specialist, for an Online SQL Tuning Workshop. This hands-on course will provide you with the skills necessary to create scalable, high performance SQL-based Oracle applications (proactive SQL tuning). You will also learn how to identify existing high-load, poor performing SQL statements and tune them (reactive SQL tuning). Particular attention is paid to making the best use of Oracle architecture, bench-marking various SQL formulations and identifying the best schema object (e.g. heap table, IOT, etc.) for a given situation. A full description can be found at http://www.skillbuilders.com/instructor-led-training/Course_outlines/oracle-10g-sql-tuning.cfm
This class runs during the afternoons (1:00 PM through 5:00 PM EDT) of Monday May 4th - Friday May 8th. All you need is an internet and audio (phone or VOIP) connection. No travel, reduced time away from work. The class is limited to 6 students. To register, please call Gary at +1-888-803-5607 or email gary@skillbuilders.com. Mention OptimalDBA for a 15% discount for the class.