使用ASM的朋友估计都有一个困惑,ASM就是一个黑盒子,怎么才能够做到类似如裸设备或者文件系统一样,通过系统的命令(iostat)来监控其磁盘IO的运行性能.其实ORACLE在设计ASM的过程中,也就考虑到了这个需求,把磁盘相关的情况都记录到了ASM相关视图中v$asm_disk和v$asm_disk_stat(这两个视图功能相同,只是查询v$asm_disk需要每次访问磁盘头获取数据,v$asm_disk_stat是磁盘头存储在内存中的数据,查询v$asm_disk_stat对磁盘影响非常小),所以我们可以通过查询v$asm_disk_stat中的数据,然后做减法就可以获得asm disk某个时间段的磁盘io性能情况.ORACLE提供了相关工具叫做asmiostat用来监控,具体可以参考ASMIOSTAT Script to collect iostats for ASM disks [ID 437996.1]
确保TIMED_STATISTICS=TRUE
虽然是默认值,多检查无错,因为到该值为false之时READ_TIME/WRITE_TIME为0
[grid@xifenfei tmp]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Fri Feb 1 08:29:01 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Automatic Storage Management option
SQL> show parameter TIMED_STATISTICS
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
asmiostat使用
[grid@xifenfei tmp]$ ./asmiostat.sh help=y
Invalid parameter: must be > 0; must be >= 0
./asmiostat.sh [-s ASM ORACLE_SID] [-h ASM ORACLE_HOME] [-g diskgroup] [] []
Output:
DiskPath - Path to ASM disk
DiskName - ASM disk name
Gr - ASM disk group number
Dsk - ASM disk number
Reads - Reads
Writes - Writes
AvRdTm - Average read time (in msec)
AvWrTm - Average write time (in msec)
KBRd - Kilobytes read
KBWr - Kilobytes written
AvRdSz - Average read size (in bytes)
AvWrSz - Average write size (in bytes)
RdEr - Read errors
WrEr - Write errors
相关值说明
DiskPath - Path to ASM disk
DiskName - ASM disk name
Gr - ASM disk group number
Dsk - ASM disk number
Reads - 指定时间内I/O读请求次数
Writes - 指定时间内I/O写请求次数
AvRdTm - 平均每次I/O读请求所需时间 (in msec)
AvWrTm - 平均每次I/O写请求所需时间 (in msec)
KBRd - 指定时间内读操作的量(KB)
KBWr - 指定时间内写操作的量(KB)
AvRdSz - 平均每次I/O读请求得到的数据量(B)
AvWrSz - 平均每次I/O写请求得到的数据量(B)
RdEr - 指定时间内I/O读请求错误次数
WrEr - 指定时间内I/O写请求错误次数
asmiostat效果展示
[grid@xifenfei tmp]$ ./asmiostat.sh -s $ORACLE_SID -h $ORACLE_HOME -g DATA 1 3
Date: Fri Feb 1 08:31:45 CST 2013 Interval: 1 secs Disk Group: DATA
DiskPath - DiskName Gr Dsk Reads Writes AvRdTm AvWrTm KBRd KBWr AvRdSz AvWrSz RdEr WrEr
/dev/sdb - DATA_0000 1 0 0 0 0.0 0.0 0 0 0 0 0 0
Date: Fri Feb 1 08:31:47 CST 2013 Interval: 1 secs Disk Group: DATA
DiskPath - DiskName Gr Dsk Reads Writes AvRdTm AvWrTm KBRd KBWr AvRdSz AvWrSz RdEr WrEr
/dev/sdb - DATA_0000 1 0 4 3 0.6 1006.1 0 0 0 0 0 0
Date: Fri Feb 1 08:31:49 CST 2013 Interval: 1 secs Disk Group: DATA
DiskPath - DiskName Gr Dsk Reads Writes AvRdTm AvWrTm KBRd KBWr AvRdSz AvWrSz RdEr WrEr
/dev/sdb - DATA_0000 1 0 8 2 1.3 1.5 0 0 0 0 0 0