Title: RE: converting to the cost based optimizer

Me thinks (based on my conversion from RBO->CBO) over last two months ... ) one major factor is achieving success is as follows

1. Train your developers/designers
2. See point one
3. Lather - rinse - Repeat

Some people just don't get it ... lot of people (in my limited experience) think that CBO is the new RBO ... so if it worked perfect in RBO, it will work better in CBO. Some also think that there are some 'hidden' parameters that DBAs can set and all of a sudden my application will be flying (at scramjet speeds).

We just ran into a problem with Spatial queries in 9201 database ... it chokes with making a HJ ... so now we are putting in a on-logon trigger for that specific user to do a alter session and set HJ_enabled to false.

Some things that we found ...
1. In 9201 there is a bug related to query_unnesting (yeah the same one they discovered in 8071 and claimed to have fixed in 8174). we ended up billing customers 1.5Million instead of 150K (luckily it was a test run and was fixed before the actual run was done).

2. The spatial problem as mentioned above
3. Carefully (I mean very carefully) decide on db_file_multiblock_read_count value ...
   3.1 As it affects CBO to take different path
   3.2 If you are using RAC, it also affects Global cache traffic
       the bug is (claimed to be fixed in 9202).
4. You will see some queries drive like 5mph in the left lane ...
   after careful analysis we have found much success with
   optimizer_index_cost_adj parameter. Trust me I experimented
   about 15 times before deciding a value of 10;
5. Decide BEFORE YOUR TESTING PHASE STARTS on what your statistics collection be,
   5.1 old 10% is out,
   5.2 oracle recommends 25%
   5.3 rather dbms_stats.auto_sample seems to be the current recommendation
   5.4 if you'd like to do 100% i.e. COMPUTE.
   Once you decide STICK TO IT NO MATTER WHAT because if you change that CBO will think otherwise.
6. Use DBMS_STATS ... don't use ANALYZE ... also when doing gather_table_stats
   make sure you specify CASCADE => TRUE (I can't imagine why it is FALSE by default).
7. Based on my emails earlier this year and a very good explanation from Tim Gorman
   and a couple of others on this list, we decided to put hints ONLY in places where
   CBO is consistently making wrong decisions.
8. If you want to use OUTLINES, make sure that the SQL HAS TO BE EXACT ... else it won't work.
9. One important lesson I learned in tuning CBO queries is to TUNE THE SQL WITH BIND VARIABLES ...
   CBO at times chooses different path based on bind values or hard-coded values.

there is more ... but it is enough to scare someone off ... personally I am very comfortable with CBO, but it is the RBO tunes application that has problems with CBO and my colleagues and I are working hard to make them (the application and CBO) like each other.

Okay time to get me off my soapbox and do some work ... and yes I have tapped the collective brain power on this list ... and the wisdom never fails to amaze me. Thank you all..

Raj
______________________________________________________
Rajendra Jamadagni              MIS, ESPN Inc.
Rajendra dot Jamadagni at ESPN dot com
Any opinion expressed here is personal and doesn't reflect that of ESPN Inc.
QOTD: Any clod can have facts, but having an opinion is an art!

********************************************************************This e-mail 
message is confidential, intended only for the named recipient(s) above and may 
contain information that is privileged, attorney work product or exempt from 
disclosure under applicable law. If you have received this message in error, or are 
not the named recipient(s), please immediately notify corporate MIS at (860) 766-2000 
and delete this e-mail message from your computer, Thank 
you.*********************************************************************2


Reply via email to