使用 SQL 检查 ASM 磁盘状态、错误计数和候选磁盘
OracleASM命令
-- On the ASM instance (or from a DB instance; there only the disk groups in use are visible):
SELECT dg.name AS diskgroup, d.disk_number, d.name AS disk_name, d.path,
d.header_status, d.mount_status, d.mode_status, d.state,
d.failgroup, d.total_mb, d.free_mb, d.read_errs, d.write_errs
FROM v$asm_disk d
LEFT JOIN v$asm_diskgroup dg ON dg.group_number = d.group_number
ORDER BY dg.name, d.disk_number;
-- Disk group summary: AU size, offline disks, voting files:
SELECT name, type, allocation_unit_size/1048576 AS au_mb,
compatibility, database_compatibility, offline_disks, voting_files
FROM v$asm_diskgroup;
-- Databases using this ASM:
SELECT instance_name, db_name, status, software_version, compatible_version
FROM v$asm_client;作用
列出每块磁盘的 header_status(MEMBER、CANDIDATE、PROVISIONED、FORMER)、mount/mode 状态、故障组和读/写错误计数;以及每个磁盘组的离线磁盘数和 ASM 客户端。
适用场景
添加磁盘前,检查新 LUN 是否显示为 CANDIDATE/PROVISIONED;磁盘故障时,查看哪块磁盘 OFFLINE 以及是否有 I/O 错误。
注意
只读。v$asm_disk 每次调用都会执行磁盘发现,在磁盘较多的系统上很慢;频繁监控请使用 v$asm_disk_stat(不执行发现,不显示新磁盘)。切勿用 FORCE 将 header_status 为 MEMBER 的磁盘添加到另一个磁盘组;这会破坏现有数据。