目录
[方法一:使用 asmcmd showclustermode (最直接)](#方法一:使用 asmcmd showclustermode (最直接))
[方法二:检查 crsctl 资源 (查看集群资源)](#方法二:检查 crsctl 资源 (查看集群资源))
[方法三:使用 srvctl 命令 (查看ASM配置)](#方法三:使用 srvctl 命令 (查看ASM配置))
[二、什么是Oracle ACFS?在哪些场景下ACFS是有用的?](#二、什么是Oracle ACFS?在哪些场景下ACFS是有用的?)
[2.1.何时使用 ACFS?](#2.1.何时使用 ACFS?)
[2.1.2. 测试与开发环境的快速搭建](#2.1.2. 测试与开发环境的快速搭建)
[2.1.3. 简化 Oracle RAC 和集群的软件管理](#2.1.3. 简化 Oracle RAC 和集群的软件管理)
[2.1.4. 通用应用程序文件的集群存储](#2.1.4. 通用应用程序文件的集群存储)
[2.1.5. Oracle Standard Edition High Availability](#2.1.5. Oracle Standard Edition High Availability)
[2.2.何时不使用 ACFS?](#2.2.何时不使用 ACFS?)
[三、什么是Flex ASM?](#三、什么是Flex ASM?)
官网: Automatic Storage Management (ASM) Technical Brief
一、什么是ASM?与非传统原始文件系统对比有哪些优势?
Oracle Automatic Storage Management(ASM)是用于Oracle数据库文件的卷管理器和文件系统,支持单实例Oracle数据库和Oracle Real Application Clusters(Oracle RAC)配置。
Orace ASM是 Oracle 官方强烈推荐的数据库存储解决方案,它作为传统 raw devices(原始设备/裸设备)和 OS 文件系统(如 ext4、XFS、NTFS 等)的替代方案,提供了一系列显著优势。
- Oracle 的明确立场 :自 12c 起,原始设备(Raw Devices)已不被支持。升级到 Oracle Clusterware 12c/19c 前,必须将 OCR 和投票文件从原始设备迁移到 ASM 或共享文件系统。
- 文档依据:多个 "grid-infrastructure-installation-and-upgrade-guide-.pdf" 文件均指出:"Direct use of raw or block devices is not supported."
- 并非适用于所有文件 :ASM 主要针对数据库文件 优化。对于通用的非数据库文件(如应用程序二进制文件、日志),建议使用构建在 ASM 之上的 Oracle ACFS。
**Oracle ASM还利用Oracle Managed Files(OMF)功能来简化数据库文件管理。**OMF会在指定位置自动创建文件。在删除表空间或文件时,OMF还会为文件命名并在释放空间时删除它们。使用OMF创建新文件时,会为新文件生成新名称,从而避免覆盖原有文件。
在引入 ASM 之前,客户通常必须部署第三方文件系统和卷管理产品。有了 ASM,存储资源被分配给 ASM 进行管理,数据库数据则保存在 ASM 磁盘组中

Oracle ASM 相比传统文件系统/原始设备的优势可归纳为下表:
|-------------------|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 对比维度 | 传统文件系统 / 原始设备 | Oracle ASM 的优势 |
| 管理与自动化 | 手动、繁琐 :需手动创建、命名、放置和调整大量文件; 依赖外部卷管理器(LVM/RAID); 空间扩展常需停机。 | 自动化与简化 : • 磁盘组抽象 :管理少数磁盘组而非大量文件/磁盘。 • 与OMF集成 :自动管理文件创建、命名和删除。 • 在线操作 :可动态添加/移除磁盘,自动在线重平衡 数据,无需停机。 • 内置卷管理:无需第三方LVM,由其自身实现条带化与镜像。 |
| 性能优化 | 易有热点 :手动分布文件难以均匀,易产生I/O瓶颈; 需手动进行I/O调优。 | 智能负载均衡 : • 自动条带化 :将每个文件均匀分布到所有磁盘,自动消除热点 ,提供一致性能。 • 性能可比裸设备 :I/O性能与原始设备相当。 • 免手动调优:自动分布I/O负载,移除手动调优需求。 |
| 高可用性与数据保护 | 冗余不灵活 :通常在硬件/卷级别设置,所有文件策略相同; 磁盘故障后重建耗时。 | 灵活、高效的保护 : • 文件级镜像 :可在同一磁盘组内为不同文件设置不同冗余级别(NORMAL/HIGH/EXTERNAL)。 • 快速镜像重同步 :磁盘临时故障恢复后,仅同步变化的数据块,大幅缩短恢复时间 。 • 坏块自动修复:可直接从镜像副本自动修复损坏块。 |
| 可扩展性与集成 | 集群支持复杂 :RAC环境需配置集群文件系统或管理大量原始设备,复杂度高; 与数据库功能集成弱。 | 原生集群与深度集成 : • RAC官方推荐 :为Oracle RAC提供开箱即用的共享存储,简化配置。 • 超大规模支持 :单个磁盘组支持多达10,000块磁盘。 • 与数据库功能集成 :易于结合分区实现存储分层;作为ACFS基础支撑通用文件存储。 |
1.1.怎么查看当前的ASM模式?
方法一:使用 asmcmd showclustermode (最直接)
这是最直接的方法。在任意节点上,以grid用户执行:
asmcmd showclustermode

如果输出为 ASM cluster : Flex mode enabled,则表示当前集群使用的是 Flex ASM 模式。
如果输出为 ASM cluster : Flex mode disabled,则表示当前集群使用的是 传统ASM 模式。
方法二:检查 crsctl 资源 (查看集群资源)
通过查看集群中ASM资源的命名方式,也可以进行判断。
crsctl stat res -t | grep asm

Flex ASM 模式:资源名称为 ora.asm (没有节点后缀),并且状态为 ONLINE。
传统ASM模式:资源名称会带有节点后缀,例如 ora.rac1.asm 或 ora.rac2.asm。
方法三:使用 srvctl 命令 (查看ASM配置)
使用 srvctl 命令查看ASM的配置信息,也可以辅助判断。
srvctl config asm

这个命令会显示ASM的详细配置。在Flex ASM环境下,输出信息会体现出其作为集群范围服务的特性,而不是绑定在单个节点上
二、什么是Oracle ACFS?在哪些场景下ACFS是有用的?
Oracle ACFS 是 Oracle Automatic Storage Management Cluster File System 的简称。它是一种基于 Oracle ASM 技术构建的、多平台的集群文件系统。
随着Oracle Database 11g Release 2的发布,Oracle新增了ASM集群文件系统(ACFS)以补充ASM对数据库的文件管理。ACFS提供了与ASM相同的存储管理级别。
具体而言,ACFS简化了存储管理功能并实现了自动化,提高了存储利用率、正常运行时间和敏捷性,为存储在Oracle数据库之外的传统文件数据提供了可预测的性能和可用性。
• ACFS包括:自动存储管理动态卷管理器(ADVM),作为自动存储管理集群文件系统的卷管理器。
• 自动存储管理集群文件系统(ACFS)提供高级数据服务和安全功能,用于管理通用文件。
• ASM、ACFS和Oracle Clusterware在Oracle网格基础设施主页中捆绑打包
它支持存储任何类型的文件,而不仅仅是数据库文件。
|----------------------------------------------------------------------------------------------------|-----------------------|-----------------------------------|
| 方面 | Oracle ASM(核心) | Oracle ACFS(扩展) |
| 主要用途 | 数据库文件(推荐) | 通用文件 + 部分数据库文件 |
| 文件类型 | 只支持 Oracle 数据库文件 | 任意文件(可执行文件、日志、报告、二进制等) |
| 性能 | 最高(直接块访问,无文件系统开销) | 接近 ASM(尤其数据库文件),但有少量文件系统 overhead |
| 推荐数据库文件 | 是(datafiles、redo 等首选) | 可支持,但 21c+ 推荐只用于非关键数据库文件 |
| 快照/复制 | 无 | 有(非常强大) |
| 加密/压缩 | 依赖 TDE 或其他 | 原生支持(但数据库文件加密有限制) |
| Oracle ACFS does not support encryption or replication with Oracle Database data files...。 | | |
这意味着**数据库核心文件(数据文件、控制文件、重做日志等)的加密和复制功能,应由 ASM 本身** 或 Oracle Database Advanced Security 等特性提供,而不是 ACFS 文件系统层。
2.1.何时使用 ACFS?
1)非数据库文件的灾难恢复与高可用
2)测试与开发环境的快速搭建
3)简化 Oracle RAC 和集群的软件管理
4)通用应用程序文件的集群存储
5)Oracle Standard Edition High Availability
2.1.1.非数据库文件的灾难恢复与高可用
- 场景:企业应用不仅依赖数据库,还依赖大量的配置文件、应用程序可执行文件、日志、报告、媒体文件等。
- ACFS 的解决方案 :
- ACFS 复制 :类似于 Oracle Data Guard 为数据库提供的保护,ACFS Replication 可以将整个文件系统(包含上述非数据库文件)实时复制到远程站点。
- 与 Data Guard 集成 :文档中提到,可以结合使用 Oracle Data Guard 和 Oracle ACFS,实现"全栈高可用"解决方案。Data Guard 保护数据库,ACFS 复制保护文件系统,确保在灾难发生时,应用和数据库能作为一个整体切换到备用站点。
- 文档依据:high-availability-overview-and-best-practices.pdf 明确指出:"Oracle Data Guard and Oracle ACFS can be combined to provide a full stack high availability solution..."
2.1.2. 测试与开发环境的快速搭建
- 场景:需要从生产数据库快速克隆出一个测试或开发环境,传统方法耗时很长。
- ACFS 的解决方案 :
- 基于快照的克隆 :ACFS 支持创建秒级快照 。结合 Oracle Multitenant(多租户)特性,可以对存储在 ACFS 上的可插拔数据库(PDB)创建稀疏克隆。克隆过程极快,且初始不占用额外物理空间。
- 文档依据:20221021-Exadata 稀疏克隆.pdf 和 high-availability-overview-and-best-practices.pdf 都强调了此用途,后者提到:"...ACFS snapshot technologies to create quick and efficient snapshot clones of pluggable databases."
2.1.3. 简化 Oracle RAC 和集群的软件管理
- 场景:在 Oracle RAC 集群中,需要在所有节点上安装和维护相同的 Oracle 数据库软件(Oracle Home)。
- ACFS 的解决方案 :
- 共享的 Oracle Home :可以将 Oracle RAC 的 Oracle Home 目录安装在 ACFS 文件系统上。这样,所有集群节点共享同一份二进制文件,简化了补丁、升级和维护操作(只需在一个位置操作)。
- 文档依据:多个安装指南(如 Linux, Windows, Solaris 版本)的存储选项表中都显示,Oracle RAC Home 可以放置在 ACFS 上。
2.1.4. 通用应用程序文件的集群存储
- 场景 :需要在集群环境中共享访问的通用文件,如视频、音频、工程图纸、应用程序报告等。
- ACFS 的解决方案 :
- 通用集群文件系统:ACFS 提供了一个符合 POSIX 标准的共享文件系统,可以被集群中所有节点同时挂载和访问,非常适合存储共享的应用程序数据。
- 文档依据 :automatic-storage-management-administrators-guide.pdf 中列举了 ACFS 支持的文件类型,包括"video, audio, text, images, engineering drawings"。
2.1.5. Oracle Standard Edition High Availability
- 场景:使用 Oracle 数据库标准版的企业也需要高可用性,但标准版不包含 Oracle RAC 功能。
- ACFS 的解决方案 :
- SEHA 的共享存储:Oracle Standard Edition High Availability 特性依赖 Oracle Clusterware 和共享存储来实现故障切换。ACFS 是官方推荐的共享存储选项之一,用于存放数据库二进制文件和/或数据文件,实现快速故障恢复。
2.2.何时不使用 ACFS?
当你的主要需求仅仅是存储和保护数据库核心文件 时,应优先使用 Oracle ASM 的原生功能。
ACFS 是其功能的补充和扩展,而非替代。
三、什么是Flex ASM?

Oracle Flex ASM 是 Oracle 12c 引入的一项架构性革新 ,它从根本上改变了 ASM 实例与数据库实例之间的部署和依赖关系。通过无缝适应频繁变化的集群配置(此类环境中常见的配置),满足了具有大型集群配置的环境的存储管理需求。此版本中引入的其他功能包括对 Oracle 工程系统(如 Exadata 和 Oracle Database Appliance)的增强。Oracle Database 12c 第 1 版中 ASM 最显著的增强是一组统称为 Oracle Flex ASM 的功能。
Oracle Flex ASM 为大规模集群环境提供了关键能力。这些环境通常部署了不同大小的数据库集群,这些集群不仅具有严格的性能和可靠性要求,还必须能够以最少的管理快速适应不断变化的工作负载。
Oracle Flex ASM 彻底改变了 ASM 集群架构。在引入 Oracle Flex ASM 之前,一个 ASM 实例必须在集群中的每台服务器上运行。 每个 ASM 实例与集群中的其他 ASM 实例进行通信,它们共同向运行在集群中的数据库客户端呈现共享的磁盘组。这些 ASM 实例的集合形成了一个 ASM 集群。如果在引入 Flex ASM 之前某个 ASM 实例发生故障,则与故障 ASM 实例运行在同一服务器上的所有数据库实例也会发生故障。
如下图:

在Oracle Database 12c Release 1中,集群中的服务器子集上运行的ASM实例数量较少。运行的ASM实例数量称为ASM基数。默认的ASM基数为3 ,但可以**通过Clusterware命令轻松更改。**如果运行ASM实例的服务器发生故障,Oracle Clusterware会在另一台服务器上启动一个替代的ASM实例,以保持预定义的ASM基数。如果ASM实例因任何原因发生故障,任何依赖于该ASM实例的活动的Oracle Database 12c或更高版本的数据库实例都会简单地重新连接到另一台服务器上仍在运行的ASM实例。每当数据库实例需要与ASM实例建立连接以获取服务时,Oracle Clusterware都会尝试对新连接进行负载均衡,确保连接的总负载在所有活动的ASM实例之间均匀分布。

图4a和4b展示了故障后使用Oracle Flex ASM的ASM架构。使用Flex ASM后,集群中所需的ASM实例数量减少,Oracle Database 12c客户端可以通过网络连接到任何服务器上的ASM实例。此外,如果带有ASM实例的服务器发生故障,Oracle Database 12c客户端可以故障转移到带有ASM实例的幸存服务器,而不会中断数据库客户端。Flex ASM还减少了ASM实例的资源消耗,如CPU、内存以及ASM实例之间的实例间消息。
3.1.简单理解
简单来说,Flex ASM 允许 ASM 实例在集群中独立运行,不再要求每个运行数据库的节点都必须运行一个 ASM 实例。
借助Oracle Flex ASM,客户端可以通过网络连接(即ASM网络)连接到远程ASM。
如果运行ASM实例的服务器发生故障,Oracle Clusterware会在另一台服务器上启动新的ASM实例,以维持基数。
如果12c数据库实例正在使用某个特定的ASM实例,而该实例因服务器崩溃或ASM实例故障而丢失,那么Oracle 12c数据库实例将重新连接到另一节点上现有的ASM实例。
这些功能统称为Oracle Flex ASM。
|--------------------|--------------------------------|-----------------------------------------|
| 特性 | 标准 ASM(pre-12c 或非 Flex 配置) | Flex ASM(12c+) |
| ASM 实例部署 | 每个 RAC 节点必须运行一个 ASM 实例 | 只需少数 ASM 实例(通过 cardinality 设置数量) |
| 数据库连接方式 | 本地 ASM 实例(直接访问磁盘) | 远程连接到 Flex ASM 实例(通过网络,专用 ASM 网络) |
| ASM 实例故障影响 | 该节点上的所有数据库实例也会失败 | 数据库自动 failover 到其他 ASM 实例,不会中断 |
| 资源消耗 | 每个节点都需要 ASM 内存/进程 | 显著减少 ASM 实例数量,降低整体资源占用 |
| 可扩展性 | 添加节点需额外 ASM 实例 | 轻松添加/移除数据库节点,无需额外 ASM |
| 磁盘组管理 | 每个 ASM 实例独立管理 | 少量 ASM 实例统一管理所有磁盘组(集中存储) |
| 默认启用 | - | 从 12.2 开始默认启用(Exadata 上 cardinality=ALL |