Oracle 11.2.0.4 x64 RAC环境中,数据通常存放在ASM磁盘组里。当业务增长导致表空间不足时,可以通过给ASM磁盘组增加磁盘来实现存储扩容,整个过程对数据库影响很小。

一、确认当前存储与磁盘组状态
在扩容前,先以grid用户登录任意节点,使用ASMCMD或SQL查看现有磁盘组的使用率,并确认新磁盘已经被操作系统识别。
-- 查看磁盘组空间使用情况 SELECT name, total_mb, free_mb, usable_file_mb FROM v$asm_diskgroup; -- 查看已加入ASM的磁盘 SELECT path, header_status, mode_status FROM v$asm_disk;
二、操作系统层识别新磁盘
通常存储管理员分配LUN后,需要在两个RAC节点上扫描SCSI总线。以下为Linux下的刷新命令示例:
# 在两个节点分别执行,重新扫描HBA echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan # 确认新磁盘出现,例如 /dev/sde fdisk -l /dev/sde
三、配置ASM磁盘权限与别名
如果使用ASMLIB,需创建ASM磁盘;若使用udev,则确认权限规则已生效。下面以udev规则为例:
# 编辑 /etc/udev/rules.d/99-oracle-asm.rules KERNEL=="sde", OWNER="grid", GROUP="asmadmin", MODE="0660" # 重新加载规则 udevadm control --reload-rules udevadm trigger --action=add
四、将新磁盘加入ASM磁盘组
以sysasm身份连接ASM实例,把新路径的磁盘添加到目标磁盘组,例如DATA:
-- 在ASM实例中执行 ALTER DISKGROUP DATA ADD DISK '/dev/sde' NAME DATA_0003 REBALANCE POWER 4;
可通过以下视图观察重平衡进度:
SELECT * FROM v$asm_operation;
五、扩展数据库表空间
ASM扩容完成后,数据库还不能直接用上新空间,需要在CDB或业务表空间里新增数据文件:
-- 在数据库实例中给表空间加文件 ALTER TABLESPACE USERS ADD DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 30G;
六、验证与收尾
完成上述步骤后,再次查询磁盘组和表空间使用率,确认可用空间上升。建议记录变更并在两个节点重启udev或重启集群前做好配置备份。
| 步骤 | 操作位置 | 关键命令 |
|---|---|---|
| 识别磁盘 | OS层 | fdisk -l |
| 加磁盘组 | ASM实例 | ALTER DISKGROUP ADD DISK |
| 扩表空间 | DB实例 | ALTER TABLESPACE ADD DATAFILE |
按照以上流程,即可在Oracle 11.2.0.4 x64 RAC中安全扩展存储空间,且不需要停库。
Oracle_RAC存储空间扩展ASM修改时间:2026-07-26 22:12:21