Who's online

There are currently 0 users and 23 guests online.

Recent comments


Result Cache 2

Following on from my earlier posting of problems with temporary table and the PL/SQL result cache (a combination which the manuals warn you against) here’s another problem – again, to a large degree, self-inflicted.

Imagine you have a complex report involving a large number of financial transactions with a need to include calculations about current exchange rates. Unfortunately the rules about calculating the appropriate exchange rate for any transaction are complex and you find you have a choice between adding 6 tables with outer joins and a couple of aggregate (max) subqueries to the base query or calling a PL/SQL function to calculate the exchange rate for each row. I’m going to create an extremely simplified model of this requirement:

OOW2015 Middleware Management

This posting covers the Middleware Management sessions at OOW2015. Note that these are middleware management via Enterprise Manager, as opposed to sessions specifically covering middleware features and functions. Also, I have not duplicated here sessions I have already documented under Oracle Management Cloud or Private Cloud / DBLM, so please visit those posts for sessions that fall under both categories. The following sessions fall under this category:

OOW2015 Database Manageability

This posting covers the Database Manageability sessions at OOW2015. Note that these are database manageability via Enterprise Manager, as opposed to sessions specifically covering database features and functions. The following sessions fall under this category:

OOW2015 Private Cloud and DBLM

Yesterday I posted an entry on what was coming with OOW2015, specifically discussing the Oracle Management Cloud sessions. This post is similar but looking at one of the more “traditional” EM areas that my team is responsible for – Private Cloud and DBLM. The sessions that are of most interest here are:


Here’s a little note that I drafted (according to its date stamp) in January 2013 and then forgot to post. (Which adds a little irony to the title.)


Here’s an object lesson in (a) looking at what’s in front of you, and (b) how hard it is to remember all the details.

I ran a script today [ED: i.e. some time early Jan 2013] that I’ve have no problems with in earlier versions of Oracle, but today I was running it against for the first time, and hit a problem with autotrace:

Controlling Execution Plans Workshop

I did a workshop at ECO 2015 today. It was a lot of fun. I’ve done numerous presentations on SQL Profiles, SQL Patches and Baselines in the past, but this session was a no-slides, hands on demo of some of the scripts I use. I also showed some scripts that can be used to re-write SQL on the fly using a new feature of 12c called SQL Translation Framework. Here is a zip file that contains all the scripts and the Controlling Executions Plans presentation that I mentioned during the workshop.

Controlling Execution Plans Workshop Zip File

” ”


OOW2015 is almost here!

Hard as it is to believe, yet again it is time for the biggest Oracle conference on the planet (or any other planet for that matter!) Yes, OOW2015 is just around the corner! Unfortunately I won’t be there this year, as I have my eldest daughter’s wedding shortly after it, but nevertheless having seen what’s coming up from the Enterprise Manager side of the house, there are a few sessions I can certainly recommend.

Result Cache

Yesterday I thought I’d spend half an hour before breakfast creating a little demonstration of a feature; some time about midnight I felt it was time to stop because I’d spent enough time chasing around a couple of bugs that produced wrong results in a variety of ways. Today’s short post is just little warning: be VERY careful what you do with the PL/SQL result cache – if you use the results of database queries in the cache you may end up with inconsistent results in your application. Here’s one very simple example of what can go wrong, starting with a little script:

RAM is the new disk – and how to measure its performance – Part 2 – Tools

In the previous article I explained that the main requirement for high-speed in-memory data scanning is column-oriented storage format for in-memory data. SIMD instruction processing is just icing on the cake. Let’s dig deeper. This is a long post, you’ve been warned.

Test Environment

I will cover full test results in the next article in this series. First, let’s look into the test setup, environment and what tools I used for peeking inside CPU hardware.

I was running the tests on a relatively old machine with 2 CPU sockets, with 6-core CPUs in each socket (2s12c24t):

Oracle 12c RAC on Oracle Linux 7 using VirtualBox

virtualbox I’m a little late to the party here, but I’ve finally got round to updating the VirtualBox 12c RAC article for Oracle Linux 7.

It’s not hard to do these VirtualBox RAC installations, but I find the process of putting the articles together really tedious. There are so many screenshots. That’s why it’s taken a while to build up the motivation to do it. :)