eygle.com   eygle.com
eygle.com  
 

« August 21, 2007 | Blog首页 | August 24, 2007 »



August 22, 2007

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

作者:eygle

出处:http://blog.eygle.com

今天在Yangtingkun的Blog上看到了一则关于"ORACLE动态性能视图统计值溢出".

老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中这个增强被加入。

-The End-

Posted by eygle at 11:33 AM | Comments (2)


《循序渐进Oracle》一书的购买途径

作者:eygle

出处:http://blog.eygle.com

虽然自从我收到样书之后,时间已经过去了20天,但是人民邮电出版社仍然没有将书运抵任何一个书店,看来大家还是要等待一段时间。

不过今早,我已经收到了出版社寄到的第一批新书,相信用不了几天,各大书店都会到货。
1.网上书店:
China-Pub的定购地址如下
http://www.china-pub.com/computers/common/info.asp?id=35463

Dearbook的定购地址如下:
http://www.dearbook.com.cn/Book/ViewBook.aspx?pno=ts00212167

Amazon的订购地址如下:
据说这个是网上书店里面最便宜的:
http://www.amazon.cn/detail/product.asp?prodid=zjbk596955

2.上门取书
北京朋友也可以到我的住所取书,ITPUB系列全套四本都有:
可以到 北四环 亚运村小营(华堂商场对面)拿书
来时请提前预约,电话:6493 7293

希望等待能够尽快结束,也希望大家能够从本书中有所收获。
新书的第一章可以从本站得到完全版本,希望大家阅读以后再决定是否购买,阅读链接:
http://www.eygle.com/archives/2008/08/stepbs_oracle_info.html

感谢大家的支持:)

-The End-

Posted by eygle at 10:13 AM | Comments (7)



CopyRight © 2004-2008 eygle.com, All rights reserved.