④内部公开请勿外传--1收到客户公司反馈:语句执行时,EM里查看,临时文件1被消耗完后,自动使用临时文件2。--2捕获SQL语句:发现语句中使用了某个ORACLE的临时表-----ErrorStackDump-----ORA-01652:unabletoextendtempsegmentby128intablespaceTEMP-----CurrentSQLStatementforthissession(sql_id=7cxjmxnw91ydu)-----MERGEINTOTM_HS_ENDINITOUTSTOCKSEQt1using(SELECTt4.FVALUATIONMETHOD,t2.FAcctgRangeId,t2.FMASTERID,t4.FMaterialPropertiesFROMTM_HS_MasterlInAcctgRangeT2INNERJOINT_HS_VALUATIONMETHODT3ONt2.FAcctgRangeId=t3.FAcctgRangeIdINNERJOINT_HS_VALUATIONMETHODENTRYT4ONt3.FVALUATIONMETHODID=t4.FVALUATIONMETHODIDWHERE((t3.FRANGEGROUP=:FRANGEGROUPANDt3.FDOCUMENTSTATUS='C')ANDt3.FFORBIDSTATUS='A'))TON(((t1.FAcctgRangeId=T.FAcctgRangeIdANDt1.FMASTERID=T.FMASTERID)ANDt1.FMaterialProperties=T.FMaterialProperties))WHENMATCHEDTHENUPDATESETt1.FVALUATIONMETHOD=t.FVALUATIONMETHOD--3在EM的"SQL监视"功能里找到该SQL语句的执行过程,点击进去查看,发现问题:从执行计划看,T2临时表的索引(IDX_TM_HSXXX),优化器预估它只有1行,但在“实际行数”这一列,显示还索引至少有7596行,而由于预估是1行,优化器在把它和其他结果集发生关系时,选择了笛卡尔乘积操作,导致后续的结果集非常大,达到1054百万(10亿)行记录,正是这么大的结果集,耗光了临时表空间,,,1/2④内部公开请勿外传4优化方法,删除该临时表的统计信息,迫使优化器对该临时表做动态采样,对于至多只有几千行记录的临时表,动态采样获得的统计信息,足够优化器计算出高效的执行计划。2/2