Re: Production and Test Environment Queries Behaving Differently

From: Jonathan Lewis <jonathan_at_jlcomp.demon.co.uk>
Date: Thu, 21 Sep 2017 15:23:17 +0000
Message-ID: <LOXP123MB0086AC61985B7C2E50013E78A5660_at_LOXP123MB0086.GBRP123.PROD.OUTLOOK.COM>


Someone else has mentioned the difference in parsing user id.

One possibility connected with this is the observation that the SYS plan looks as if it had two existence subqueries unnested but not merged, while the other plan shows one aggregate subquery being used as a filter while the other subquery has disappeared (along with one of the tables from the vw_sq_1 unnested version). This suggests a difference in parameters relating to transformatios - in particular the "secure_view_merging" parameter. As a quick and dirty check I'd force a parse in both environments with event 10053 (CBO trace) set and check the "Optimizer Parameters" section to check that they match.

Another possibility that jumps out is a variation in the statistics for the column(s) joining PS_EOAW_USERINST and PS_SL_PROJ_ATTR_ED in the SYS plan. The prediction for the join is 37M, the actual (before the query was interrupted, presumably) was 800M. The scale of the error could have produced an massive under-estimate for the subsequence hash group by that, if corrected, might have persuaded the optimizer that this was a bad plan. I'd look at the stats on the join columns, particularly the low/high values, and any indications of misleading histograms.

Regards
Jonathan Lewis



From: oracle-l-bounce_at_freelists.org <oracle-l-bounce_at_freelists.org> on behalf of Michael McMullen <ganstadba_at_hotmail.com> Sent: 21 September 2017 15:50
To: MacGregor, Ian A.; oracle-l_at_freelists.org Subject: Re: Production and Test Environment Queries Behaving Differently

are your ps specific hidden parameters the same in both environments? That's gotten me a few times.



From: oracle-l-bounce_at_freelists.org <oracle-l-bounce_at_freelists.org> on behalf of MacGregor, Ian A. <ian_at_slac.stanford.edu> Sent: September 18, 2017 3:58 PM
To: oracle-l_at_freelists.org
Subject: Production and Test Environment Queries Behaving Differently

Of course the test environment things are fine

SELECT * FROM PS_SL_VCHR_APP_VW A
WHERE A.APPROVAL_DATE > '31-JUL-2017' Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 64
Number of plan statistics captured: 1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------

  25845463   25845463   25845463               VIEW  VW_SQ_1 (cr=6673 pr=135696 pw=3967287 time=522162423 us cost=3346 size=343604 card=10106)
  25845463   25845463   25845463                HASH GROUP BY (cr=6673 pr=135696 pw=3967287 time=518358907 us cost=3346 size=485088 card=10106)
 806300000  806300000  806300000                 MERGE JOIN  (cr=6673 pr=0 pw=0 time=298743322 us cost=1931 size=1793359392 card=37361654)
     27904      27904      27904                  SORT JOIN (cr=5543 pr=0 pw=0 time=733681 us cost=1497 size=646425 card=25857)
     27904      27904      27904                   TABLE ACCESS FULL PS_EOAW_USERINST (cr=5543 pr=0 pw=0 time=36534830 us cost=1495 size=646425 card=25857)
 806300000  806300000  806300000                  SORT JOIN (cr=1130 pr=0 pw=0 time=186306940 us cost=310 size=664677 card=28899)
     28982      28982      28982                   TABLE ACCESS FULL PS_SL_PROJ_ATTR_ED (cr=1130 pr=0 pw=0 time=375208 us cost=309 size=664677 card=28899)

--

http://www.freelists.org/webpage/oracle-l Received on Thu Sep 21 2017 - 17:23:17 CEST

Original text of this message