Tanel Poder’s Hacking Session: How Oracle SQL Plans Are Really Executed – Part 2

Here’s the Part 2 of the Oracle SQL plan execution hacking session (Part 1 is here)!

We’ll use a bit of DTracing to peek inside an Oracle SQL plan execution, plus some other random experiments. You can download the qer_trace.sh script from here. Note that this is not a “How to use DTrace” webinar, you have to learn DTrace yourself to understand (or enhance) this script.


Tanel Poder’s Hacking Session: How Oracle SQL Plans Are Really Executed – Part 1

This is the Part 1 of the hacking session I delivered live.

In this part we’ll talk mostly about how an application talks to the database session when wanting to execute a query (tracing OPI calls, fetch operations etc).

In the Part 2 (which I will upload soon) we’ll drill down inside an execution plan then.


The easiest way to make your query run 6-7x faster on Exadata

Check out this bit from my Exadata speech at the previous Enkitec E4 conference. You don’t see much of my screen output there, but if you attended my Exadata hacking session (or have watched the videos), then you’ll recognize what I’m talking about.

Enjoy! 😉

Tanel Poder’s Exadata Snapper Hacking session videos

Exadata Snapper (also called ExaSnapper or ExaSnap) is a new tool by Tanel Poder, which allows to “peek” into some SQL Execution-related cell metrics without leaving the Oracle database session / sqlplus prompt. The current version 0.7 is a beta version and will likely be much improved and changed once it reaches v1.0.

The tool itself will be downloadable from enkitec.com (will update this post once it’s there).

Here are the videos, split into 3 parts:

  • Part 1 – Introduction
  • Part 2 – Smart Scan and IO activity in the cell
  • Part 3 – Advanced Metrics and Q&A

Part 1 – Introduction

Part 2 – Smart Scan and IO activity in the cell

Part 3 – Advanced Metrics and Q&A

Snapper V4 BETA launch video

Here’s the video of Snapper v4.0 beta “launch party”. I have fixed most of the bugs you see in this video :)

You can get the latest Snapper v4 BETA from here:

Please save it with “Save as…”, not copy & paste to an editor, as some editors tend to mess up large pasted content.

Oracle Hacking Session with Tanel Poder from OakTableWorld (Oct 2012 in San Francisco)

I delivered a live Oracle hacking session at OakTableWorld in San Francisco two weeks ago and here’s the video (Thanks to Kyle Hailey & co)!

Note that this was a hacking session deliberately aimed to be fun and “hackerish” rather than useful. Do not try this in your production databases!!! :-)

The title is “Lots of undocumented, unknown and unnecessary features in Oracle!”

You can watch it here:

Note that there are more videos available on OakTableWorld website (and probably more will show up soon!)

Enjoy! :-)

“My Perspective on Exadata” – Kerry Osborne interviewing Cary Millsap on E4 Stage

Here’s the opening session’s video of the the Enkitec Extreme Exadata Expo conference. Kerry Osborne is interviewing Cary Millsap on Cary’s view on Oracle Exadata!



Oracle Hacking Session with Tanel Poder – Oracle Parameter Infrastructure

This hacking session’s topic is Oracle parameter infrastructure. We will look into some internals of Oracle instance, session and optimizer environment parameter management. This session does not attempt to explain what all the individual parameters do, but how parameters work in general.

This knowledge can be useful for explaining some seemingly weird things happening in Oracle :)

1) Did you know that there are multiple different types of configuration parameters inside Oracle?
2) Do you want to know why changing some session parameters causes Oracle to recompile a new child cursor, while some parameters (notably the _small_table_threshold and _serial_direct_read) don’t?
3) Where are the session-level parameter values kept?
4) How to see what Oracle parameters some other session is using at the moment?

NB!!! Note that as the name says, this is a free hacking session – informal, fun and unstructured online hacking with no slides and no particular sturcture – it’s all demos in sqlplus.

Note that I had some trouble with my recording software in the end, so part of the question #2 will be answered in a future video! :)

By the way, I didn’t mention this in the hacking session, but ORADEBUG DUMP PARAMETERS 1 allows you to dump all *modified* parameters of another session (if you connect to that session’s process with oradebug first):

*** 2012-04-12 21:18:41.094
 Processing Oradebug command ‘dump MODIFIED_PARAMETERS 1′
 timed_statistics = TRUE
 timed_os_statistics = 60
 nls_date_format = dd-MON-yy
 optimizer_index_caching = 11
 _serial_direct_read = ALWAYS
 _rowsource_execution_statistics= TRUE
 _rowsource_profiling_statistics= TRUE
 statistics_level = ALL
 _sqlmon_threshold = 5
 _timemodel_collection = TRUE


Oracle full table scans, direct path reads, object level checkpoints, ORA-8103s

Note: The video below is back online now! 

Here’s another hacking session video from last year:


  • How do full table scans work?
  • How and why do the “ORA-8103: object no longer exists” errors happen
  • How does Oracle (11g) decide between a buffered full table scan and a direct path read scan (plus smart scan in Exadata)
  • What’s the difference between an object_id and data_object_id?

Oracle Troubleshooting: ORA-4031 errors and shared pool memory troubleshooting

Here’s an old video of mine about shared pool internals, ORA-4031 errors and shared pool memory troubleshooting: