楼主: lastwinner

[原创] 【原创】你在开发中碰到的最悲催的Oracle bug是哪种?

[复制链接]
论坛徽章:
9
2009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
21#
发表于 2012-9-14 11:16 | 只看该作者
oracle基本没用过,也没碰到过这些问题。
DB2用过挺长时间,没碰到过问题3。但这也不一定说明DB2的优化器就比oracle好。
个人感觉,用DB2的人,把SQL仅仅当做是一个与数据库交互的接口。
而用oracle的人,真正把SQL当做一门语言在使用。
个人觉得SQL还是一门很有魅力的语言,跟java,C一样值得好好研究。
当一个复杂的问题用一个简洁的SQL解决的时候,还是很happy的。


使用道具 举报

回复
论坛徽章:
11
SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:03:45红孩儿
日期:2012-12-19 11:08:17优秀写手
日期:2013-12-18 09:29:09暖羊羊
日期:2015-04-22 14:41:41
22#
发表于 2012-9-14 17:16 | 只看该作者
曾遇到一个bug:
表t中本来有100条记录,用select count(*) from t 总是返回90条。结果发现执行计划走了主键索引,怀疑主键索引统计信息不对。
然后,重建主键再查询结果就对了。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
23#
 楼主| 发表于 2012-9-14 21:38 | 只看该作者
〇〇 发表于 2012-9-13 22:15
outer jon这个问题很大,从9i/10g都有。。

10.2.0.4之后就好多了
9i的outer join问题比较多,最好是用传统的(+) (见我早年的老帖 http://www.itpub.net/forum.php?mod=viewthread&tid=455982 )

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
24#
 楼主| 发表于 2012-9-14 21:41 | 只看该作者
mdkii 发表于 2012-9-14 11:16
oracle基本没用过,也没碰到过这些问题。
DB2用过挺长时间,没碰到过问题3。但这也不一定说明DB2的优化器就 ...
  1. 当一个复杂的问题用一个简洁的SQL解决的时候,还是很happy的。
复制代码
在这里活泼的人,基本都认同这一句,欢迎你也常来活跃活跃^_^

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
25#
 楼主| 发表于 2012-9-14 21:43 | 只看该作者
sohay 发表于 2012-9-14 17:16
曾遇到一个bug:
表t中本来有100条记录,用select count(*) from t 总是返回90条。结果发现执行计划走了主 ...

这个也太诡异了,这么简单的sql也会出问题,按理说不应该啊!
你确认表里的数据在这些操作过程中就没变过?

使用道具 举报

回复
论坛徽章:
11
SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:03:45红孩儿
日期:2012-12-19 11:08:17优秀写手
日期:2013-12-18 09:29:09暖羊羊
日期:2015-04-22 14:41:41
26#
发表于 2012-9-15 18:24 | 只看该作者
lastwinner 发表于 2012-9-14 21:43
这个也太诡异了,这么简单的sql也会出问题,按理说不应该啊!
你确认表里的数据在这些操作过程中就没变过 ...

真的没变过,所以怀疑是bug

使用道具 举报

回复
论坛徽章:
11
SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:03:45红孩儿
日期:2012-12-19 11:08:17优秀写手
日期:2013-12-18 09:29:09暖羊羊
日期:2015-04-22 14:41:41
27#
发表于 2012-9-15 18:25 | 只看该作者
sohay 发表于 2012-9-15 18:24
真的没变过,所以怀疑是bug

因为我用 select count(a) from t 查询是100,这个结果是对的,a为非主键字段,计划走的是全表扫描

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
28#
 楼主| 发表于 2012-9-16 00:36 | 只看该作者
sohay 发表于 2012-9-15 18:24
真的没变过,所以怀疑是bug

数据库版本是啥?

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29咸鸭蛋
日期:2011-11-09 14:50:32咸鸭蛋
日期:2012-06-13 05:10:53三菱
日期:2013-09-17 09:52:46优秀写手
日期:2013-12-18 09:29:13马上加薪
日期:2014-10-15 18:26:41
29#
发表于 2012-9-16 03:18 | 只看该作者
atgc 发表于 2012-9-14 08:20
嗯,我说“原则上,绝不在自定义函数里使用SELECT语句”
如果在自定义函数里使用SELECT语句,那么假设 ...

自定义函数里面不用select,那要这个函数能干嘛呢?求解。
例如:这个简单的函数,怎么通过不用select 实现。
CREATE OR REPLACE FUNCTION GetAvgValueForDashboard6_col
(
  iv_month        in  varchar2,
  billing_type    in varchar2,
  iv_total_value  in  number
)
return number
IS
avg_value             number;
total_number            number;
number_flag           number;
BEGIN
     avg_value :=0;
     select count(*) into number_flag
     from lbikr_bravo.tb_kr_dashboard_1_month t
     where t.statis_date=iv_month
     and instr(billing_type,t.billing_group_type)>0;
   if number_flag>0 then
      select sum(t.average) into total_number
     from lbikr_bravo.tb_kr_dashboard_1_month t
     where t.statis_date=iv_month
     and instr(billing_type,t.billing_group_type)>0;
     avg_value := iv_total_value/total_number;
   end if;
     return avg_value;
END;

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
30#
发表于 2012-9-16 09:13 | 只看该作者
shentao19890909 发表于 2012-9-16 03:18
自定义函数里面不用select,那要这个函数能干嘛呢?求解。
例如:这个简单的函数,怎么通过不用select 实 ...

这个函数里的SELECT完全可以不用,用表关联,读取字段值
如果你用这个函数,你试试性能,假设调用50万次

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表