Exadata 18 available

Yes, that great news for all Exadata guys.

The documentation is also updated. So please check first the Maintenance Guide.

Oracle Exadata Database Machine Maintenance Guide.

Have fun :-)


The English Language

I wrote this post quite a while ago and it stayed as draft since. A few days ago, during Oracle Open World 2017, I had a long chat with Jim Czuprynski and somehow we got to talking about the English language. As you well know by now, I’m not a native English speaker, but Jim … Continue reading The English Language


Here’s a quick quiz.

According to the Oracle 12.1 Database SQL Tuning Guide the first stage of parsing a statement is the Syntax Check, which is followed by the Semantic Check, followed by the Shared Pool Check. So where you do think the statement text will be while the Syntax Check is going on ?



Snapshots from OpenWorld so far

Bridge Run on Saturday






Swim in the bay on Monday




And the technical content begins !






How can a single piece of SQL text – checked very carefully – end up with multiple SQL_IDs ? There are probably quite a lot of people who know the answer to this question but won’t think of it until they’re reminded and, thanks to a question that came up on the forum formerly known as OTN a couple of days ago, I was reminded about it recently and rediscovered an article I had drafted (more...)

PL/SQL functions: Iterate and keys for associative arrays

Unfortunately associative arrays still require more “coding”:
we still can’t use “indices of” or “values of” in simple FOR(though they are available for FORALL for a long time), don’t have convinient iterators and even function to get all keys…
That’s why I want to show my templates for such things like iterator and keys function. You can adopt these functions and create them on schema level.

   type numbers  is table of number;
   type anumbers  (more...)

CIDR for Dummies DBA in Cloud

For DBAs of Cloud, its imperative to learn various networking concepts and CIDR is one of them. Without going into much detail, I will just post here quick note as what CIDR is and how to use it.

A CIDR looks something like this:

The represents range of IP addresses, and no its NOT from to Here is what (more...)

Oracle Tidbits – September 2017 #oratidbit

“Oracle *daily* TidBits” (#oratidbit) published on Facebook, Twitter, and Google+ during weekdays in September 2017. You will also see these tidbits, one tidbit at a time, for each page refresh on the right side of this blog as well… Hope you find these helpful to learn something new or to remind you of its existence and use. […]

Performance Analysis of a CPU-Intensive Workload in Apache Spark

Topic: This post is about techniques and tools for measuring and understanding CPU-bound and memory-bound workloads in Apache Spark. You will find examples applied to studying a simple workload consisting of reading Apache Parquet files into a Spark DataFrame.

Why are the topics discussed here relevant

Many workloads for data processing on modern distributed computing architectures are often CPU-bound. Typical servers underlying current data platforms have a large and increasing amount of RAM and (more...)

Oaktable World 2017 @ Oracle Open World



The Oak Table members will be discussing their latest technical obsessions and research on Monday and Tuesday, (Oct. 2nd and 3rd, 2017).  The truth is, folks-  The Oak Table experts are an AWESOME group, (if I don’t say so myself! :)) as we could have easily done another day of incredible sessions, but alas, two days is all we have available for this year’s event.


Screen Shot 2017-09-29 at 11.10.53 AM

Screen Shot 2017-09-29 at 11.11.04 AM

My OpenWorld theme song

(With apologies to any Simon & Garfunkel fans out there)

Hello jetlag my old friend,
You’ve come to mess with me again.
The bedside clock is stuck on 10 to 4
And my eyes are just so bloody sore.

The decision to get on that frickin’ plane.
Was just insane.

Suffering …. my jetlag in silence


A few gin and tonics tonight and I might even put it to musicSmile

How to group connected elements (or pairs)

I see quite often when developers ask questions about connected components:

Table “MESSAGES” contains fields “SENDER” and “RECIPIENT”, which store clients id.
How to quickly get all groups of clients who are connected even through other clients if the table has X million rows?
So for this table, there should be 4 groups:
  • (1, 2, 4, 8, 16)
  • (3, 6, 12)
  • (5, 10, 20)
  • (7, 14)
  • (9, 18)
3 (more...)

Multiple smtp relay send accounts for office365

This is a follow up on this post here about smtp and office365 - after some more investigation i've made some further changes as our use case changed slightly and the original solution didn't fit.

Originally we just needed to be able to send all emails originating from a single account and we had some postfix config that would do that.

Now however we want to be able to send smtp messages out from multiple (more...)

Performance Analysis of a CPU-Intensive Workload in Apache Spark

Topic: This post is about techniques and tools for measuring and understanding CPU-bound and memory-bound workloads in Apache Spark. You will find examples applied to studying a simple workload consisting of reading Apache Parquet files into a Spark DataFrame.


Delete large amounts of data on Galera Cluster using pt-archiver

Galera Cluster is excellent virtually synchronous multi-master database cluster. It has many benefits which you can check on GaleraCluster.
But beside benefits it has some limitations and one of them is handling large transactions.

Large replication data sets could degrade performance of whole cluster causing cluster freezing, increased memory consumption, crashing nodes, etc. To avoid this issues it is recommended to split large transactions into smaller chunks.

In this post I want to show you (more...)

The devastating death PC emoji of doom

So there I am.  Sitting at Perth airport.  My flight from Perth to Sydney, the first leg on my trip to OpenWorld 2017 is delayed.  Of course, delays are not unusual and do not normally bother me.  Because I can just flip open my laptop, knock off a few AskTOM questions while I wait.

But not this time.  I press the Power button and I get this:

Image result for windows 10 collectin memory dump

That is the (more...)

Ampersand instead of colon for bind variables

I’ve troubleshooted one query today and I was very surprised that bind variables in this query were specified with &ampersand instead of :colon! I have never seen this before and I couldn’t find anything about this in documentation…
Unfortunately SQL*Plus doesn’t support ampersand yet, even if you disable define (“set define off”),
so I’ve tested such behaviour with this code:

set def off serverout on
exec declare s varchar2(1); begin execute immediate 'select  (more...)

Optimize Oracle response times with Cary Millsap using Method R

Came across this interesting logical method of Oracle Database Tuning called as Method R, created by Cary Millsap (pictured), a performance tuning expert and an Oracle veteran. If you want to learn more about Method R, you can attend the webinar below. The following information is from Cintra where Cary is currently a Vice President.


Date: Wednesday 27th September 2017

Time: 11:00 (EDT) and 16:00 (BST) 
Duration: 30 minutes + 15 minutes Q&A
Location: (more...)

Install Oracle’s VirtualBox

If you don’t have the luxury of having a server ready available but you want to do some research and development or training on Oracle, then Oracle’s VirtualBox is a perfect solution.


To be able to use VirtualBox, you need to disable Hyper-V as it blocks all other Hyper Visors from calling VT hardware.  See my post blog on how to do this:
Disabling Microsoft’s Hyper-V to use Oracle’s VirtualBox


You can download (more...)

Activating and Deactivating Performance Feedback

Performance feedback is one of the adaptive query optimizer features introduced in Oracle Database 12c. The aim of this short post isn’t to explain how it works, but to simply warn you about a buggy behavior in its configuration.

The parameters that control performance feedback are the following:

  • OPTIMIZER_ADAPTIVE_FEATURES (12.1 only): if set to TRUE (default), performance feedback is enabled. Otherwise, it is disabled.
  • OPTIMIZER_ADAPTIVE_STATISTICS (12.1 with patch 22652097, and 12.2): if (more...)