Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Bind Variable Peeking Not Working Properly
Hi guys, I'm running Oracle 9.2.0.6 on Sun. I have this rather huge
(Siebel-generated) query which goes along the line of:
select
T14.CONFLICT_ID,
T14.LAST_UPD, T14.CREATED, T14.LAST_UPD_BY, T14.CREATED_BY, T14.MODIFICATION_NUM, ... from SIEBEL.S_LST_OF_VAL T1, SIEBEL.S_PROD_INT T2, SIEBEL.S_CONTACT_FNX T3, SIEBEL.S_ORG_EXT T4, SIEBEL.S_CONTACT_BU T5, SIEBEL.S_CONTACT T6, SIEBEL.S_ASSET_ATX T7, SIEBEL.S_ASSET_BU T8, SIEBEL.S_PARTY T9, SIEBEL.S_ORG_EXT T10, SIEBEL.S_ASSET_CON T11, SIEBEL.S_ORG_EXT T12, SIEBEL.S_VHCL_FIN_DTL T13, SIEBEL.S_ASSET T14 WHERE T14.PR_FIN_DTL_ID = T13.ROW_ID (+) AND T14.PREF_SRV_DLR_ID = T4.PAR_ROW_ID (+) AND T14.RTNG_DLR_ID = T10.PAR_ROW_ID (+) AND T14.ROW_ID = T8.ASSET_ID AND T8.BU_ID = :v1 AND T14.PROD_ID = T2.ROW_ID (+) AND T14.DLR_ID = T12.PAR_ROW_ID (+) AND T14.ROW_ID = T7.PAR_ROW_ID (+) AND T14.REF_NUMBER_2 = T1.NAME AND T1.TYPE = 'AUTO_VEHICLE_OPTY_TYPE_CD' AND T1.LANG_ID = :v2 AND T14.PR_CON_ID = T11.CONTACT_ID (+) AND T14.ROW_ID = T11.ASSET_ID (+) AND T14.PR_CON_ID = T9.ROW_ID (+) AND T14.PR_CON_ID = T6.PAR_ROW_ID (+) AND T14.PR_CON_ID = T3.PAR_ROW_ID (+) AND T14.PR_CON_ID = T5.ROW_ID (+) AND
(T8.BU_ID = :v3) AND
(T14.PR_CON_ID = :v4 AND T1.VAL LIKE :v5)
Bind variable v1: 1-1X-298 Bind variable v2: ENU Bind variable v3: 1-1X-298
Now if you take a look at bind variable v5 ("%Sold"), Oracle should use bind variable peeking to figure out that an index based on S_LST_OF_VAL.VAL (T1) is a bad idea. If I replace bind variable v5 with its value in the query, it does the proper thing in not using this index. I even made sure that a hard parse ocurred by flushing the shared pool first, without any success. I ran from SQL*Plus:
variable v1 varchar2(15)
exec :v1 := '1-1X-298'
variable v2 varchar2(15)
exec :v2 := 'ENU'
...
Then I ran the query as such (using bind variables) and tkprof showed a
hard parse for the query, with the exec plan still using the same
harmful index. optimizer_features_enable is 9.2.0. Any idea what's
wrong?
Daniel Received on Wed Dec 07 2005 - 09:29:09 CST