During an evolution the database engine compares the performance of two execution plans. The aim is to find out which one provides the better performance. For that purpose it has to run the SQL statement on which the SQL plan baseline is based and compare some execution statistics. The following output of the DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE function […]
Optimizer Mode Mismatch Does Not Prevent Sharing of Child Cursor!?!?
The aim of this post is to describe a strange (buggy) situation that I observed recently. But before doing that, I shortly summarize what a parent cursor and a child cursor are as well as when they can be shared. By the way, I borrowed this description from the pages 20/21 of my book. Hence, […]
Analyzing a SQL Trace File with SQL Statements
As of Oracle Database 11g the DBMS_SQLTUNE package provides the SELECT_SQL_TRACE function. Its purpose is to load the content of a SQL trace file into a SQL tuning set. But, as it often happens, a feature can be (mis)used for another purpose. The aim of this post is to show how to take advantage of […]
Inserts Experiencing an Increasing CPU Consumption
Last week I had to analyze a strange performance problem. Since the cause/solution was somehow surprising, at least for me, I thought to share it with you. Let me start by quickly describing the setup and what was done to reproduce the problem: Database version: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 (64-bit) Operating system: […]
Synthetic Commits and Rollbacks
Yesterday, I received the following question from a TVD$XTAT user: XCTEND lines are reported as “COMMIT/ROLLBACK (synthetic)”. Using Goolge and Metalink I can’t find any other resources describing “COMMIT/ROLLBACK (synthetic)”. This term seems not be widely used, although Hotsos uses the same term. Could you please elaborate what exactly that is and why it possibly […]
TVD$XTAT 4.0 Beta 9
This is just a short note to point out that I just uploaded under the section Downloadable Files of TOP a new version of TVD$XTAT. Not only I introduced some new features, but I also fixed a couple of major bugs related to memory consumption and poor performance… The detailed change log since Beta 8 […]
11g New Feature in DBMS_MONITOR
As of 11g the package DBMS_MONITOR provides an important new feature. The aim of this post is to describe not only what this feature is, but also why it is important. To illustrate how the new feature works, two things are necessary. First, a small table: SQL> SELECT * FROM t; N ———- 1 2 […]
Execution Plan Hash Value in SQL Trace Files
In a previous post I already pointed out that as of 11.1.0.7 new information is provided in the SQL trace files. One of them is the value “plh” in the PARSE, EXEC and FETCH lines. This new value provides the execution plan hash value. While adding this information to the output generated by TVD$XTAT I […]
TVD$XTAT 4.0 Beta 8
This is just a short note to point out that I just uploaded under the section Downloadable Files of TOP a new version of TVD$XTAT. The change log since Beta 7 is the following: Improved generation of synthetic cursors (particularly for RPC and XCTEND) Added support for 11.1.0.7 formatting of XCTEND Added check for questionable […]
Introduce TVD$XTAT
Trivadis Extended Tracefile Analysis Tool (TVD$XTAT) is a command-line tool. Like TKPROF, its main purpose is to take a raw SQL trace file as input and generate a formatted file as output. Why Is TKPROF Not Enough? In late 1999, I had my first encounter with extended SQL trace, through MetaLink note Interpreting Raw SQL_TRACE […]