Re: oracle-l Digest V3 #207

  • From: "Jonathan Lewis" <jonathan@xxxxxxxxxxxxxxxxxx>
  • To: <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 20 Jul 2006 08:05:08 +0100

Considering only the optimizer the most likely problems
on a migration from 8i to 10g come from:

Subquery unnesting - use /*+ no_unnest */ hint in the
subquery for special cases,     _unnest_subquery = false
if too many to handle individually.

Complex view merging - use /*+ no_merge */ hint in the
subquery for special cases,     _unnest_subquery = false
if too many to handle individually.

btree/bitmap conversions - burning up the CPU - in 10g
you can use the /*+ no_index_combine(table index1 index2 ...)  */
hint for special cases,     _b_tree_bitmap_plans  = false
if too many to handle individually.

Subquery pushing - the push_subq hint now goes in each
subquery to be pushed, not in the main query

hash aggregation - if you have code that gets the data in
the right order after doing a group by without an order
by, you may now find the data coming out in the wrong
order because oracle has switch to "hash group by"
instead of "sort group by".  Add order by clauses -
or disable hash aggregation by setting
   _gby_hash_aggregation_enabled = false

dynamic sample is enabled at level 2 automatically you get stats collection happening automatically every 24 hours unless you disable the job - this will do too much work too often and generate too many histograms

AWR kicks in every hour - and you're not allowed to use the
gathered data unless you have the right licences, so you might
want do disable it.

   for r in (query) loop
   end loop

Implicit cursor for loop - 10g turns this into array fetching 100 rows
at a time under the covers.  In the odd case where you don't want
this to happen you can recompile individual packages with the
plsql_optimize_level set to 1.


Jonathan Lewis

The Co-operative Oracle Users' FAQ

Cost Based Oracle: Fundamentals

Date: Tue, 18 Jul 2006 04:07:05 -0700 (PDT)
From: Paula Stankus <paulastankus@xxxxxxxxx>
Subject: Re: 8i to 10g migration

We have the following environment:

 -a great deal of database links
 -materialized views over database links
 -Oracle 8.1.7
 -Solaris 2.9
 - .Net with ODP
 -Data Junction
 -Cobol programs precompiled

 and are planning a migration from 8.1.7 to 10g.

 Where is the best place to look for gotchas:

 -database links
 -hints that have been desupported
 -Issues with .Net
 -Issues with Cobol precompilers
 -Performance concerns
 -migration path - direct migration or export/import????

I am planning to clone production, give ample time to multiple development teams to test this out. I am planning to take sample queries generating execution plans in both environments and traces. I am planning a stress-test.

 Any advice would be greatly appreciated.
 -required PL/SQL changes


Other related posts:

  • » Re: oracle-l Digest V3 #207