In the final part of this series I want to cover one last source of Parallel Execution Skew: Skew caused by Outer Joins. If you have Outer Joins where the majority of foreign key values is NULL, this can lead to the following symptoms: From a processing point of view for a parallel outer join, the NULL value in the foreign… Continue Reading →

10g, 11g, 12c, All Things Oracle Full Articles, Database Administration, Database Development, Oracle Database, Performance Tuning, Troubleshooting

When we examine an execution plan, we’re usually trying to work out the mechanical steps that Oracle took to produce a result set. When we do this, it’s important to remember that the text that Oracle optimized wasn’t necessarily the same as the statement we originally wrote. Oracle may have transformed our statement before passing it through the optimization engine…. Continue Reading →

All Things Oracle Full Articles, Database Administration, PL/SQL

Oracle Database 12c is designed for the cloud and introduces Multitenant Architecture with more than 500 new features. It enables customers to make more efficient use of their resources and reduce IT costs. What is Multitenant Architecture? Oracle 12c now introduces multitenant architecture featuring pluggable databases, which makes it easy to consolidate your databases on to the cloud, deliver high… Continue Reading →

12c, All Things Oracle Full Articles, Database Administration, Oracle Database

A wise man once said, I know one thing: that I know nothing. If you’ve followed this series from the very beginning I am hoping that you’ve gone from knowing absolutely nothing about Oracle database programming to this point where you know the foundations, know how the parts fit together – basically, know enough to know that there’s a whole… Continue Reading →

All Things Oracle Full Articles, Database Development

In this part of the series we will have a look at different approaches to how Parallel Execution Skew can be addressed via manual re-writes of an affected query. Let’s have a look at a couple of options. Approach 1: Mimic the new 12c skew aware feature Looking at the new 12c special skew aware distribution feature that I’ve introduced… Continue Reading →

10g, 11g, 12c, All Things Oracle Full Articles, Oracle Database, Performance Tuning, Troubleshooting

In part 5 of this series we examined a couple of examples where you had to handle the “first child first” rule with a little care. In part 6 we continue this exploration to look at a general principle – the “pushed subquery” – where the “first child first” could lead you to the wrong conclusion. Access or Filter If… Continue Reading →

All Things Oracle Full Articles, Database Administration, Database Development

A wise man once said: start at the beginning and go on till you come to the end: then stop. We’ve done things a little differently; all this time we’ve been talking about examining and manipulating the data in our tables, but we have never paused to consider where these tables come from, or discuss how they are created.  Time… Continue Reading →

All Things Oracle Full Articles, Database Development

I’ve offered up “first child first, recursive descent” as a basic strategy for interpreting execution plans – but it’s not a perfect rule, and it can be easy to lose track of what’s going on even when the basic “first child first” is being obeyed. In this article we’ll be looking at a couple of examples where we will still… Continue Reading →

12c, All Things Oracle Full Articles, Database Administration, Oracle Database

Since Parallel Execution Skew is a common problem that can severely limit the scalability of Parallel Execution (see my previous article for a demonstration), Oracle has introduced a new feature in 12c that can address the problem automatically. That’s great, but unfortunately – at least in the initial 12c release – it only applies to a limited number of scenarios,… Continue Reading →

12c, All Things Oracle Full Articles, Oracle Database, Performance Tuning, Troubleshooting

In part 3 of this series we used a simple hash join to introduce the a simple guideline for reading execution plans – the “first child first, recursive descent” method. This allowed us to work out the order in which Oracle produced rowsources and (implicitly) the order in which it visited the different physical objects in the query. At the… Continue Reading →

All Things Oracle Full Articles, Oracle Database, Performance Tuning