
以下是对 Oracle 19C ASM 中 V$ASM_DISK 动态性能视图的权威解析。该视图是 ASM 存储管理的核心组件,提供了物理磁盘级别的详细信息。
1. 核心作用
V$ASM_DISK 展示 ASM 实例管理的所有物理磁盘的实时状态和性能指标,主要功能包括:
- 显示磁盘的物理属性和当前状态
- 监控磁盘 I/O 性能和错误统计
- 跟踪磁盘与磁盘组的关联关系
- 提供磁盘空间利用率数据
- 检测磁盘故障和性能瓶颈
- 支持存储配置决策
📌 定位:
ASM 存储系统的"磁盘健康检查仪",提供物理存储介质的全面视图。
2. 使用场景
- 磁盘状态监控:实时检测磁盘 ONLINE/OFFLINE 状态
- 性能调优:识别 I/O 热点磁盘
- 容量规划:分析磁盘空间利用率
- 故障诊断:排查磁盘错误和故障
- 存储扩展:添加新磁盘前的候选盘检查
- 冗余验证:检查故障组配置
- 迁移准备:获取磁盘路径和标识信息
3. 字段含义(Oracle 19c 官方文档定义)
| 列名 | 数据类型 | 说明 |
|---|---|---|
GROUP_NUMBER | NUMBER | 所属磁盘组编号(0=未分配) |
DISK_NUMBER | NUMBER | 磁盘在组内的编号(唯一标识) |
INCARNATION | NUMBER | 磁盘版本号(磁盘被重新加入时递增) |
MOUNT_STATUS | VARCHAR2(7) | 挂载状态:CACHED/OPENED |
HEADER_STATUS | VARCHAR2(8) | 磁盘头状态:MEMBER(正常)CANDIDATE(候选)FORMER(已移除)PROVISIONED(预配置) |
MODE_STATUS | VARCHAR2(11) | 访问模式:ONLINE/OFFLINE |
STATE | VARCHAR2(7) | 运行状态:NORMALSYNCING(同步中)DROPPING(移除中) |
REDUNDANCY | VARCHAR2(9) | 冗余类型:EXTERN/NORMAL/HIGH |
LIBRARY | VARCHAR2(15) | 存储库名称(ASMLIB 使用) |
TOTAL_MB | NUMBER | 磁盘总容量(MB) |
FREE_MB | NUMBER | 可用空间(MB) |
NAME | VARCHAR2(30) | 磁盘名称(用户定义或自动生成) |
PATH | VARCHAR2(4000) | 操作系统设备路径 |
PRODUCT | VARCHAR2(30) | 磁盘厂商信息 |
CREATE_DATE | DATE | 创建时间 |
MOUNT_DATE | DATE | 最后挂载时间 |
REPAIR_TIMER | NUMBER | 磁盘修复倒计时(秒) |
FAILGROUP | VARCHAR2(30) | 所属故障组名称 |
SECTOR_SIZE | NUMBER | 物理扇区大小(字节) |
BLOCK_SIZE | NUMBER | 逻辑块大小(字节) |
READ_TIME | NUMBER | 累计读操作时间(厘秒) |
WRITE_TIME | NUMBER | 累计写操作时间(厘秒) |
BYTES_READ | NUMBER | 读取总字节数 |
BYTES_WRITTEN | NUMBER | 写入总字节数 |
READ_ERRORS | NUMBER | 读错误次数 |
WRITE_ERRORS | NUMBER | 写错误次数 |
4. 相关视图与基表
相关视图
| 视图 | 说明 |
|---|---|
V$ASM_DISK_STAT | 磁盘统计信息(性能开销低) |
V$ASM_DISKGROUP | 磁盘组信息 |
V$ASM_OPERATION | 磁盘操作进度(如 rebalance) |
GV$ASM_DISK | RAC 环境的全局视图 |
V$ASM_ATTRIBUTE | 磁盘属性配置 |
基表(X$表)
X$KFDK:V$ASM_DISK的底层结构-- 查看基表结构(仅供诊断) SELECT * FROM X$KFDK WHERE NUMBER_KFDK = 1; -- 磁盘编号1
5. 核心原理
磁盘管理机制
关键技术细节
-
磁盘头结构:
- 前 4K 包含 ASM 元数据
- 存储:磁盘组号、磁盘号、AU 大小、时间戳
kfed read /dev/sdb1 | grep -E 'kfbh.type|grpnum|disknum' -
状态转换:
CANDIDATE→MEMBER:ALTER DISKGROUP ADD DISKMEMBER→FORMER:ALTER DISKGROUP DROP DISKOFFLINE→ONLINE:自动修复或手动操作
-
I/O 统计:
- 每 3 秒更新一次性能计数器
- 基于
ksfd内核模块收集数据
-
故障处理:
OFFLINE磁盘触发REPAIR_TIMER倒计时(默认 3.6h)- 计时器归零前未修复则自动 drop
6. 常用 SQL 查询与操作
(1) 查看所有磁盘基本信息
SELECT name, path, header_status, state, total_mb, free_mb
FROM v$asm_disk;
(2) 检查故障磁盘
SELECT path, header_status, state, mount_status, repair_timer
FROM v$asm_disk
WHERE state != 'NORMAL'
OR header_status NOT IN ('MEMBER', 'CANDIDATE');
(3) 分析磁盘 I/O 性能
SELECT name,
(read_time + write_time) AS total_time,
ROUND(BYTES_READ/1024/1024) AS read_mb,
ROUND(BYTES_WRITTEN/1024/1024) AS write_mb,
read_errors + write_errors AS total_errors
FROM v$asm_disk_stat
ORDER BY total_time DESC;
(4) 查找候选磁盘
SELECT path, total_mb, product
FROM v$asm_disk
WHERE header_status = 'CANDIDATE';
(5) 检查磁盘空间利用率
SELECT d.name,
d.total_mb,
d.free_mb,
ROUND((d.total_mb - d.free_mb) / d.total_mb * 100, 2) AS used_pct,
g.name AS diskgroup
FROM v$asm_disk d
JOIN v$asm_diskgroup g ON d.group_number = g.group_number;
(6) 验证故障组配置
SELECT failgroup,
COUNT(*) AS disks,
SUM(total_mb) AS total_size
FROM v$asm_disk
WHERE group_number = (SELECT group_number
FROM v$asm_diskgroup
WHERE name = 'DATA')
GROUP BY failgroup;
(7) 添加新磁盘
ALTER DISKGROUP DATA ADD DISK
'/dev/sdc1' NAME DATA_003,
'/dev/sdd1' NAME DATA_004;
(8) 修复离线磁盘
ALTER DISKGROUP DATA ONLINE DISK DATA_002;
(9) 移除故障磁盘
ALTER DISKGROUP DATA DROP DISK DATA_005 FORCE;
(10) 检查 4K 扇区磁盘
SELECT name, path, sector_size
FROM v$asm_disk
WHERE sector_size = 4096; -- 4K 扇区磁盘
总结
- 核心作用:提供 ASM 物理磁盘的实时状态和性能指标
- 关键字段:
HEADER_STATUS:磁盘成员状态STATE:运行状态PATH:物理设备路径TOTAL_MB/FREE_MB:空间利用率
- 运维价值:
- 最佳实践:
- 定期监控
READ_ERRORS/WRITE_ERRORS - 确保
REPAIR_TIMER> 0 的磁盘及时修复 - 使用
V$ASM_DISK_STAT降低性能开销 - 为磁盘命名(
NAME)提高可管理性
- 定期监控
- 注意事项:
V$ASM_DISK查询会访问磁盘头,适度使用- RAC 环境中磁盘状态在所有节点一致
- 磁盘路径变更需重新扫描:
ALTER SYSTEM SCAN DISKS - ASMLIB 磁盘显示
PATH为ORCL:磁盘名
⚠️ 关键警告:
- 强制
DROP DISK可能导致数据丢失- 混合 512e/4Kn 扇区磁盘需统一配置
- 超过
DISK_REPAIR_TIME的离线磁盘会自动移除
欢迎关注我的公众号《IT小Chen》
1828

被折叠的 条评论
为什么被折叠?



