About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc
全部博文(169)
分类: Oracle
2023-05-09 15:25:56
10g正常,升级11g r2后日期转换出错,temp_value_code存多种格式字符串。
正确执行计划LT关联查询先执行,之后与外表关联。
错误执行计划是TASK_SPRING_VALUES先与外表关联然后分组,作为VIEW再与TASK_SPRING_LABEL关联,导致报错。
字段用途设计不合理,其中temp_value_code作为varchar2存储普通字符、数字型字符、日期格式yyyy-mm-dd,程序中有to_number,to_date等转换,非常依赖于执行计划中表连接和条件的先后顺序。
?问题分析:
通过查看10053获得问题细节,使用了新特性Group By Placement:
查看是否真的有不符合格式的数据,的确有几条数据不符合格式要求,问题的本质在于设计问题:
关闭GBP隐含参数后正确:_optimizer_group_by_placement,如下所示: