Search

Top 60 Oracle Blogs

Recent comments

June 2015

Optimizer curiosity in 12.1.0.2

For almost as long as I can remember, the optimizer has had a nifty little trick when you (in effect) try to combine two different usage models within a single SQL.  To explain that, I’m referring to the common scenario of: "If a bind value is provided by the caller, then use it, otherwise it shouldn’t limit the result set.  So we commonly see queries like:

select *
from MY_TABLE
where COL1 = NVL(:mybindvar, COL1)

[For ease of discussion, we’ll assume COL1 is not nullable]

Anyway, the nice little optimizer trick was to optimize the query to handle the two separate use cases, so you see a CONCATENATION step in the execution plan, and two FILTER’s, one to handle the case when the bind variable is null, and one to handle the case where it is provided. 

Site maintenance and how to manage changing URLs

DiagnosticsAfter my recent rants about Oracle changing URLs and breaking stuff, I’ve actually done some changes myself. :)

From time to time change is forced on internet content producers. This might be because of platform changes, or changes in the way search engines behave. The important thing is how you handle that change.

EM 12.1.0.5 has been announced!

The latest version of Enterprise Manager, EM 12.1.0.5, has been announced! The announcement can be seen here. Obviously, there will be a number of posts that come out about it over the next few weeks, so I’ll add this post here as a quick notification and will update it with links to more information as it becomes available.

Technical Articles

Managing the Hybrid Cloud with Oracle Enterprise Manager – Demo
A First Technical Look At Hybrid Cloning in EM12c Release 5

OT: How to interview an Oracle DBA candidate (NOT)

Yesterday T.J. wrote on the Oracle-L mailing list : “ For those of you who have conducted job interviews, what sort of questions have you found to be effective in evaluating a candidate’s skill level?”
I remember the interview at which I could not answer the question “how do you enable block change tracking in a database?” (The answer is “ALTER DATABASE ENABLE BLOCK CHANGE TRACKING.”)
I remember the time when I could not get hired at Google because...(read more)

Cross-platform database migration

Last weekend, we faced one of the larger challenges that we’ve faced in my time at my current client.  Migrate multiple database systems, across multiples sites, all to new hardware (with new endian format), new database version (12.1.0.2)…and of course, try to do it with as small a disruption to the service as possible.

We are not a Goldengate customer, so pursuing a zero-downtime migration was not considered, and to be honest, even we had such facilities at our disposal, I think we would still have taken a small outage just to allow a "quiet time" to do verification checks etc.

Friday Philosophy – Flippin’ Technology

Sometimes I think I would have been a Luddite or a member of other groups who have trashed new technology in frustration. Some days, I can just scream at it. You would think having worked in Information Technology for so long would make me more of a fan, but it actually makes me worse – as I know there is no need for there to be so much wrong with the electronic dross we all have to deal with day-to-day. And if I, someone who has used (heck, even programmed) computers for 3 decades, have trouble with these damned things, how frustrating must “normal” people find it?

Docker on Oracle Linux

As a reminder for myself and for those who might have missed the info. Here…

Oracle Documentation URLs : What I would like to see!

Broken-LinkAfter my recent rant about broken URLs, I thought it would be sensible to say something a little more constructive, so this is what I would do if I were asked to structure the documentation. Other opinions are valid. :)

Base URL: I’m assuming the base URL for the database documentation will never change again from it’s current value.

Predicate Order

A recent OTN post demonstrated a very important point about looking at execution plans – especially when you don’t use the right data types. The question was:

We’ve this query which throws invalid number

SELECT * FROM table A
WHERE A.corporate_id IN (59375,54387) AND TRUNC(created_dt) BETWEEN '19-DEC-14' AND '25-DEC-14';

However it works fine if we use not in instead of in

SELECT * FROM table A  
WHERE A.corporate_id  NOT IN (59375,54387) AND TRUNC(created_dt) BETWEEN '19-DEC-14' AND '25-DEC-14';

Please assist.

Databases Running in the Cloud

cloudI’ve been playing around with running databases in the cloud recently. It’s quite simplistic stuff, just to get a feel for it and investigate the possibilities of using it for some projects at work. Here’s what I’ve got so far.