Flex ASM不是运行时可开启的开关,必须在Grid Infrastructure安装阶段显式选择Flex Cluster选项启用,后期无法转换;其依赖ASM基数、中心/叶节点拓扑及OCR存于Normal冗余ASM磁盘组等前提条件。

Flex ASM 不是开关一按就生效的配置项,它依赖集群拓扑和 ASM 基数设置,且必须在安装 Grid Infrastructure 阶段启用,后期无法直接“开启”。
Flex ASM 必须在集群部署时启用,不能事后补开
Oracle 12c 的 Flex ASM 是集群初始化时由 runInstaller 或 addNode.sh 根据选项决定的架构模式,不是运行时可切换的功能。一旦用传统(non-flex)模式安装完成,crsctl modify resource ora.asm -attr "ENABLED=1" 这类操作无效——ASM 实例本身已按 legacy 方式注册进 Clusterware,元数据结构不兼容。
- 安装时必须显式选择 “Configure Oracle Flex Cluster” 选项(GUI 安装器)或在响应文件中设置
FLEX_CLUSTER=true - 若跳过该步骤,后续只能重建集群;
srvctl convert config在 12.1.0.1 中不存在,官方不支持转换 - 验证是否启用:执行
olsnodes -f,Flex 集群下会显示hub或leaf标签;legacy 集群只显示节点名
调整 ASM 基数(ASM cardinality)控制故障转移能力
Flex ASM 的核心是“一个节点挂了,它的 ASM 连接自动漂移到其他节点”,但能漂移到几台、是否真能接管,取决于 ASM 基数——即集群中默认运行的 ASM 实例数量。基数太低,故障节点可能无处可漂;太高,则浪费资源并增加心跳压力。
- 查看当前基数:
asmcmd lsct(显示cardinality字段)或crsctl stat res ora.asm -p | grep CARDINALITY - 修改基数(例如设为 2):
crsctl modify resource "ora.asm" -attr "CARDINALITY=2" - 修改后需重启 ASM 资源:
srvctl stop asm -f→srvctl start asm;注意:这会触发一次短暂的 ASM 连接重路由,数据库实例不受影响(因 I/O 不经过 ASM 实例) - 基数建议值:生产环境通常设为 3(默认),叶节点数 ≥2 时可考虑设为 2;切勿设为 1,否则失去冗余能力
叶节点(leaf node)上不能运行 ASM 实例,但能访问 ASM 存储
这是 Flex ASM 最易误解的一点:很多人以为“叶节点也要装 ASM 软件”。实际上,叶节点上 ora.asm 资源根本不会被 CRS 启动,也不允许手动启动 asmca 或 sqlplus / as sysasm 连接本地 ASM 实例——它压根不存在。
- 叶节点通过其关联的中心节点(hub node)间接使用 ASM:数据库实例发起 I/O 时,由本地
ora.cssd和ora.ctssd将元数据请求转发给 hub 上的 ASM 实例 - 验证方式:
ps -ef | grep asm在叶节点应无输出;而在 hub 节点能看到asm_pmon_+ASM1等进程 - 叶节点上的数据库实例仍可正常创建表空间、读写数据文件,只要 hub 节点的 ASM 实例在线且磁盘组可用
- 若 hub 故障,Clusterware 自动将叶节点重新绑定到另一个 hub,整个过程对数据库透明——前提是 ASM 基数 ≥2 且网络可达
Flex ASM 下 OCR/Voting Disk 必须放在 Normal 冗余磁盘组
Flex 集群要求 OCR 和表决盘(voting disk)必须位于 ASM 磁盘组中,且该磁盘组冗余级别不能是 External(单点故障风险),也不能是 High(12c Flex 不支持 High 冗余的 OCR 磁盘组)。否则安装或升级会失败,或出现 CRS-4535: Cannot communicate with Cluster Ready Services。
- 建库前务必确认:
asmcmd lsdg中 OCR 所在磁盘组的Redundancy列为NORMAL - 若误建在 External 组,需先用
ocrconfig -repair迁移 OCR,再 drop 原磁盘组;不可直接改冗余级别 - Flex 集群中,MGMTDB(集群管理数据库)也必须存于 ASM,且同样要求 Normal 冗余;它默认使用
DATA磁盘组,但生产环境建议单独划出MGMT组 - 磁盘空间预留:OCR+Voting+MGMT 至少需要 80GB 空闲空间(Normal 冗余下,3 块盘 × 30GB 裸容量)
真正难的不是命令怎么敲,而是理解 Flex ASM 的本质:它把 ASM 从“每个节点必装的守护进程”,变成了“集群级共享服务”。配置错一步,比如基数设成 1 或 OCR 放在 External 组,表面上能启库,但第一次节点故障时就会暴露——连接中断、数据库 hang 住、甚至 OCR 损坏。这些都不是重启能解决的。











