ITPub博客

首页 > 数据库 > 国内数据库 > 【YashanDB 知识库】收集统计信息时报错 YAS-00507 date/timestamp value overflow

【YashanDB 知识库】收集统计信息时报错 YAS-00507 date/timestamp value overflow

原创 国内数据库 作者:崖山数据库系统YashanDB 时间:2024-12-30 17:08:43 0 删除 编辑

本文内容来自 YashanDB 官网,原文内容请见  https://www.yashandb.com/newsinfo/7817899.html?templateId=171...

问题现象

收集统计信息时报错:

SQL> exec DBMS\_STATS.GATHER\_TABLE\_STATS('USER', 'T', null, 1, FALSE, 'FOR ALL COLUMNS SIZE AUTO', 8, 'GLOBAL', TRUE);

YAS-00507 date/timestamp value overflow

问题的风险及影响

统计信息无法收集成功

问题影响的版本

所有的 YashanDB 版本

问题发生原因

表中的 timestamp 列实际存储的数据,超出了 timestamp 的范围。

timestamp 的范围为 1-1-1 00:00:00.000000 ~ 9999-12-31 23:59:59.999999

解决方法及规避方式

1、在收集统计信息时指定列 (method\_opt 指定为 for colums (col\_1) size auto),确认是哪一列导致的问题。

示例:exec DBMS\_STATS.GATHER\_TABLE\_STATS ('USER', 'T', null, 1, FALSE, 'for columns (b) size auto', 8, 'GLOBAL', TRUE);

2、使用 jdbc 查询此列,结果集用 getString 方法获取,查看实际存储的值。

示例:

PreparedStatement ps = conn.prepareStatement("select b from ggg order by b desc");

ResultSet rs = ps.executeQuery();

while(rs.next()){

System.out.println(rs.getString(1));

}

最后控制台输出中,年的部分大于 9999 的,就是异常数据。

示例 (前两行为异常数据):

10001-01-12 01:01:01.0

10000-01-12 01:01:01.0

9999-01-12 01:01:01.0

9998-01-12 01:01:01.0

3、找到异常的数据行后,可以将此行数据删除;或者将对应列的数据更新为合法的值。操作完成后即可正常收集统计信息。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3061643/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639778