必须用root安装匹配内核版本的kmod-oracleasm,否则驱动无法加载;需先查uname -r和发行版,再下载对应kmod-oracleasm、oracleasmlib、oracleasm-support三个rpm包;安装后必须执行/etc/init.d/oracleasm configure并设开机启动、owner(grid)、group(asmadmin)、扫描路径,再重启服务验证状态。

必须用 root 安装匹配内核版本的 kmod-oracleasm,否则 oracleasm 命令根本无法加载驱动 —— 这是 90% 的人卡在第一步的真实原因。
确认操作系统与内核版本再下载 RPM 包
Oracle ASMLib 不是通用二进制,它依赖内核模块,kmod-oracleasm 必须和当前 uname -r 输出完全一致。比如:
uname -r 2.6.32-754.el6.x86_64
你就得找 kmod-oracleasm-2.6.32-754.el6-2.0.8-1.el6.x86_64.rpm,而不是随便下个 el6 或 el7 的包。
- 查系统发行版:
cat /etc/redhat-release或lsb_release -a - 查内核版本:
uname -r - 去 Oracle 官网或 ULN(Oracle Linux Network)下载对应三个 RPM:
kmod-oracleasm、oracleasmlib、oracleasm-support - CentOS/RHEL 7+ 默认不支持 ASMLib(Oracle 已弃用),若强行使用需确认是否已启用兼容仓库
安装后必须运行 /etc/init.d/oracleasm configure
只装 RPM 不配置,oracleasm 服务不会自动启用,且默认不设开机启动、不指定 owner/group、不设扫描路径 —— 后续所有 createdisk 都会失败。
- 执行:
/etc/init.d/oracleasm configure(root 用户) - 关键选项必须明确填:是否开机启动(y)、默认 owner(grid)、default group(asmadmin)、扫描路径(如
/dev/sd*或/dev/mapper/*) - 配置完要重启服务:
/etc/init.d/oracleasm restart - 验证:
/etc/init.d/oracleasm status应显示 “running”,且oracleasm listdisks初始为空(正常)
oracleasm createdisk 要求磁盘未被格式化、无文件系统、无 LVM 元数据
ASMLib 不是“把磁盘变成 ASM 磁盘”,而是给裸设备打标签并注册到 /dev/oracleasm/disks/ 下。一旦磁盘已有 ext4/xfs/LVM PV,createdisk 会静默失败或报错 Unable to create label。
- 检查磁盘干净:
fdisk -l /dev/sdb看是否有分区表;file -s /dev/sdb看是否含文件系统签名 - 清空分区表:
dd if=/dev/zero of=/dev/sdb bs=512 count=1(慎用!确保目标盘正确) - 清 LVM 元数据:
pvremove /dev/sdb(如有) - 创建磁盘:
oracleasm createdisk DATA1 /dev/sdb,不是/dev/sdb1(除非你明确只用该分区) - 多节点 RAC 中,仅需在一个节点执行
createdisk,其余节点运行oracleasm scandisks即可识别
ASM 实例启动前,asm_diskstring 必须包含 ASMLib 扫描路径
即使 oracleasm listdisks 能看到盘,ASM 实例也可能找不到 —— 因为默认 asm_diskstring 是 /dev/raw/* 或空值,不包含 /dev/oracleasm/disks/*。
- 登录 ASM 实例:
sqlplus / as sysasm - 查当前设置:
show parameter asm_diskstring - 临时生效(重启失效):
alter system set asm_diskstring='/dev/oracleasm/disks/*' scope=memory; - 永久生效:修改 SPFILE(
create pfile from spfile→ 编辑 pfile →create spfile from pfile),或直接:alter system set asm_diskstring='/dev/oracleasm/disks/*' scope=spfile; - 重启 ASM 实例后,
select path from v$asm_disk;应列出刚创建的盘,状态为PROVISIONED或ONLINE
最常被忽略的是:RAC 环境中每个节点的 asm_diskstring 都要一致,且所有节点都必须成功运行过 oracleasm scandisks,否则某节点 ASM 实例 mount 磁盘组时会因找不到盘而报 ORA-15032、ORA-15017。











