
Oracle 19c: V$ASM_VOLUME 动态性能视图详解
核心作用:管理ASM动态卷(ADVM Volumes),提供ASM卷设备的配置、状态和空间使用信息,支持ACFS文件系统。
1. 视图核心作用
- 卷管理:监控ASM动态卷(ADVM)的创建、状态和属性
- 空间监控:跟踪卷的空间分配和使用情况
- ACFS支持:为ASM集群文件系统(ACFS)提供底层卷设备
- 性能诊断:识别卷相关的I/O性能问题
- 资源规划:分析卷空间利用率指导扩容决策
📌 注意:ADVM功能需ASM兼容性参数 ≥ 11.2.0.3
2. 关键使用场景
- ACFS部署:创建和管理支撑ACFS的卷设备
- 存储扩展:监控卷空间使用率,及时扩容
- 故障切换:诊断卷状态异常(如OFFLINE/DISABLED)
- 性能优化:分析卷I/O负载均衡
- 安全审计:验证卷访问权限配置
- 多租户隔离:为不同应用分配专用卷
3. 字段详解 (Oracle 19c)
| 字段名 | 数据类型 | 说明 |
|---|---|---|
GROUP_NUMBER | NUMBER | 卷所属磁盘组编号(关联V$ASM_DISKGROUP) |
VOLUME_NUMBER | NUMBER | 卷唯一标识号(ASM内部生成) |
VOLUME_NAME | VARCHAR2(30) | 卷名称(用户创建时指定) |
VOLUME_DEVICE | VARCHAR2(30) | 操作系统设备路径(如/dev/asm/vol1-123) |
SIZE | NUMBER | 卷总大小(字节) |
ALLOCATED | NUMBER | 已分配空间(字节) |
FREE | NUMBER | 可用空间(字节) |
STATE | VARCHAR2(11) | 卷状态:ENABLED/DISABLED/CONNECTED/DISCONNECTED |
USAGE | VARCHAR2(11) | 使用状态:MOUNTED/UNMOUNTED/CLOSED |
REDUNDANCY | VARCHAR2(9) | 冗余级别:MIRROR/HIGH/UNPROT/PARITY |
STRIPE | VARCHAR2(7) | 条带化策略:FINE/COARSE |
MOUNTPATH | VARCHAR2(256) | ACFS挂载点路径(若关联ACFS) |
VOLUME_CLIENT | VARCHAR2(64) | 挂载客户端信息(主机名或实例名) |
4. 相关视图与基表
关联视图
GV$ASM_VOLUME:集群所有实例的卷信息V$ASM_DISKGROUP_STAT:磁盘组I/O统计(卷底层存储)V$ASM_ACFSVOLUMES:ACFS文件系统与卷的映射关系V$ASM_VOLUME_STAT:卷I/O性能统计(读写次数/延迟)DBA_HIGH_WATER_MARK_STATISTICS:卷空间高水位统计
底层基表
X$KFVOL:ASM卷元数据表(需SYSASM权限)SELECT * FROM X$KFVOL WHERE VOLUME_KFVOL = 1;X$KFFIL:卷文件条目表(卷在ASM中的文件表示)
5. 核心原理
ADVM架构
关键特性
- 动态扩展:卷可在线扩展大小
ALTER DISKGROUP DATA RESIZE VOLUME app_vol SIZE 50G; - 设备抽象:通过
/dev/asm/*提供标准块设备接口 - 集群感知:RAC环境中所有节点自动识别卷设备
- 空间分配:采用"稀疏分配"(Sparse Allocation),物理空间按需分配
状态转换
6. 常用操作SQL
查看所有卷信息
SELECT
g.NAME AS disk_group,
v.VOLUME_NAME,
v.VOLUME_DEVICE,
ROUND(v.SIZE/1024/1024/1024, 2) AS size_gb,
ROUND(v.FREE/1024/1024/1024, 2) AS free_gb,
v.STATE,
v.USAGE,
v.MOUNTPATH
FROM V$ASM_VOLUME v
JOIN V$ASM_DISKGROUP g ON v.GROUP_NUMBER = g.GROUP_NUMBER;
创建新卷
ALTER DISKGROUP DATA ADD VOLUME app_vol SIZE 20G;
扩展卷容量
ALTER DISKGROUP DATA RESIZE VOLUME app_vol SIZE 30G;
启用/禁用卷
-- 禁用卷
ALTER DISKGROUP DATA DISABLE VOLUME app_vol;
-- 启用卷
ALTER DISKGROUP DATA ENABLE VOLUME app_vol;
监控卷空间压力
SELECT
VOLUME_NAME,
ROUND((SIZE - FREE) * 100 / SIZE, 2) AS used_pct,
SIZE/1024/1024 AS size_mb,
FREE/1024/1024 AS free_mb
FROM V$ASM_VOLUME
WHERE (SIZE - FREE) / SIZE > 0.8; -- >80%使用率
关联ACFS信息
SELECT
v.VOLUME_NAME,
a.ACFS_VOLUME_NAME,
a.MOUNTPOINT,
a.VOLUME_DEVICE
FROM V$ASM_VOLUME v
JOIN V$ASM_ACFSVOLUMES a ON v.VOLUME_DEVICE = a.VOLUME_DEVICE;
删除卷
ALTER DISKGROUP DATA DROP VOLUME app_vol;
注意事项
- 兼容性要求:
SELECT compatibility FROM V$ASM_DISKGROUP; -- 必须≥11.2.0.3 - 空间分配限制:
- 卷大小不能超过磁盘组可用空间
- 卷最小尺寸为1个分配单元(AU)
- ACFS依赖:
- 删除ACFS使用的卷需先卸载文件系统
$ acfsutil unmount /app_data - 性能优化:
- 关键业务卷使用
FINE条带化 - 监控
V$ASM_VOLUME_STAT的READ_TIME/WRITE_TIME
- 关键业务卷使用
- 安全实践:
-- 限制卷访问权限 GRANT READ ON VOLUME app_vol TO USERGROUP app_team; - RAC环境:
- 卷操作在单个ASM实例执行即可
- 使用
GV$ASM_VOLUME验证集群一致性
💡 最佳实践:
- 为每个ACFS创建专用卷
- 保留10-20%的卷空闲空间
- 定期检查卷碎片:
SELECT VOLUME_NAME, FRAGMENTATION FROM V$ASM_VOLUME_STAT WHERE FRAGMENTATION > 30; -- >30%碎片率需优化
通过V$ASM_VOLUME可实现企业级存储的灵活管理,特别适用于云环境、多应用共享存储等场景。
欢迎关注我的公众号《IT小Chen》
Oracle 19c V$ASM_VOLUME视图详解

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



