« oramon如何从V$SYSSTAT收集性能数据?
Oracle » http://www.anysql.net/oracle/oramon-system-statistics.html 2009-06-24Oracle系统级的性能统计数据对于解决性能问题十分有用, 因此在8, 8i, 9i, 10g, 11g的发展过程中, 性能统计项一直在不断增加. 要充分发挥这些数据的作用, 关键是如何展示这些性能数据, 以利于性能问题分析, 例如关于Oracle中物理读的一些统计值.
SQL> SELECT name, value FROM V$SYSSTAT WHERE STATISTIC# IN (54,120,56);
NAME VALUE
—————————— ———-
physical reads 2373
physical reads direct 39
physical reads direct (lob) 0
如果只看绝对值, 是没有多少作用的, 从中看不到什么有用的信息.
20:10:24 SQL> select name,value from v$sysstat where statistic#=54;
NAME VALUE
—————————— ———-
physical reads 3340……
20:10:36 SQL> select name,value from v$sysstat where statistic#=54;
NAME VALUE
—————————— ———-
physical reads 6371
执行两次, 差值(6371 – 3340 = 3031)表示Oracle在两次收集的12秒时间(20:10:24 to 20:10:36)内总共从磁盘上读取了3031个数据块, 平均每秒钟303个块, 就很好地告诉了我们数据库的物理IO压力情况. 用oramon可以将不同的性能指标数据和时间显示成二维矩阵, 方便我们查看和分析问题.
www.AnySQL.net Exec BGets RReq Read Writ Redo …
11/27-20:15:47 54 206 15 15 0 0 …
11/27-20:15:57 196 718 41 41 0 664 …
11/27-20:16:07 64 637 19 61 0 6192 …
11/27-20:16:17 17 16 0 0 0 0 …
11/27-20:16:27 17 13 0 0 0 0 …
11/27-20:16:37 16 6 0 0 0 0 …
用oramon工具可以较高频率(10秒一次)来收集数据, 更容易抓取瞬间的数据负载变化, 通过分析这段时间的各个性能数据, 如: Exec=执行次数, BGets=逻辑读, RReq=读请求, Read=特理读, Writ=物理写, Redo=日志量, 等等, 便可以知道负载升高的精确原因, 从而去采取有效措辞.


简单实用,清晰明了.