oracle版本 11
OPTIMIZER_FEATURES_ENABLE = 10.2
如下sql
select
to_date(col1,'yyyymmdd')
from (
select
to_char(table1.CUR_MON, 'YYYYMM') || '01' as col1
from
table1
where
table1.CUR_MON is not null
)table1.CUR_MON 是 date 类型,, 有null值的数据,
现在的问题是在客户环境,执行sql 会报错 ora-01840 ,,如果在客户环境 把 OPTIMIZER_FEATURES_ENABLE 改成 9.2, 就不会报错了.想请教各位 为什么会报错,条件里已经去除null的数据了
而且这段sql 我换成测试环境 这个错误是无法再现的...只有在客户环境才会出错.
公司测试环境和客户环境的数据库版本是一样的如果不修改sql,,, 从oracle优化策略角度,比如做表分析什么的 可不可以解决这个错误,,总是感觉这个错误很奇怪,,不应该发生.因为客户环境 暂时无法访问,所以不能去试验,,现在客户那边想知道 错误原因和解决办法(不修改sql)
另外说下关于 ora-01840 错误,,,可以执行这段sql select to_date('01','YYYYMMDD') from dual;
OPTIMIZER_FEATURES_ENABLE = 10.2
如下sql
select
to_date(col1,'yyyymmdd')
from (
select
to_char(table1.CUR_MON, 'YYYYMM') || '01' as col1
from
table1
where
table1.CUR_MON is not null
)table1.CUR_MON 是 date 类型,, 有null值的数据,
现在的问题是在客户环境,执行sql 会报错 ora-01840 ,,如果在客户环境 把 OPTIMIZER_FEATURES_ENABLE 改成 9.2, 就不会报错了.想请教各位 为什么会报错,条件里已经去除null的数据了
而且这段sql 我换成测试环境 这个错误是无法再现的...只有在客户环境才会出错.
公司测试环境和客户环境的数据库版本是一样的如果不修改sql,,, 从oracle优化策略角度,比如做表分析什么的 可不可以解决这个错误,,总是感觉这个错误很奇怪,,不应该发生.因为客户环境 暂时无法访问,所以不能去试验,,现在客户那边想知道 错误原因和解决办法(不修改sql)
另外说下关于 ora-01840 错误,,,可以执行这段sql select to_date('01','YYYYMMDD') from dual;
解决方案 »
- !!!紧急求救ORACLE高手,ORACLE中如何将数字转化为字符串
- 谁能介绍本oracle入门书籍给我
- 怎么用oracle实现成绩排序
- 64位Linux上安装64位Oracle11g以后会出现重启的不稳定现象
- 如何在timesten中插入上万的数据?
- 请教一条sql语句
- oracle10g问题
- 求把A表中的gpdate赋给B表中的item_gpdate字段的sql语句,请大家帮忙!在线等!!
- 这个sql怎么写?
- 有ORACLE7.3的数据文件,怎样才能将其移植在另一台机器的oracle7.3数据库中
- oracle12c 登陆问题
- 打开oracle数据库报ora-01092;ora00704;ora00600错误
我建议从数据层再分析一次,看是否有异常的数据
数据层面没有问题,,date类型的数据除了合法日期值,就是null了,所以数据是没问题的.
这里应该是涉及到 优化器和优化模式的选择,,
在oracle9i版本里 optimize_mode是CHOOSE,根据表是否有统计信息来决定选择CBO还是RBO优化.
如果没有统计信息,并且optimize_mode是RULE的时候 sql执行就报错了,,我只分析到这里,至于更深的原因我也不知道了.
不知道还有没有人需要这种问题.