Glenn Fawcett has put together a nice slide deck entitled “Oracle Analysis 101” that discusses techniques to collect and analyze performance data related to Oracle databases. It’s a good read so check it out. Glenn is also a great resource for Oracle on Sun Niagara 2 Processors (CMT) so be sure to peek at...
Read more »
Tags: 10046 event, AWR, debug, oracle performance, sql trace, statspack
Posted in Performance, Troubleshooting | 1 Comment »
I’ve written before on choosing an optimal stats gathering strategy but I recently came across a scenario that I didn’t directly blog about and think it deserves attention. As I mentioned in that previous post, one should only deviate from the defaults when they have a reason to, and fully understand that reason and...
Read more »
Tags: cardinality, DBMS_STATS, Execution Plans, FOR ALL INDEXED COLUMNS, gather_table_stats, METHOD_OPT, Optimizer, selectivity
Posted in 10gR2, 11gR1, Data Warehousing, Execution Plans, Optimizer, Oracle, Performance, SQL Tuning, Statistics, Troubleshooting | 31 Comments »
There has been some debate in forumsphere/blogosphere centered around Steve Karam’s observation of a 20x elapsed time difference in an update statement “by only changing the block size”. At this point in time, it is pretty much understood (I hope) that this performance delta is directly related to bug 6918210. This bug manifests its...
Read more »
Tags: assm, block size, bug 6918210, dtrace, pctfree, pstack
Posted in Oracle, Performance, Troubleshooting | 5 Comments »

Previously I blogged about the new and improved DBMS_STATS.AUTO_SAMPLE_SIZE used to calculate NDV in Oracle 11g and now I wanted to touch on another new feature of DBMS_STATS in 11g: Incremental Global Statistics On Partitioned Tables. Before Incremental Global Stats (Two-Pass Method) When DBMS_STATS.GATHER_TABLE_STATS collects statistics on a partitioned table, generally it does so...
Read more »
Tags: DBMS_STATS, gather_table_stats, Incremental Global Stats, oracle 11g, synopsis-based statistics gathering
Posted in 10gR2, 11gR1, Data Warehousing, Execution Plans, Optimizer, Oracle, Statistics, Troubleshooting, VLDB | 7 Comments »
Recently I was reading this thread, “Trying to make use of bitmap indexes” on the Oracle Forum. Before I had finished a working example, Jonathan Lewis had posted his response which was on par with my thoughts. Since this is a topic I see frequently, I thought I would finish my experiment and publish...
Read more »
Tags: bitmap index, cardinality, execution plan, i/o throughput, selectivity
Posted in 10gR2, 11gR1, Data Warehousing, Execution Plans, Optimizer, Performance, SQL Tuning, Statistics, Troubleshooting, VLDB | 6 Comments »
Recently the Oracle Optimizer Development Team put out a White Paper entitled Upgrading from Oracle Database 9i to 10g: What to expect from the Optimizer. This paper discusses the main differences between 9i and 10g in the subject area of the Optimizer and Statistics. As G.I. Joe said, “Now we know! And knowing is...
Read more »
Tags: auto_sample_size, bind peeking, DBMS_STATS, Execution Plans, histograms, Optimizer, out-of-range predicates, Statistics, stats gathering strategy
Posted in 10gR2, Execution Plans, Optimizer, Oracle, Statistics, Troubleshooting | 20 Comments »
I came across this video the other day and I immediately thought of rule #3 from my Got Root Cause? post: “Be detail oriented, but do not become too obsessed with any one detail.“ Watch the video and see if you pass the Awareness Test. Most importantly, remember the punch line of the video...
Read more »
Posted in Oracle, Troubleshooting | 2 Comments »
A few months ago the Oracle Optimizer Team did a blog post entitled Outerjoins in Oracle. In the Lateral View section of that post they go through some examples and discuss how a query is transformed with the ANSI outer join syntax. I thought it would be useful to go through an example that...
Read more »
Tags: ANSI outer join, lateral view, Oracle outer join, wrong results
Posted in Execution Plans, Optimizer, Oracle, SQL Tuning, Troubleshooting | 18 Comments »
Many times a DBA wants to know where a SQL statement is in its execution plan and where the time is being spent. There are a few ways to find out this information, but an 11g new feature makes gathering this information extremely easy. Oracle 11g Real-Time SQL Monitoring allows you to monitor the...
Read more »
Tags: DBMS_SQLTUNE.REPORT_SQL_MONITOR, oracle 11g, Real-Time SQL Monitoring
Posted in 11gR1, Execution Plans, Oracle, Performance, SQL Tuning, Troubleshooting | 18 Comments »
Richard Foote has recently started blogging (as of December 11th) and one of his recent posts discusses Oracle Myths and Information Pollution. I find this topic very interesting as I’m always amazed at the number of people who make changes to their production database based on the results from their favorite Internet search engine,...
Read more »
Tags: oracle information polution, oracle myths
Posted in Oracle, Troubleshooting | 1 Comment »
Since the introduction of the Cost Based Optimizer (CBO) in Oracle 7.0, people have been both fascinated and terrified by it and the statistics that feed it. There has long been a belief that a degree in witchcraft or black magic is required to successfully work with the CBO. Some people feel this shroud...
Read more »
Tags: cbo, Execution Plans, Optimizer, Statistics
Posted in Execution Plans, Optimizer, Oracle, Performance, Statistics, Troubleshooting | 8 Comments »
One of the most common performance issues DBAs encounter are bad execution plans. Many try to resolve bad executions plans by setting optimizer related parameters or even hidden underscore parameters. Some even try to decipher a long and complex 10053 trace in hopes to find an answer. While changing parameters or analyzing a 10053...
Read more »
Tags: DBMS_STATS
Posted in Execution Plans, Optimizer, Oracle, Performance, SQL Tuning, Statistics, Troubleshooting | 30 Comments »