典型输出示例State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files NameMOUNTED NORMAL N 512 512 4096 1048576 6144000 3072000 1024000 1024000 0 N DATAMOUNTED HIGH N 512 512 4096 1048576 15360000 7680000 2048000 1877333 0 Y OCRMOUNTED EXTERN N 512 512 4096 1048576 2048000 1024000 0 1024000 0 N FRA【一、ASM 冗余级别总览】冗余级别 默认镜像方式 最小 FG 数 可容忍故障数 可用空间比例--------------------------------------------------------------------------------EXTERNAL 无镜像 1 0 (依赖外部RAID) 100%NORMAL 双镜像 (2-way) 2 1 个 FG 故障 ≈ 50%HIGH 三镜像 (3-way) 3 2 个 FG 故障 ≈ 33.3%FLEX 可自定义 3 (至少) 取决于设置 取决于设置EXTENDED 双镜像 (站点级) 3 (每站≥1) 1个站点或1个FG 取决于设置【二、lsdg / V$ASM_DISKGROUP 指标详解】┌──────────────────┬────────┬────────────────────────────────────────────────────┐ │ 参数名 │ 示例值 │ 含义详解 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ State │ MOUNTED│ 磁盘组状态 │ │ │ │ • MOUNTED — 已挂载可被数据库实例访问 │ │ │ │ • DISMOUNTED — 已卸载不可访问 │ │ │ │ • QUIESCING — 正在静默即将卸载 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Type │ NORMAL │ 冗余级别 │ │ │ │ • EXTERNAL — 无镜像依赖外部 RAID可用空间100% │ │ │ │ • NORMAL — 双路镜像 2-way mirror可用空间≈50% │ │ │ │ • HIGH — 三路镜像 3-way mirror可用空间≈33% │ │ │ │ • FLEX — 灵活冗余可自定义文件级冗余 │ │ │ │ • EXTENDED — 扩展冗余跨站点双镜像 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Rebal │ N │ 重平衡状态 │ │ │ │ • N — 未进行重平衡 │ │ │ │ • Y — 正在进行重平衡添加/删除磁盘后 ASM 自动迁移 │ │ │ │ 数据以均匀分布期间 IO 性能可能下降 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Sector │ 512 │ 物理扇区大小字节。现代磁盘常见 512 或 4096。 │ │ │ │ 决定磁盘底层 IO 对齐方式。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Logical_Sector │ 512 │ 逻辑扇区大小字节。 │ │ │ │ 若 Logical_Sector Sector表示磁盘支持 512e/4Kn │ │ │ │ 高级格式ASM 按逻辑扇区进行寻址。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Block │ 4096 │ ASM 元数据块大小字节默认 4KB。 │ │ │ │ 用于存储磁盘组目录、文件目录、区映射等元数据。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ AU │ 1048576│ Allocation Unit 分配单元大小字节默认 1MB。 │ │ │ │ ASM 分配空间的最小单位直接影响条带化和性能。 │ │ │ │ 可选值1MB / 2MB / 4MB / 8MB / 16MB / 32MB / 64MB│ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Total_MB │ 6144000│ 磁盘组所有磁盘的总物理容量MB。 │ │ │ │ 已扣除约 1% 的磁盘头开销ASM 头信息、元数据预留。│ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Free_MB │ 3072000│ 磁盘组当前完全空闲的物理容量MB。 │ │ │ │ ⚠️ 此值未考虑冗余镜像不能直接等同于可创建文件大小。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Req_mir_free_MB │ 1024000│ Required Mirror Free MB — 恢复全冗余所需预留空间。 │ │ │ │ │ │ │ │ 计算逻辑 │ │ │ │ • EXTERNAL: 0 │ │ │ │ • NORMAL(2FG): MAX(单盘容量) │ │ │ │ • NORMAL(2FG): MAX(FG总容量) │ │ │ │ • HIGH(3FG): 2 × MAX(单盘容量) │ │ │ │ • HIGH(3FG): 2 × MAX(FG总容量) │ │ │ │ │ │ │ │ 用途当某个 FailGroup 整体故障时ASM 需要利用此 │ │ │ │ 预留空间在其他 FG 上重建镜像副本确保冗余恢复。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Usable_file_MB │ 1024000│ 实际可用于创建用户文件的空间MB。 │ │ │ │ │ │ │ │ 计算公式 │ │ │ │ Usable_file_MB (Free_MB - Req_mir_free_MB) │ │ │ │ / Mirror_Coefficient │ │ │ │ │ │ │ │ Mirror_Coefficient: NORMAL2, HIGH3, EXTERNAL1 │ │ │ │ │ │ │ │ ⚠️ 若此值为负数说明 Free_MB Req_mir_free_MB │ │ │ │ 空闲空间已不足以应对 FG 故障后的冗余重建需立即扩容│ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Offline_disks │ 0 │ 当前处于 OFFLINE 状态的磁盘数量。 │ │ │ │ • 0 — 所有磁盘正常在线 │ │ │ │ • 0 — 有磁盘离线需尽快排查修复否则冗余降级 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Voting_files │ N │ 是否包含 Clusterware Voting投票文件 │ │ │ │ • Y — 包含此磁盘组用于存储 OCR/Voting 文件 │ │ │ │ • N — 不包含普通数据库数据文件 │ │ │ │ Voting 文件对集群脑裂仲裁至关重要。 │ ├──────────────────┼────────┼────────────────────────────────────────────────────┤ │ Name │ DATA │ 磁盘组名称。创建时指定如 DATA / FRA / RECO 等。 │ └──────────────────┴────────┴────────────────────────────────────────────────────┘【三、核心计算公式】1. 基础公式通用--------------------------------------------------------------------------------Usable_file_MB (Free_MB - Req_mir_free_MB) / Mirror_CoefficientMirror_Coefficient镜像系数:EXTERNAL 1NORMAL 2HIGH 32. Req_mir_free_MB 计算逻辑Oracle 官方规则--------------------------------------------------------------------------------【NORMAL 冗余 — 双镜像可容忍 1 个 FG 故障】FG 数量 Req_mir_free_MB 公式 原理说明 ------------------------------------------------------------------------ 2 MAX(单个磁盘大小) 仅2个FG时预留等于 最大单盘容量用于单盘 故障后在幸存FG内重建镜像 2 MAX(单个 Failure Group 的总容量) ≥3个FG时预留等于最大 FG总容量用于整个FG故障 后向其他FG重建数据【HIGH 冗余 — 三镜像可容忍 2 个 FG 故障】FG 数量 Req_mir_free_MB 公式 原理说明 ------------------------------------------------------------------------ 3 2 × MAX(单个磁盘大小) 仅3个FG时预留等于两 个最大单盘容量之和 3 2 × MAX(单个 Failure Group 的总容量) ≥4个FG时预留等于两个 最大FG容量之和确保任意 两个FG同时故障后可重建【EXTERNAL 冗余】Req_mir_free_MB 03. 有效可用空间不考虑故障恢复预留--------------------------------------------------------------------------------实际可用空间裸 Free_MB / Mirror_Coefficient【四、NORMAL 冗余2个 FG vs 3个 FG 深度对比】场景6 块 1TB 磁盘全部空闲 ┌─────────────────────────────────────────────────────────────────────────┐ │ 配置 A2 个 FailGroup每 FG 3 块盘 │ │ │ │ FailGroup_A: 磁盘1(1TB) 磁盘2(1TB) 磁盘3(1TB) 3TB │ │ FailGroup_B: 磁盘4(1TB) 磁盘5(1TB) 磁盘6(1TB) 3TB │ │ │ │ Total_MB 6TB ≈ 6,144,000 MB │ │ Free_MB 6,144,000 MB │ │ Req_mir_free_MB MAX(单个磁盘大小) 1TB ≈ 1,048,576 MB │ │ │ │ Usable_file_MB (6,144,000 - 1,048,576) / 2 2,547,712 MB ≈ 2.43TB │ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────┐ │ 配置 B3 个 FailGroup每 FG 2 块盘 │ │ │ │ FailGroup_A: 磁盘1(1TB) 磁盘2(1TB) 2TB │ │ FailGroup_B: 磁盘3(1TB) 磁盘4(1TB) 2TB │ │ FailGroup_C: 磁盘5(1TB) 磁盘6(1TB) 2TB │ │ │ │ Total_MB 6TB ≈ 6,144,000 MB │ │ Free_MB 6,144,000 MB │ │ Req_mir_free_MB MAX(FG总容量) 2TB ≈ 2,048,000 MB │ │ │ │ Usable_file_MB (6,144,000 - 2,048,000) / 2 2,048,000 MB ≈ 2TB │ └─────────────────────────────────────────────────────────────────────────┘ 对比结论 ┌──────────────┬───────────────┬───────────────┬──────────────────────────┐ │ 指标 │ 2个FG(每FG3盘)│ 3个FG(每FG2盘)│ 差异 │ ├──────────────┼───────────────┼───────────────┼──────────────────────────┤ │ Total_MB │ ~6TB │ ~6TB │ 相同 │ │ Req_mir_free │ ~1TB │ ~2TB │ 3FG预留更大按FG总容量│ │ Usable_file │ ~2.43TB │ ~2TB │ 2FG可用更多按单盘计算│ │ 故障容忍 │ 1个FG │ 1个FG │ 相同 │ │ 数据分布 │ 一般 │ 更好 │ 3FG更均匀 │ └──────────────┴───────────────┴───────────────┴──────────────────────────┘ 关键结论 • 2个FG时按最大单盘计算预留3个FG时按最大FG总容量计算 • 增加FG数量会改变 Req_mir_free_MB 的计算维度从单盘→FG总容量 • 更多FG带来更好的数据分布和重平衡性能但可能增加预留空间【五、HIGH 冗余3个 FG vs 5个 FG 深度对比】场景15 块 1TB 磁盘全部空闲 ┌─────────────────────────────────────────────────────────────────────────┐ │ 配置 A3 个 FailGroup每 FG 5 块盘 │ │ │ │ FailGroup_A: 5块盘 5TB FailGroup_B: 5块盘 5TB │ │ FailGroup_C: 5块盘 5TB │ │ │ │ Total_MB 15TB ≈ 15,360,000 MB │ │ Free_MB 15,360,000 MB │ │ Req_mir_free_MB 2 × MAX(单个磁盘大小) 2TB ≈ 2,048,000 MB │ │ │ │ Usable_file_MB (15,360,000 - 2,048,000) / 3 4,437,333 MB ≈ 4.23TB│ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────┐ │ 配置 B5 个 FailGroup每 FG 3 块盘 │ │ │ │ FailGroup_A: 3TB FailGroup_B: 3TB FailGroup_C: 3TB │ │ FailGroup_D: 3TB FailGroup_E: 3TB │ │ │ │ Total_MB 15TB ≈ 15,360,000 MB │ │ Free_MB 15,360,000 MB │ │ Req_mir_free_MB 2 × MAX(FG总容量) 6TB ≈ 6,144,000 MB │ │ │ │ Usable_file_MB (15,360,000 - 6,144,000) / 3 3,072,000 MB ≈ 3TB │ └─────────────────────────────────────────────────────────────────────────┘ 对比结论 ┌──────────────┬───────────────┬───────────────┬──────────────────────────┐ │ 指标 │ 3个FG(每FG5盘)│ 5个FG(每FG3盘)│ 差异 │ ├──────────────┼───────────────┼───────────────┼──────────────────────────┤ │ Total_MB │ ~15TB │ ~15TB │ 相同 │ │ Req_mir_free │ ~2TB │ ~6TB │ 5FG预留更大按FG总容量│ │ Usable_file │ ~4.23TB │ ~3TB │ 3FG可用更多按单盘计算│ │ 故障容忍 │ 2个FG │ 2个FG │ 相同 │ │ 数据分布 │ 一般 │ 更好 │ 5FG更均匀 │ └──────────────┴───────────────┴───────────────┴──────────────────────────┘ 关键结论 • 3个FG时按2×最大单盘计算预留3个FG时按2×最大FG总容量计算 • FG数量增加会改变计算维度可能增加 Req_mir_free_MB • 设计时应权衡更多FG带来更好的分布和故障隔离但可能减少可用空间【六、Exadata 平台特殊规则】在 Exadata 平台上Req_mir_free_MB 采用固定比例计算覆盖上述常规逻辑ASM 版本 FG 数量 5 FG 数量 ≥ 5─────────────────────────────────────────────────────────12.2 / 18c TOTAL_MB × 15% TOTAL_MB × 9%其他版本 TOTAL_MB × 15% TOTAL_MB × 15%【七、Voting 文件与 FailGroup 关系】冗余级别 最小磁盘数 Voting文件数 OCR副本数 FailGroup 要求 -------------------------------------------------------------------------------- EXTERNAL 1 1 1 无特殊要求 NORMAL 3 3 2 2 Regular 1 Quorum HIGH 5 5 3 3 Regular 2 Quorum注意Quorum FailGroup 仅存储 Voting 文件不参与用户数据冗余计算。【八、Usable_file_MB 为负数的含义与处理】当 Free_MB ≤ Req_mir_free_MB 时Usable_file_MB 将为零或负数。含义• 当前空闲空间不足以在发生 FG 故障后恢复全冗余• 若此时再发生 FG 故障部分文件将处于降低冗余状态• 数据完整性面临风险处理建议1. 立即添加新磁盘或扩容现有磁盘2. 检查是否有异常增长的大文件3. 评估是否需要调整冗余级别或 FG 分布【九、运维快速查询命令】-- 1. 查看所有磁盘组容量指标SELECTname,type,state,total_mb/1024 AS total_gb,free_mb/1024 AS free_gb,required_mirror_free_mb/1024 AS req_mir_free_gb,usable_file_mb/1024 AS usable_file_gb,decode(sign(usable_file_mb),1,充足,0,临界,-1,告警,未知) AS statusFROM v$asm_diskgroup;-- 2. 查看 FailGroup 详情与容量分布SELECTdg.name AS diskgroup,d.failgroup,COUNT(*) AS disk_count,SUM(d.total_mb)/1024 AS fg_total_gb,SUM(d.free_mb)/1024 AS fg_free_gbFROM v$asm_disk dJOIN v$asm_diskgroup dg ON d.group_number dg.group_numberWHERE d.state NORMALGROUP BY dg.name, d.failgroupORDER BY dg.name, fg_total_gb DESC;-- 3. 查看磁盘详情SELECTname,path,failgroup,total_mb/1024 AS total_gb,free_mb/1024 AS free_gb,ROUND(free_mb/total_mb*100,2) AS free_pctFROM v$asm_diskWHERE state NORMALORDER BY failgroup, total_mb DESC;-- 4. 查看 ASM 磁盘组参数SELECTname,type,allocation_unit_size/1024/1024 AS au_mb,sector_size,block_size,compatibility,database_compatibilityFROM v$asm_diskgroup;【十、设计建议与最佳实践】1. FailGroup 规划原则• 同一 FG 内的磁盘应共享同一故障域同一存储柜、同一控制器、同一电源• 不同 FG 的磁盘应分布在独立的故障域中• 各 FG 容量应尽量相等避免某个 FG 过大导致预留空间虚高2. 冗余级别选择• EXTERNAL有外部 RAID 保护的非核心数据最大化空间利用率• NORMAL大多数生产环境的标准选择平衡成本与保护• HIGH核心交易、金融级数据可容忍双 FG 同时故障3. 容量监控• 定期监控 Usable_file_MB确保 0• 设置告警阈值当 Usable_file_MB 总容量 10% 时预警• 扩容前计算新增磁盘对 Req_mir_free_MB 和 Usable_file_MB 的影响4. Exadata 注意事项• 12.2 且 FG ≥ 5 时预留比例从 15% 降至 9%可显著增加可用空间• 充分利用这一特性在 Exadata 上建议配置 ≥ 5 个 FG