12
返回列表 发新帖
楼主: lc7888

非法日期数据

[复制链接]
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
11#
发表于 2005-3-15 18:33 | 只看该作者
最初由 lc7888 发布
[B]dump的结果如下:
select FINISHDATE,dump(FINISHDATE),RECDATE,dump(RECDATE) from tbs.reception where rowid='AABkwnAAsAACLNAAAC';
FINISHDAT
---------
DUMP(FINISHDATE)
----------------------------------------------------------------
RECDATE
---------
DUMP(RECDATE)
----------------------------------------------------------------
00-DECEMB
Typ=12 Len=7: 100,100,0,0,1,1,1
11-MAY-04
Typ=12 Len=7: 120,104,5,11,18,26,36 [/B]


0年0月0日0时0分0秒
不知道怎么生成的。

除非直接编辑数据文件否则我没有办法模拟出这种错误。
看看是不是数据文件损坏了。

另外,这列上有没有索引?

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2005-3-16 10:00 | 只看该作者
对于这样的情况,分析原因是前台应用程序连接数据库JDBC或ODBC接口在处理非法日期的问题上出了问题。

正常情况用PL/SQL时候ORACLE能检查出非法日期,但通过这些接口或是OCI那么处理非法日期就有BUG存在的情况。

估计还只有在应用代码哪里去找找原因或换换驱动看看。

使用道具 举报

回复
招聘 : 售前/售后支持
论坛徽章:
5
ITPUB元老
日期:2005-04-25 13:27:42授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00
13#
 楼主| 发表于 2005-3-16 10:50 | 只看该作者
那个字段上没有索引
另外通过create table as select 或 insert    select可以把这个表中的错误数据插入到其他表中。

使用道具 举报

回复
招聘 : 售前/售后支持
论坛徽章:
5
ITPUB元老
日期:2005-04-25 13:27:42授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00
14#
 楼主| 发表于 2005-3-16 10:52 | 只看该作者
数据文件损坏的可能性不大,这个表一共有2000多万条记录,其中只有150多条有错误数据的记录,另外这个表访的访问也比较频繁,如果数据文件真的有问题应该还会报错吧?

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
15#
发表于 2005-3-16 11:17 | 只看该作者
最初由 lc7888 发布
[B]那个字段上没有索引
另外通过create table as select 或 insert    select可以把这个表中的错误数据插入到其他表中。 [/B]


怀疑这种方式Oracle没有对表中的值进行检验。

你可以试试通过plsql用游标取出一条有问题的数据,然后在插入到数据库中,看看是否报错?

这张表的数据是如何生成的?会不会是导入的时候造成的错误。

另外,你可以查查是不是Oracle的bug。

使用道具 举报

回复
招聘 : 售前/售后支持
论坛徽章:
5
ITPUB元老
日期:2005-04-25 13:27:42授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00
16#
 楼主| 发表于 2005-3-16 11:40 | 只看该作者
我查过了,没有找到相关的bug,这个表里面的数据都是应用直接插入的,没有导入的过程,所以我们现在基本上定位是应用的问题,准备让应用开发商去接解决了。
用游标的方式插入我等会再去测一下!非常感谢!

使用道具 举报

回复

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

本版积分规则 发表回复

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