在CentOS系统上配置ASM(Automatic Storage Management)时,用户可能会遇到各种报错问题,这些问题通常与依赖环境、内核参数、磁盘权限或软件包安装有关,以下将从常见报错类型、排查步骤和解决方案三个方面进行详细说明,帮助用户高效解决ASM配置中的问题。

常见报错类型及原因分析
依赖包缺失报错
在安装ASM相关软件包(如oracleasm-support、oracleasmlib等)时,系统可能提示依赖包未找到,这通常是因为CentOS的默认仓库中未包含Oracle所需的依赖,或者未启用EPEL(Extra Packages for Enterprise Linux)仓库,报错信息可能显示“Error: Package: oracleasmlib-2.0.4-1.el7.x86_64 (ol7_latest) has no candidate for installation”。
内核参数配置不当
ASM对Linux内核参数有特定要求,如shmmax、shmall等共享内存参数,以及fs.file-max等文件描述符限制,若参数设置过小,ASM在初始化时可能报错,ORA-27102: out of memory”或“Linux-x86_64 Error: 28: No space left on device”。
磁盘权限或分区问题
ASM依赖原始设备(如/dev/sdb)作为磁盘组成员,如果磁盘权限未正确配置(如非oracle:dba用户组),或磁盘已分区/格式化,ASM会报错“ORA-15018: diskgroup creation failed”或“ORA-27086: skgfrsz: could not resize file”。
UDEV规则冲突
CentOS的udev规则可能影响ASM磁盘的识别,若/etc/udev/rules.d/目录下存在冲突规则(如99-oracle-asmdevices.rules),ASM可能无法正确扫描磁盘,导致“ORA-15081: disk specification ‘/dev/sdb1’ is not valid”报错。
系统环境排查步骤
检查依赖包与仓库
首先确认是否已添加Oracle Linux的公共仓库或EPEL仓库,通过yum search oracleasmlib验证软件包可用性,若未找到,可手动下载RPM包(如oracleasmlib-2.0.4-1.el7.x86_64.rpm)并使用rpm -ivh安装,或配置yum仓库指向Oracle的Yum服务器。
调整内核参数
编辑/etc/sysctl.conf文件,添加以下参数:

kernel.shmmax = 4294967295 kernel.shmall = 4194304 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500
保存后执行sysctl -p使配置生效,并通过sysctl -a | grep shmmax验证。
配置磁盘权限
确保ASM磁盘为原始设备且未分区,使用fdisk -l确认磁盘状态,然后执行以下命令授权:
chown oracle:dba /dev/sdb chmod 660 /dev/sdb
若需自动挂载,可创建udev规则(如/etc/udev/rules.d/99-oracle-asmdevices.rules):
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="<disk_id>", OWNER="oracle", GROUP="dba", MODE="0660"
执行udevadm control --reload-rules和udevadm trigger后重启udev服务。
验证ASM组件状态
安装oracleasm工具后,运行/etc/init.d/oracleasm configure初始化配置,并通过oracleasm scandisks和oracleasm listdisks检查磁盘是否被ASM识别。
典型报错解决方案
解决“ORA-15018: diskgroup creation failed”
此错误通常因磁盘头信息损坏或权限问题导致,可通过以下步骤修复:

- 使用
dd if=/dev/zero of=/dev/sdb bs=1024 count=1024清除磁盘前1MB数据。 - 重新配置
udev规则并重启系统。
解决“Linux-x86_64 Error: 28: No space left on device”
检查共享内存参数shmmax是否过小,通过ipcs -l查看当前限制,若不足,需调整sysctl.conf中的shmmax值并重启系统。
解决“ORA-15081: disk specification invalid”
确认ASM磁盘路径是否正确(如/dev/sdb而非/dev/sdb1),并检查udev规则是否冲突,可临时禁用SELinux(setenforce 0)测试是否为策略限制问题。
相关问答FAQs
Q1: 配置ASM时提示“ORA-15032: not all alterations performed”,如何解决?
A: 该错误通常因磁盘组中的磁盘状态不一致导致,可尝试以下步骤:
- 使用
asmcmd检查磁盘状态:asmcmd lsdsk -G <diskgroup_name>。 - 若磁盘标记为
CANDIDATE,可手动添加到磁盘组:SQL> ALTER DISKGROUP <diskgroup_name> ADD DISK '/dev/sdb';。 - 若磁盘为
FAILED,需先修复或替换磁盘,再使用ALTER DISKGROUP <diskgroup_name> REPAIR DISK <disk_name>;。
Q2: ASM配置成功后,数据库实例无法启动,报错“ORA-27041: unable to open file”,如何处理?
A: 此错误通常因ASM磁盘权限或路径问题引起,解决方案如下:
- 确认ASM实例中磁盘路径正确:
SELECT name, path FROM v$asm_disk;。 - 检查磁盘文件权限:
ls -l /dev/oracleasm/disks/,确保oracle:dba有读写权限。 - 若使用ASM的SPFILE路径错误,需修正
spfile参数:SQL> ALTER SYSTEM SET spfile='+DATA/spfile.ora' SCOPE=SPFILE;,然后重启数据库。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复