如何在CentOS上为Oracle数据库配置ASM存储?

在 CentOS 系统上为 Oracle 数据库配置 ASM(Automatic Storage Management,自动存储管理)是一项能够显著提升数据库性能、简化存储管理的关键任务,ASM 将操作系统管理的裸设备或文件整合成一个统一的存储池,由 Oracle 自行进行条带化、镜像和负载均衡,极大地解放了数据库管理员(DBA)的工作,本文将详细介绍在 CentOS 环境下配置 ASM 的完整流程,涵盖前期准备、核心配置步骤以及验证方法。

如何在CentOS上为Oracle数据库配置ASM存储?

前期准备

在开始配置之前,充分的准备工作是确保过程顺利无误的基石,这包括系统环境、用户权限、内核参数和存储设备的规划。

系统与硬件要求

  • 操作系统:建议使用稳定版本的 CentOS,如 CentOS 7 或 CentOS 8,确保系统已更新至最新的补丁级别。
  • 存储设备:准备专用于 ASM 的物理磁盘,这些磁盘应为未分区的原始块设备(/dev/sdb, /dev/sdc),不建议使用包含文件系统的分区,ASM 需要独占这些设备以发挥最佳性能。

创建必要的用户与组
Oracle 的安装和运行需要特定的用户和组,通常需要创建 grid 用户来管理 ASM 和集群件,以及 oracle 用户来管理数据库软件。

# 创建组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 asmadmin
groupadd -g 54324 asmdba
groupadd -g 54325 asmoper
# 创建用户
useradd -u 54321 -g oinstall -G dba,asmadmin,asmdba,asmoper grid
useradd -u 54322 -g oinstall -G dba,asmdba oracle

配置内核参数与 Shell 限制
根据 Oracle 官方文档,需要调整内核参数以满足其运行需求,编辑 /etc/sysctl.conf 文件,添加或修改以下参数:

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

执行 sysctl -p 使配置生效。

/etc/security/limits.conf 中为 oraclegrid 用户设置资源限制:

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

安装 ASM 支持包
CentOS 需要特定的软件包来支持 ASM 内核模块,使用 yum 进行安装:

yum install kmod-oracleasm oracleasm-support -y

核心配置步骤

准备工作就绪后,便可以进入 ASM 的核心配置阶段。

如何在CentOS上为Oracle数据库配置ASM存储?

配置并加载 ASM 内核模块
使用 oracleasm 工具进行配置,此命令将以交互方式引导您完成配置,通常默认用户和组分别为 gridasmadmin

oracleasm configure -i

系统会提示您输入默认用户、默认组、是否在启动时加载模块以及是否扫描磁盘,按照提示输入即可,配置完成后,执行以下命令加载内核模块:

oracleasm init

您可以使用 lsmod | grep oracleasm 来验证模块是否已成功加载。

标记 ASM 磁盘
将准备好的原始物理磁盘标记为 ASM 磁盘,假设您要使用 /dev/sdb/dev/sdc

oracleasm createdisk DATA1 /dev/sdb
oracleasm createdisk DATA2 /dev/sdc

这里的 DATA1DATA2 是您为磁盘定义的别名,在后续配置中会使用,执行完毕后,可以用 oracleasm listdisks 命令查看已创建的 ASM 磁盘。

安装 Oracle Grid Infrastructure
ASM 是 Oracle Grid Infrastructure (GI) 的一部分,您需要下载与您的 Oracle 数据库版本相匹配的 GI 安装包。

  • 解压安装包,并以 grid 用户身份运行安装程序。
  • 在安装过程中,选择“安装和配置 Grid Infrastructure for a Standalone Server”(为独立服务器安装和配置 Grid Infrastructure)。
  • 在“创建 ASM 磁盘组”步骤,点击“Change Discovery Path” 指定磁盘路径为 /dev/oracleasm/disks/,系统会自动扫描出您刚才创建的 DATA1DATA2
  • 创建磁盘组,DATA,用于存放数据文件,根据需求选择冗余级别(External Redundancy 无冗余,Normal Redundancy 双向镜像,High Redundancy 三向镜像)。

下表是一个简单的磁盘组规划示例:

磁盘组名称 冗余类型 用途 包含的 ASM 磁盘
DATA External 存放数据文件、控制文件、参数文件 DATA1, DATA2
FRA External 存放归档日志、RMAN 备份 FRA1 (假设还有另一块磁盘)
  • 完成安装向导,并根据提示以 root 用户身份执行 orainstRoot.shroot.sh 脚本。

验证与后续

安装完成后,需要验证 ASM 是否正常运行。

如何在CentOS上为Oracle数据库配置ASM存储?

  • 检查 ASM 实例状态:ps -ef | grep smon,您应该能看到 ASM 的后台进程 +ASM1_smon_...
  • 使用 ASM 命令行工具 (ASMCMD):以 grid 用户登录,执行 asmcmd,进入命令行后使用 lsdg 命令可以列出所有磁盘组及其状态。
  • 在后续安装 Oracle 数据库软件时,选择“高级安装”,在存储选项部分即可看到并选择您刚刚创建的 ASM 磁盘组。

至此,您已成功在 CentOS 上配置了 ASM,为 Oracle 数据库提供了一个高性能、高可用的存储平台。


相关问答FAQs

问题1:我可以在一个磁盘分区(如 /dev/sdb1)上配置 ASM 磁盘吗?

解答:虽然技术上可行,但 Oracle 官方强烈不推荐这样做,ASM 的设计初衷是直接管理整个物理磁盘(LUN),使用分区会带来几个问题:它增加了额外的管理层,可能影响性能;ASM 的多路径软件(如 ASMLib)在处理整个设备时效率更高,能更好地进行 I/O 均衡;使用分区可能导致存储管理和故障排查变得复杂,最佳实践始终是为 ASM 提供完整的、未分区的原始块设备。

问题2:执行 oracleasm createdisk 命令时提示“Device is not a block device”或权限错误,该怎么办?

解答:这个错误通常由以下几种原因导致:

  1. 设备路径错误:您提供的路径不是一个块设备,请使用 ls -l /dev/sd* 等命令确认设备名称是否正确,并且它确实是块设备(文件类型为 b)。
  2. 设备已被使用:该磁盘上可能已经存在分区表或文件系统,ASM 要求设备是“干净”的,您可以使用 fdisk /dev/sdb 命令进入后,按 d 删除所有分区,然后按 w 保存。注意:此操作会清空磁盘上的所有数据,请务必谨慎!
  3. 权限问题:执行 oracleasm createdisk 命令的用户(通常是 grid)没有对磁盘设备的读写权限,检查 /dev/sdb 等设备的所有者和权限,您需要确保磁盘设备属于 disk 组,grid 用户也在 disk 组中,或者调整设备的 udev 规则,赋予 asmadmin 组适当的权限,可以临时使用 chown grid:asmadmin /dev/sdb 命令测试,但永久解决方案是配置 udev 规则。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-23 18:56
下一篇 2024-08-22 21:58

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信