December 2015

The art of describing a problem

Now that I’ve been answering AskTom questions for a while, there is obviously a huge amount of variety in the topics and the problems that people are encountering.  And it always feels good when I can help those people.  Chris and I don’t always manage to solve everyone’s problem (sometimes we just have to say “Get in touch with Support”) but I think we’ve got a pretty good hit ratio Smile  [For those unaware, we don’t publish every single question/answer – we answer a lot more than what you just see on the page]

Exponential Moving Averages, Histograms and Gauges

Had a couple of extra minutes today, so I thought about if I could add something to the lightweight monitoring that I created earlier last month. One of things I really wanted, was to add exponential moving average. Moving averages, are normally a little better indicator of the overall performance, as a normal average tends to hide momentary bumps, that you might want to investigate.

Another thing that could be useful, was a histogram over the call times. A histogram, is good way of showing the distribution of calls, which will also show us, the amount of outliers that are there. Outliers can be hidden in averages, so having something to flag this, is a good thing.

Friday Philosophy – Inspirational Tweets: Why Do They Annoy Me so Much?

A few weeks ago I saw this on the Twit Sphere:

A comfort zone is a beautiful place, but nothing ever grows there.

Wow. Deep. Meaningful. Let me follow that twitter account.

No. Let me not. I looked at the account and it was just an endless stream of “Inspirational Tweets” and very little comment or content. For some reason I can’t quite understand, this sort of thing gets on my nerves. No, that’s is not strong enough. It makes me unreasonably bad-tempered and angry. The first draft I wrote on this topic was a ranting diatribe of swear-words and invective {I love that word} that was completely beyond acceptable.

Presentations & People, Friends & Fun, Whisky & Wet Laptops – UKOUG Tech15

Whisky?
Wet laptops?
I’ll get to them…

The UKOUG Tech15 conference ran earlier this week, from Super Sunday on the 6th through to the final sessions finishing at 16:20 on Wednesday 9th. In fact, I see on twitter that some people kept the fun going into Wednesday evening. I have to admit up-front my personal Bias – I was the database lead for the volunteers doing content and agenda planning. If you did not like anything about the Database stream content or how it was organised, please blame me and PLEASE either let me know direct or the UKOUG office. We can only try improve to things if we know they need improving.

[Oracle] Understanding the Oracle code instrumentation (wait interface) - A deep dive into what is really measured

Introduction

This blog post is inspired by a question from an attendee of Sigrid Keydana's DOAG 2015 conference session called "Raising the fetchsize, good or bad? Exploring memory management in Oracle JDBC 12c". Basically it was a question about what the wait event "SQL*Net more data to client" represents and what it really measures. In general you may use the following steps, if you don't know what a particular wait event means:

Upgrades

One of the questions that came up at the Optimizer Round Table this year was about minimizing the performance-related** hassle of upgrading from 11g to 12c. Dealing with changes in the optimizer is always an an interesting problem but in 12c this is made more challenging because of the automatic dynamic sampling that can introduce a significant amount of extra work at (hard) parse time, then generate SQL Directives, and finally generate extended (column group) statistics the next time you (or the automatic job) collect stats.

UKOUG Tech15 : Wednesday

ukoug-tech15-speakerToday was a full day at UKOUG Tech15. Yay!

Zahid Anwar rescued my laptop charger, and left it at the Version 1 stand for me to pick up. Thanks guys!

My first session was at 10:00, which was called Pluggable Databases: What They Will Break & Why You Should Use Them Anyway! I like giving this presentation and the crowd seemed to respond really well to it. Maybe I’ve converted a few people? Quote of the day must go to Jonathan Lewis who said,

12c Scalar Subquery

Every version of the optimizer enhances existing mechanisms and introduces new features and 12c has introduced some of the most sophisticated transformation to date; in this note I want to demonstrate an enhancement to subquery unnesting that could give a significant performance boost to a certain query pattern but which might, unfortunately, result in worse performance.

Historically subquery unnesting turned subqueries (correlated or not) in the where clause into joins. In 12c subquery unnesting can also turn scalar subqueries in the select list into joins – we’ll discuss why this could be a good thing but might occasionally be a bad thing later on in the article, but let’s start with a test case.

Sample data.

In my demonstration I’m going to use three tables which, for convenience, are three clones of the same data.

Highlights from UKOUG

As my train whizzes past Conventry, *and* has wifi, it seems a good time to reflect on this years conference.

I’ve always loved this conference.  I lived in the UK from 1998 to 2003, and a RDBMS SIG meeting was my first foray into presenting on an Oracle topic.  At the time, I thought I’d be relocating back to Australia shortly thereafter, so it granted me plenty of leeway for profanity, props and being loose with what I said :-)

But that set the ball rolling on my love of sharing information with an audience (and whats more, an audience that had a genuine keenness to learn new skills).  I was the fortunate enough for a few years to be funded by the Ace Director program to come to the Birmingham conference.  But ultimately that came to an end, and the several thousand dollar cost of coming to the UK from Perth meant that I had to give up the conference.

PLSQL, syslog and the story of Bolas spiders

So I am setting up a server for a bigger project that I'm playing with at the moment, and I wanted a quick and easy correlated way of logging messages/errors locally on the machine as well as using my airbrake utility. So I wanted all my components to write to the syslog on the linux server I'm setting up, even my database.

So the very first thing you want to read, whenever you want to implement any protocol/service/functionality, is the RFC if one exists. Syslog RFC number is 3164.