所有测试环境为(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. 做了测试如下:
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)
(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 版本中出现。