虚拟机安装ASM(Oracle Automatic Storage Management)步骤不复杂,但需要严格遵循环境准备、Grid Infrastructure安装、ASM实例配置三大阶段,全程约30-50分钟即可完成。这套流程的难点不在操作本身,而在于对前置条件的理解多数失败案例都集中在权限配置、依赖包缺失和网络参数错乱上,下面这份2026年最新整理的虚拟机ASM安装详细教程,会带你一步步绕开这些坑。
虚拟机安装asm步骤到底难在哪?先搞清三个关键点
很多人一听到ASM就联想到RAC集群,心里先打鼓,实际上这里有个误区:ASM完全可以单机使用,虚拟机里装单实例ASM比装RAC简单得多,真正需要操心的是Linux操作系统的准备阶段。
关于性能损耗,行业共识观点是:虚拟机里跑ASM,I/O性能通常比物理机低15%-20%,但用于功能验证、开发测试完全足够,如果你只是做练习环境,不必担心虚拟化带来的性能折扣。
安装前必须确认的虚拟机硬件基线
在开始折腾ASM之前,先对照这张检查表看看你的虚拟机配置是否达标:
- 内存:至少4GB,推荐8GB(ASM实例本身只占200MB左右,但Oracle数据库需要基础内存)
- CPU:2核以上即可,没有特殊限制
- 磁盘空间:系统盘留出20GB空闲空间(Grid Infrastructure安装包解压需要)
- 虚拟磁盘:至少附加1块5GB以上的空磁盘作为ASM磁盘组候选(建议20GB)
- 操作系统:Oracle Linux 7.9或RHEL 7.9 64位(注意:不同Linux发行版的依赖包命令会有差异)
如果你的虚拟机配置达不到这个标准,后续安装中大概率会报错,所以请务必提前确认。
Linux系统初始配置:90%的安装失败发生在这一步
这里要强调的是,ASM安装前的系统配置是整个过程中最需要耐心的一环,也是绝大多数新手翻车的地方,具体需要配置的内容包括:
修改/etc/hosts文件
# 格式示例 192.168.56.101 vmasm.localdomain vmasm
关闭SELinux和防火墙
setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
创建Oracle用户和组
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle # 设置密码,记住这个密码
配置内核参数
编辑/etc/sysctl.conf,加入以下关键参数:
fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.shmall=2097152 kernel.shmmax=2147483648 net.core.rmem_default=262144 net.core.rmem_max=4194304
然后执行sysctl -p使参数生效。

安装必要依赖包
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \ gcc gcc-c++ elfutils-libelf-devel glibc glibc-devel \ ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel \ libX11 libXau libXi libXtst libXext make sysstat unixODBC \ unixODBC-devel smartmontools
有人可能会问,能不能跳过这些依赖包?答案是不能,ASM安装前的Linux配置脚本会对缺失的依赖项逐项检查,缺少任何一个package都会导致安装流程根本无法启动。
asm安装教程:Grid Infrastructure安装实操全流程
系统准备环节结束后,接下来就进入正式安装环节,这里需要有一个清晰的定位:ASM实例不是单独安装的,它随Oracle Grid Infrastructure一起装上,很多人绕了弯路,拼命去搜“ASM单独安装教程”,实际上Grid就是ASM的家。
Step1:下载Oracle Grid Infrastructure安装包
去Oracle官网下载linuxx64_12201_grid.zip(版本号以你实际获取到的为准),下载后解压到本地目录:
unzip linuxx64_12201_grid.zip -d /u01/app/12.2.0/grid chown -R oracle:oinstall /u01/app/12.2.0/grid chmod -R 775 /u01/app/12.2.0/grid
Step2:配置Oracle用户环境变量
切换到oracle用户,编辑~/.bash_profile,添加:
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/12.2.0/grid export GI_HOME=/u01/app/12.2.0/grid export ORACLE_SID=+ASM export PATH=$ORACLE_HOME/bin:$PATH
注意:这里的ORACLE_SID是+ASM,前面有加号,这是ASM实例专属的命名规则。
Step3:运行安装脚本
在Grid安装目录下执行:
./gridSetup.sh
你会看到一个图形化安装界面,按以下顺序操作:
- 配置选项:选择“Configure Oracle Grid Infrastructure for a Standalone Server”(单节点服务器配置)
- 语言选择:默认英语即可
- Oracle基目录:保持自动填写的
/u01/app/oracle路径 - 选择安装类型:选择“Oracle ASM”(注意不要选“Oracle ASM Cluster File System”)
- 磁盘组配置:输入你想给ASM用的磁盘组名称(例如
DATA),冗余级别选择外部冗余(虚拟机环境没有条件做镜像,选外部即可),然后勾选之前附加的那块空磁盘
按照向导提示填写完后,安装程序会自动完成二进制文件复制和root脚本配置,最后系统会提示你以root用户执行两个脚本:
# 在root用户下执行 /u01/app/12.2.0/grid/root.sh /u01/app/12.2.0/grid/oraInst.loc
这一步务必等待脚本执行完毕,不要中断,root.sh脚本会配置Oracle集群注册表,中断会导致后续无法正常使用ASM。
Step4:验证ASM实例状态

安装完成后,用oracle用户登录,执行以下命令验证ASM是否正常运转:
# 检查ASM实例状态 crsctl stat res -t # 或者用asmcmd查看磁盘组 asmcmd lsdg
如果看到STATE显示为ONLINE且磁盘组状态为MOUNTED,说明ASM安装成功了,这套asm安装教程的核心环节到这里就全部跑通了。
asm磁盘组配置命令:让ASM真正为你所用
ASM实例启动成功只算走完了半程,另一半是创建并管理磁盘组,多数使用场景下,你需要做的是把新磁盘加入磁盘组,或者创建新的磁盘组来容纳不同业务的数据。
用asmca图形化配置磁盘组
用oracle用户登录,在命令行输入asmca,会弹出ASM配置助手界面,点击“Disk Groups”选项卡,然后点击“Create”按钮:
- 磁盘组名称:例如
DATA或FRA - 冗余级别:选External(外部冗余)
- 成员磁盘:勾选你要加入的候选磁盘
创建完成后,磁盘组会显示状态为“MOUNTED”,这种图形化方式最直观,也适合初学者操作。
用asmcmd命令行直接管理磁盘组
如果你偏好纯命令行操作(比如本地无图形界面的生产服务器),可以这样做:
# 查看当前磁盘组 asmcmd lsdg # 创建新磁盘组 asmcmd createdg DATA /dev/sdc1 # 挂载磁盘组 asmcmd mount DATA # 卸载磁盘组 asmcmd umount DATA
磁盘组设计容量在10GB-20GB之间比较合适,既够数据库使用,又不会浪费虚拟机空间,如果磁盘空间较紧张,10GB配置经验指是:多数数据库测试场景下,10GB磁盘组已经能容纳1套业务库+归档日志。
常见错误:asm磁盘组mount时会遇到哪些坑
- ORA-15032: Not all alterations performed 通常是磁盘权限问题,确认
/dev/sdc1的属主是oracle:oinstall - ORA-15031: disk '
' does not exist 检查磁盘路径是否写对,用lsblk命令确认设备名 - ORA-15186: ASMLIB error function = [asm_open] 这是ASMLIB模块的问题,建议直接用
/dev/路径而不是ASMLIB的/dev/oracleasm/路径
虚拟机asm与管理oracle数据库的衔接:一套完整的实用路径
ASM本身不是数据库,它上面的磁盘组要配合Oracle数据库使用才体现出价值,在安装完ASM后,紧接着建库时需要在DBCA(Database Configuration Assistant)中指定使用ASM存储:
- 选择“Automatic Storage Management (ASM)”作为存储类型
- 选择你创建好的磁盘组作为数据库文件的存放位置
- 输入ASM实例的SYS密码
这样Oracle数据库就运行在ASM之上,数据文件自动分散在磁盘组的各个成员磁盘中,这也是在2026年比较主流的虚拟机学习环境搭建路径先在虚拟机上搞定ASM,再基于ASM搭建Data Guard环境,能一次性掌握存储层和容灾层的核心知识。

虚拟机asm安装容易忽略的细节:内存参数与进程资源限制
有几个细节点不太起眼但影响力很大,这里专门提一下:
-
内存参数:若虚拟机内存只有2GB,Grid安装程序会告警“Ensure that the system meets minimum memory requirement”,这种条件下强行安装会在后续运行中频繁出现性能问题,给虚拟机加内存是最根本的解法。
-
进程/文件数限制:编辑
/etc/security/limits.conf,添加:oracle soft nofile 4096 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384
这组参数不配置齐全,偶尔会出现“ORA-27102: out of memory”这类莫名其妙的报错。
-
网络配置:确认主机名能通过
hostname -i返回正确IP,如果返回的是0.0.1,Oracle的监听服务将无法正常工作,用Linux命令直接测试是ping -c 3 <你的主机名>,动手配置前先花10分钟检查系统环境,能省下后续排错的大把时间。
Q&A:虚拟机装asm常见问题汇总
问:虚拟机装ASM和物理机装有什么区别?
答:虚拟机安装ASM与物理机安装核心流程一致,差异主要在性能表现上,虚拟磁盘的IOPS和吞吐量受宿主机磁盘性能影响,实际操作时建议为虚拟机分配独立虚拟磁盘而非共享存储,同时将虚拟磁盘类型选为“厚置备延迟置零”,能获得相对稳定的性能,用于学习环境完全没问题,生产环境建议优先评估物理机性能是否达标。
问:安装ASM时遇到“ORA-15063: ASM disk discovered with an invalid header”怎么解决?
答:这个报错说明磁盘曾被其他文件系统格式化过,不满足ASM对磁盘的要求,处理方法是先删除磁盘上的分区表,再用dd if=/dev/zero of=/dev/sdb count=100清理前100个扇区,重新在asmca中扫描磁盘,此时磁盘状态应变为“Candidate”。
问:ASM安装时选“外部冗余”“正常冗余”还是“高冗余”?
答:外部冗余(External)不提供镜像保护最少占用磁盘空间;正常冗余(Normal)镜像数据至少需要两块磁盘;高冗余(High)则要求至少三块磁盘,虚拟机环境下推荐外部冗余,因为虚拟机化存储层已有快照功能,ASM层再做镜像属于重复投资且拖慢I/O性能,生产环境建议使用正常冗余搭配故障组分配,实现存储层面的高可用。
问:虚拟机上安装asm需要提前装Oracle RAC吗?
答:不需要,ASM可以独立安装使用,RAC是在ASM之上追加的集群功能,先装ASM单实例,后续再扩展RAC也是常见的演进路线,不需要重装系统或重建ASM实例。