科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[Oracle]v$sql视图buffer_gets统计溢出为负数的现象

[Oracle]v$sql视图buffer_gets统计溢出为负数的现象

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Oracle v$sql.buffer_gets由于采用的是C的int类型,C的unsigned int型可以表示2^32,而包含正负整数,就只能表示一半。

作者:盖国强 来源:eygle.com 2007年8月23日

关键字: ORACLE SQL 盖国强 eygle

  • 评论
  • 分享微博
  • 分享邮件

老Yang研究了一下v$sql.buffer_gets溢出位负数现象的原因,以前类似的,也看到过负数,没有深究,看到老Yang的研究成果,要学习记录一下。

v$sql.buffer_gets由于采用的是C的int类型,C的unsigned int型可以表示2^32,而包含正负整数,就只能表示一半。

所以这个数值经常会溢出而显示负数。随便找一个生产的数据库,就可以找到类似的情况:

SQL> select sql_text,executions,to_char(buffer_gets) from v$sql where buffer_gets <0;

SQL_TEXT

------------------------------------------------------------------------------------------------------------------------

EXECUTIONS TO_CHAR(BUFFER_GETS)

---------- ----------------------------------------

select count(*) as col_0_0_ from HS_forummessage forummessa0_ where (forummessa0_.forumID=:1 )

205681 -1321805203

select count(info0_.NUMINFOGUID) as col_0_0_ from HS_INFO info0_, HS_C3_LEVEL level1_ where info0_.INTLEVEL=level1_.NUML

EVELID and info0_.INTENABLEDFLAG=1 and info0_.INTPUBLISHSTATE=1 and info0_.DATPUBLISHDATE<=:1 and info0_.NUMCATALOGGUID=

:2 and (level1_.INTLEVEL in (1 , 2 , 3 , 4 , 5)) order by info0_.DATPUBLISHDATE DESC, info0_.NUMORDER DESC

14718967 -1261787636

select count(info0_.NUMINFOGUID) as col_0_0_ from HS_INFO info0_ where info0_.INTENABLEDFLAG=1 and info0_.INTPUBLISHSTAT

E=1 and info0_.DATPUBLISHDATE<=:1 and (info0_.NUMCATALOGGUID in (select catalog1_.NUMCATALOGGUID from HS_CATALOG catalog

1_ where catalog1_.INTCATALOGTYPE=1 and catalog1_.NUMAPPGUID=:2)) and (info0_.VC2INDEXWORDS like :3)

359138 -1950604219

也就是说v$sql视图中的buffer_gets最多能表示:

SQL> select power(2,32)/2 from dual;

POWER(2,32)/2

-------------

2147483648

基本上超过了2 billion,就要转为负数了。

那么这是不是一个Bug呢?

搜索Metalink可以发现很多相关的Bug报告,例如bug no:5689640

但是最终Oracle不认为这是一个Bug,因为即使底层表x$kglob的相关值定义从KQFCINT() 变更位 KQFCUIN()。也只不过将这个限制扩大了一倍而已,这个限制早晚还会被达到。

所以,这个修正请求被Oracle定义位增强而不是Bug。据说在Oracle11g中这个增强被加入。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章