Top 60 Oracle Blogs

Recent comments



Many years ago Tom Kyte published a small PL/SQL procedure to output each row in a table as a list of (column_name , value). I often use the original version, even though Tom refined it several times over the years. From time to time the links in my blog that I’ve set up to point to Tom’s code have simply stopped working so I’ve decided to publish a reference copy on my blog in case newer readers need to find a copy and the current link above stops  working.

Video : Adaptive Cursor Sharing

In today’s video we’ll discuss the Adaptive Cursor Sharing feature, introduced in Oracle 11g Release 1.

This video is based on the following article.

Here are some other things you might want to check out.

Video : CURSOR_SHARING : Automatically Convert Literals to Bind Variables in SQL Statements

In today’s video we’ll discuss the CURSOR_SHARING parameter, which determines how the database handles statements containing literal values.

The video is based on this article.

You may also find these useful.


Here’s a little demonstration of the benefit of rowsets. It started with a very simple question that arrived in my in-box from Kaley Crum.

  • “Why does the query with the UNION ALL take so much longer than the query without the UNION ALL?”

Here are the two queries – surely they should take virtually the same amount of time.

Indexing partitions

This is one of those notes on the “thinking about the data / indexes” theme that I like to write; it’s a draft I wrote over two and a half years ago that I’ve just rediscovered and polished slightly and refers to a “recent” question that came up on the ODC Forum. It’s not intended as “The Answer” to the question, it’s a just a list of ideas and observations you’d want to think about if you had to address the problem:

Azure IO Performance for the RDBMS DBA- Part I

With my upcoming session on “Migrating Oracle Workloads to Azure IaaS” this week at PASS Virtual Summit 2020, I wanted to take some time to dig deeper onto the performance side. The last thing you want to have happen is to migrate your database to the cloud and have it just screech to a halt.

Quiz time

Here’s a fun little item that I’ve just rediscovered from 2016.

There’s a fairly commonly cited query that aggregates and tabulates the first_time column from the v$log_history view by hour of day, reporting the hour across the page and the date down the page. It often appears in the responses to the question “how big should my online redo log files be?” but I’m not going to supply the query here because it’s irrelevant, instead I’m going to show you a line of the output it produced (on a real production system) then ask the important question that might prompt you decide to resize your log files:

What’s new with Oracle database versus

This blogpost takes a look at the technical differences between Oracle database PSU 200714 (july 2020) and PSU 201020 (october 2020). This gives technical specialists an idea of the differences, and gives them the ability to assess if the PSU impacts anything.


I wish

Here’s a lovely little mechanism new to Postgres 13 that can minimise sorting costs: the “incremental sort”. It would be nice to see it in Oracle as well as it could make an enormous difference to “fetch first N” queries.

The concept is simple – if a rowsource moving up a plan is known to be in “partially sorted” order when it reaches a sort operation the optimizer can choose whether or not to sort the entire rowsource in one go or to sort it in batches as it arrives.

Video : Bind Variables : For Performance and Protection Against SQL Injection

In today’s video we’ll discuss how using bind variables in your database applications can improve performance, and protect against SQL injection attacks.

This videos is based on a demo I do in one of my presentations, which was itself based on these articles.