Top 60 Oracle Blogs

Recent comments


OSWatcher as included in AHF 20.1.2 fails to start for single instance Oracle

I am about to update my posts detailing the use of Tracefile Analyzer (TFA) now that Oracle has merged it into its Autonomous Health Framework (AHF) and came across an interesting observation worth blogging about upfront.

After completing a fresh installation of AHF 20.1.2, the current version at the time of writing, I noticed OSWatcher didn’t start on my VM. I am operating a single instance Oracle 19.7.0 database, running on Oracle Linux 7.8/UEK 5. The system does not contain any traces of Grid Infrastructure.

I fully expect this problem to be transient, but until Oracle provides a fix I wanted to share my workaround. I didn’t find this problem covered in the usual sources, including My Oracle Support.

For the record, this is the version I can confirm to be affected:

What’s new with Oracle database 18.9 versus 18.10

This blogpost takes a look at the technical differences between Oracle database 18 PSU 9 (january 2020) and 10 (april 2020). This gives technical specialists an idea of the differences, and gives them the ability to assess if the PSU impacts anything.



Every now and again someone posts a piece of SQL on the Oracle Developer Forum that includes a predicate with an expression like to_date(date_column). This is a problem for several reasons – not the least being the type of performance problem that showed up in a post from a couple of years back that has just been resurrected.

Before I examine the performance detail, here’s a simple demo of the “wrong data” problem that can go unnoticed, cut-n-paste from a session of SQL*Plus:

What’s new with Oracle database versus

This blogpost takes a look at the technical differences between Oracle database PSU 200114 (january 2020) and 200414 (april 2020). This gives technical specialists an idea of the differences, and gives them the ability to assess if the PSU impacts anything.

The list of parameters removed (first) and parameters added (second) is remarkable long.
It’s striking that a lot of solutions for bugs made configurable (_bug[0-9]*_.*) have been removed, and probably returned back as ‘spare parameters’.
Also some in memory (_inmemory.*) parameters have been removed.
Also some documented parameters; exafusion_enabled and optimizer_adaptive_plans and optimizer_adaptive_statistics, plus some standby parameters I wasn’t aware of existing.


I woke up last night with a brilliant solution to a problem that’s been bugging me for more than a year. How does a call to report_sql_monitor() manage to produce output like this:

Oracle Support: Easy export of SQL Testcase

By Franck Pachot

Many people complain about the quality of support. And there are some reasons behind that. But before complaining, be sure that you provide all information. Because one reason for inefficient Service Request handling is the many incomplete tickets the support engineers have to manage. Oracle provides the tools to make this easy for you and for them. Here I’ll show how easy it is to provide a full testcase with DBMS_DIAG. I’m not talking about hours spent to identify the tables involved, the statistics, the parameters,… All that can be done autonomously with a single command as soon as you have the SQL text or SQL_ID.

In my case, I’ve reproduced my problem (very long parse time) with the following:

Execution Plans

One of the most important skills needed when investigating badly performing SQL is the ability to read Execution Plans. It’s a topic I’ve written and spoken about frequently – even to the extent of doing full-day seminars – but there’s always scope for finding another way of presenting the method.

This is a note based on a few introductory Powerpoint slides I created for the (sadly cancelled) Polish OUG Workshop and Tanel Poder’s Virtual Conference taking a slightly different approach from one I normally use to get people stated on interpreting (serial) execution plans.

I want to begin with a query, rather than a plan:

Video : Online Conversion of a Non-Partitioned Table to a Partitioned Table in Oracle 12.2 Onward

Today’s video demonstrates the online conversion of a non-partitioned table to a partitioned table. This functionality was introduced in Oracle 12.2.

The examples in the video are taken from this article.

“Segment Maintenance Online Compress” feature usage

By Franck Pachot

On Twitter, Ludovico Caldara mentioned the #licensing #pitfall when using the Online Partition Move with Basic Compression. Those two features are available in Enterprise Edition without additional option, but when used together (moving online a compressed partition) they enable the usage of Advance Compression Option: