DBCA看不到ASM磁盘组最可能原因是GRID_HOME/bin/oracle权限错误(非6751)或属主非grid:oinstall,而非磁盘本身问题;需修复权限、重启CRS并禁用已弃用的ASMLib,改用udev+WWID确保路径一致。
DBCA图形界面看不到ASM磁盘组,最可能不是磁盘本身问题
绝大多数情况,dbca 启动后“存储类型”里选不到 +data 这类磁盘组,但 asmca 或 asmcmd 能正常列出、挂载,说明 asm 实例和磁盘组本身是好的。真正卡住的是 oracle 用户进程连接 asm 的权限链——它不依赖你是否把 oracle 加进 asmadmin 组,而依赖两个关键文件的权限位和属主。
-
GRID_HOME/bin/oracle必须是-rwsr-s--x(即 setuid + setgid),权限值为6751;若变成755或775,dbca就无法以grid身份调用 ASM 接口 - 该文件属主必须是
grid:oinstall,不能是root:root或oracle:oinstall - 执行过
root.sh后,GRID_HOME下多数文件会被重置属主为root,但oracle二进制文件必须手动恢复权限
ASMLib 已弃用,别再配 oracleasm 驱动
Oracle 12c R2 起官方明确弃用 ASMLib,/dev/oracleasm 在新版内核(RHEL 7+/OL 7+)上不可靠,且多节点间路径同步困难。强行启用会导致 gridSetup.sh 找不到磁盘、OCR 创建失败、或重启后磁盘名漂移(如 /dev/sdb 变成 /dev/sdc)。
- 禁用命令:
oracleasm exit+systemctl stop oracleasm+systemctl disable oracleasm - 清空残留配置:
rm -f /etc/sysconfig/oracleasm和/etc/udev/rules.d/oracleasm.rules - 改用 udev + WWID:用
scsi_id -g -u -d /dev/sdb获取唯一标识,写规则映射到稳定路径(如/dev/asm-diskb) - 验证:
ls -l /dev/asm-*应显示属主grid:asmadmin,权限brw-rw----
节点间权限与路径必须完全一致,否则 OCR/Voting Disk 初始化失败
RAC 安装时,gridSetup.sh 预检(runcluvfy.sh)会比对所有节点的磁盘路径、权限、WWID 是否一致。一处不一致,就静默退出或卡在 “Performing pre-checks”,日志在 /tmp/GridSetupActions*.log。
- 同一块物理盘,在 node1 是
/dev/sdb,node2 必须也是/dev/sdb—— 不能靠设备名,必须靠 udev 符号链接统一 - 所有节点都要执行相同 udev 规则,并运行
udevadm control --reload-rules && udevadm trigger - 检查
crsctl stat res -t | grep asm,确认ora.asm资源 ONLINE 且状态为ONLINE - 手动验证 ASM 连通性:
su - grid -c "sqlplus / as sysasm @'SELECT name, state FROM v$asm_diskgroup'"
dbca 启动前要清理 NLS 环境变量干扰
某些 AIX/Linux 环境下,NLS_LANG 或 NLS_DATE_FORMAT 设置不当会导致 dbca 图形界面解析 ASM 元数据失败,现象是点击“ASM”选项后列表空白,无报错,也无日志输出。
- 临时解决:启动前 unset 相关变量,例如
unset NLS_LANG NLS_DATE_FORMAT - 不要在
~/.bash_profile中全局设置NLS_LANG,尤其避免设成AMERICAN_AMERICA.AL32UTF8以外的值 - 若必须使用特定字符集,建议只在
sqlplus会话中 export,而非影响整个 GUI 环境
最容易被忽略的点是:权限修复后必须重启 CRS 栈(crsctl stop crs && crsctl start crs),否则旧的 ora.asm 资源仍用着错误权限的 oracle 二进制文件。不重启,改了也白改。











