Top 60 Oracle Blogs

Recent comments

March 2013

Register to IOUG COLLABORATE 13 and Get an Hour of My Time

class="l-submain-h g-html i-cf">

Spring is a very active conference season for me. I might be going to half a dozen conferences in 3-4 months. That’s a lot of travel, but I look forward to all of them. The conference I’m probably looking forward to the most this year is IOUG COLLABORATE. It might be because:

Webinar - Back to the Future: Oracle SQL Performance Firefighting using AWR

It's webinar time again! On March 26, Embarcadero will once again provide sponsorship for my webinar entitled "Back to the Future: Mining AWR Data for Oracle SQL Performance".


Total Cost of Ownership (TCO) : The clue is in the name!

When you read the term “Total Cost of Ownership” (TCO), the word “Total” is pretty important!

Here is a paraphrased conversation I had recently…

  • Person: Product X is free!
  • Myself and others: The staff training costs to enable the long term support of product X, are not free though. Added to that, these people still have to support products Y and Z, so you are adding to their workload. You might even have to add people to the existing team, so the TCO may be far from free.
  • Person: But the product is free!

You can see where this is going. :)

Not all Deadlocks are created the same

I've blogged about deadlocks in Oracle at least once before. I said then that although the following message in deadlock trace files is usually true, it isn't always.

The following deadlock is not an Oracle error. Deadlocks of  
this type can be expected if certain SQL statements are      
issued. The following information may aid in determining the 
cause of the deadlock.

So when I came across another example recently, it seemed worth a quick blog post. Not least for the benefit of other souls who hit the same issue (and probably hit Google moments later).

But while it's easy to say - "Hey! Look! I found an exception! Aren't I clever?" - it occurred to me that actually Oracle's capabilities in this area might be underrated by raising the occasional anomaly. Because the truth is

God Emperor of Dune…

God Emperor of Dune is the fourth book in the Dune series by Frank Herbert.

After the randomness of the previous book, this fourth one was a lot more on-the-money. There are a number of scenes in the book I really hooked into, including one I blogged about a few days ago. It’s far from perfect, but it kept me interested. Probably the worst part of the book was then ending, which was rather lackluster.

I’m looking forward to see if this direction continues into the next book.



Bitten by a Virtual Column, _OPTIMIZER_IGNORE_HINTS Doesn’t Ignore Hints?

March 9, 2013 I had a couple of spare minutes today, so I tried a couple of experiments with Oracle Database just to see if I could produce some unexpected results. First, I will create a simple database table with two indexes: CREATE TABLE T1 (   N1 NUMBER,   V1 VARCHAR2(20),   D1 […]

Virtual DB

I’m heading off to Heathrow airport later on today to fly out to San Francisco for my week of  experimenting with Delphix. I’ve done a little preparation work, of course, including browsing around the Internet to read about related technologies. Some of the material I found was very interesting, so I thought I’d go publish a few of the links that might be useful to other people.

It’s quite surprising to see how long the necessary core technology has been around; and yet there seems to have been minimal follow-up on the possibilities the technology  makes available – perhaps because of the specific  hardware, or special skills needed to put put together a working solution.

Friday Philosophy – Level of Presentations

This FF is a bit of a follow-up to the one I posted last week on PL/SQL skills and a comment made by Noons on how much knowledge you need to be an OakTable member.

I have a question to answer and I would appreciate other people’s opinion. Should there be more intro talks at conferences? If so, should the experts be giving them?

The materialized view approach for implementing a table constraint

In yesterdays post I announced that I'd spent a separate post on how we can use materialized views to enforce table constraints. So here goes.

The high-level cookbook for this approach is as follows:

  1. We create a materialized view that refreshes on commit,
  2. The materialized view is defined in such a manner that it will hold no rows when the table constraint is adhered to by the current transaction trying to commit,
  3. And it is defined such that it will hold (at least) one row when the table constraint is violated by the current transaction trying to commit,
  4. We devise a construct such that on-commit refresh of the materialized view *always* fails whenever (at least) one row is materialized in the view. This can be done in two manners:
    1) we add a check constraint on the underlying table of the materialized view that always fails, or

When unused – isn’t.

So we recently reviewed a table with no fewer than 23 indexes on it. A combination of alter index… monitoring usage and reviewing DBMS_HIST_SQL_PLAN for plans that referenced the indexes found 8 indexes that were never used. As this table is also heavily updated we removed the indexes identified as unused. This was, fortunately, a […]