Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> RE: CBO Bug - Tables with 0 rows

RE: CBO Bug - Tables with 0 rows

From: David Kurtz <>
Date: Fri, 30 Nov 2007 00:14:31 -0000
Message-ID: <00d101c832e5$fbf4e790$0a0a0a0a@GOFASTER4>

I can suggest two possibly more reliable and easier to implement options to deal with stats on temporary working storage tables. i) I assume that this is a PeopleSoft Appliation Engine program. The PeopleSoft solution is to have your developers analyze the table by adding the PeopleSoft %UpdateStats macro to the code. ii) The generic Oracle solution is to delete stats on the table, _and_ set OPTIMIZER_DYNAMIC_SAMPLING to 2 (this defaults to 1 in 9i, and 2 in 10g - 1 isn't usually enough). In Oracle 10g you can also lock the statistics to prevent statistics being inadvertantly gathered. If there are no statistics, Oracle will generate CBO statistics on the fly at parse time based on a small sample of the table. There are also ways to do this just for the PORECON process.
see also  


David Kurtz
Go-Faster Consultancy Ltd.
tel: +44 (0)7771 760660
fax: +44 (0)7092 348865
Book: PeopleSoft for the Oracle DBA: <>
DBA Blogs: PeopleSoft: <> , Oracle: <> PeopleSoft DBA Forum:  

From: [] On Behalf Of Andrew Kerber
Sent: Thursday, November 29, 2007 8:39 PM To:
Cc:; Subject: Re: CBO Bug - Tables with 0 rows Importance: High

Just to be accurate, thats not actually an Oracle bug. Oracle is working the way it is designed, its the PS implementation that has the problem.

On Nov 29, 2007 2:16 PM, Taylor, Chris David <> wrote:

Yes. We run into this often in PeopleSoft.

Due to all the temp and work tables that app uses. They constantly have 0 rows. Then the App will insert rows and do joins on the tables that stats says have 0 rows.

No fun.

Here's a perfect example query:

( SELECT 'X' FROM PS_PO_HDR B WHERE B.PO_STATUS = 'C' AND B.BUSINESS_UNIT = PS_PO_RECON_WK1.BUSINESS_UNIT AND B.PO_ID = PS_PO_RECON_WK1.PO_ID ) The PS_PO_RECON_WK1 table gets 290,000 rows inserted into it, the App does some stuff with the data and then runs this delete. The delete takes 1.5 hours to run.

If I fix the stats on PS_PO_RECON_WK1, the delete takes approximately 25-30 seconds with a completely different execution plan.

But you know what? That same app that does the delete does a TRUNCATE Table, and also reanalyzes the table, so the row_count gets set back to 0.

I had to create a trigger that has an autonomous transaction inside it on inserts to reload stats from a STATTAB. Seems to be working ok for now.

Chris Taylor
Sr. Oracle DBA
Ingram Barge Company
Nashville, TN 37205
Office: 615-517-3355
Cell: 615-354-4799
Email: <>

-----Original Message-----

[mailto: <>] On Behalf Of Best, David Sent: Thursday, November 29, 2007 2:00 PM To:
Subject: CBO Bug - Tables with 0 rows

Hey all,

  Has anyone heard of CBO bugs on tables with 0 rows or a low row count (<6)? Appparently sub-optimal plans were generated causing performance issues. The solution was to delete statistics on those tables. I was kind of surprised when I heard this so I searched on Metalink and can't find anything.

-- <>



Andrew W. Kerber

'If at first you dont succeed, dont take up skydiving.'

-- Received on Thu Nov 29 2007 - 18:14:31 CST

Original text of this message