Oracle10g V$OSSTAT 關於PHYSICAL_MEMORY_BYTES 的 Bug

myhuaer發表於2009-04-10

從我的blog轉自我的space:
 
Oracle10g V$OSSTAT 關於PHYSICAL_MEMORY_BYTES 的 Bug:

所有測試環境為(Version=10.2.0.3, 64bits)
  

V$OSSTST View 給10g 使用者在Oracle 中獲取OS 資訊提供了方便途徑。但在使用過程中發現了一處Bug。先看Oracle 對 V$OSSTAT 做個解釋

V$OSSTAT: displays system utilization statistics from the operating system.
          One row is returned for each system statistic.


PHYSICAL_MEMORY_BYTES
Total number of bytes of physical memory


分別在三個Platform. 做了測試如下:

AIX 5.3   

1* SELECT stat_name,value FROM V$OSSTAT where stat_name='PHYSICAL_MEMORY_BYTES'


STAT_NAME                                                      VALUE
----------------------------------- --------------------------------
PHYSICAL_MEMORY_BYTES                                 16,710,107,136

AIX Physical Memory:

$ lsattr -El sys0 -a realmem
realmem 16318464 Amount of usable physical memory in Kbytes False


16710107136/1024=16318464 Kbytes  二者一致





HP-UX 11i



SELECT stat_name,value FROM V$OSSTAT where stat_name='PHYSICAL_MEMORY_BYTES';


$ uname -a
HP-UX benqora4 B.11.11 U 9000/800 2311437608 unlimited-user license


SQL> column stat_name format a30
SQL> column value format 9999999999999
SQL> SELECT stat_name,value FROM V$OSSTAT where stat_name='PHYSICAL_MEMORY_BYTES';


STAT_NAME                               VALUE
------------------------------ --------------
PHYSICAL_MEMORY_BYTES             17177772032



HP-UX Physical Memory:



# head -l -n 1200 /var/adm/syslog/syslog.log|grep Physical|grep avail|cut -c 35-|dos2ux
   Physical: 16775168 Kbytes, lockable: 13423000 Kbytes, available: 15405824 Kbytes


SQL>select 17177772032/1024 from dual


16775168  Kbytes  二者一致


上面兩個作業系統和Oracle White Paper 中說得一致。




下面我們來看看 RedHat AS4 看看如何:


RedHat AS4:


[root@itc-test9 ~]# uname -a
Linux itc-test9 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:29:47 EST 2005 x86_64 x86_64 x86_64 GNU/Linux
[root@itc-test9 ~]#


SQL> column stat_name format a30
SQL> column value format 9999999999999
SQL> SELECT stat_name,value FROM V$OSSTAT where stat_name='PHYSICAL_MEMORY_BYTES';


STAT_NAME                                                             VALUE
---------------------------------------------------------------- ----------
PHYSICAL_MEMORY_BYTES                                                 87132


RedHat AS4 Physical Memory:


[root@itc-test9 ~]# more /proc/meminfo
MemTotal:      2056000 kB
MemFree:         87132 kB
Buffers:        139580 kB
Cached:        1419252 kB


所以在 Red hat Linux 64bit,Oracle Version=10.2.0.3  上 V$OSSTAT 的Physical Memory Bytes 顯示的為


系統 Free Memory XXX KBits 的數量。


從測試狀況來看應該是 Oracle 10.2.0.3 在 Red hat As4 Linux上的一個Bug.




如果有人有其他 OS,不妨來驗證 V$osstat Physical Memory一下是否正確。(如 Windows 和 Solaris)


在Solaris 10 ,10gr2 RAC測試 環境測試結果為:
(node1 48G,node2 32G)


SQL> SELECT stat_name, ROUND (VALUE / (1024 * 1024 * 1024), 2) "Physical Mem(G)"
  FROM gv$osstat
WHERE stat_name = 'PHYSICAL_MEMORY_BYTES';
  2    3
STAT_NAME                                                        Physical Mem(G)
---------------------------------------------------------------- ---------------
PHYSICAL_MEMORY_BYTES                                                      31.93
PHYSICAL_MEMORY_BYTES                                                      47.92

證實真是一個Bug 只在Linux 版本中出現。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/34596/viewspace-587005/,如需轉載,請註明出處,否則將追究法律責任。

相關文章