news 2026/5/14 22:45:15

【Oracle数据库指南】第42篇:Oracle ASM实例与磁盘组管理详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Oracle数据库指南】第42篇:Oracle ASM实例与磁盘组管理详解

上一篇【第41篇】Oracle OMF——自动文件管理详解
下一篇【第43篇】ASM磁盘组使用与维护(明日更新,敬请期待)


摘要

Oracle ASM(Automatic Storage Management,自动存储管理)是Oracle专为数据库设计的卷管理器和文件系统,将存储管理与操作系统解耦,提供跨磁盘的条带化(Striping)和镜像(Mirroring)功能,无需依赖操作系统LVM或RAID。本文详细讲解ASM实例架构、磁盘组的创建与配置、冗余级别选择、磁盘的添加与删除,以及ASM与数据库实例的集成使用。


一、ASM 架构概述

1.1 ASM 的组成

ASM 架构 ├── ASM 实例(独立的Oracle实例,不挂载数据库) │ ├── ASM SGA(固定大小,较小) │ └── ASM 后台进程(RBAL、ARBx、GMON等) │ └── 磁盘组(Disk Group) ├── 磁盘1(ASM Disk)→ 可以是裸设备、块设备 ├── 磁盘2(ASM Disk) └── ...

1.2 ASM 的优势

特性说明
自动条带化数据均匀分布到所有磁盘,最大化I/O吞吐
内置镜像不依赖操作系统RAID,双重/三重镜像
在线扩容添加新磁盘后,自动重新平衡数据(ReBalance)
故障容忍磁盘故障时自动切换,不影响数据库
跨平台一致统一的存储管理接口,不依赖OS特性
与Oracle深度集成RMAN、Data Guard、RAC等原生支持

二、ASM 磁盘准备

2.1 配置 udev 设备权限(Linux)

# 查看磁盘设备lsblkfdisk-l|grep"^/dev/sd"# 创建 udev 规则(确保Oracle用户有权限访问磁盘)cat>/etc/udev/rules.d/99-oracle-asmdevices.rules<<'EOF' KERNEL=="sdb", OWNER="oracle", GROUP="dba", MODE="0660" KERNEL=="sdc", OWNER="oracle", GROUP="dba", MODE="0660" KERNEL=="sdd", OWNER="oracle", GROUP="dba", MODE="0660" KERNEL=="sde", OWNER="oracle", GROUP="dba", MODE="0660" EOF# 重新加载 udev 规则udevadm control --reload-rules udevadm trigger# 验证权限ls-la/dev/sdb /dev/sdc /dev/sdd /dev/sde

2.2 清除磁盘上的旧分区表

# 清除磁盘首部(如果有旧数据)ddif=/dev/zeroof=/dev/sdbbs=1Mcount=10ddif=/dev/zeroof=/dev/sdcbs=1Mcount=10

三、安装 Grid Infrastructure(ASM 的宿主)

ASM 在 Oracle 11g R2+ 中需要安装Grid Infrastructure(包含 ASM + Clusterware)。

单机环境安装步骤:

  1. 以 root 用户运行grid/runInstaller
  2. 选择 “Configure Oracle Grid Infrastructure for a Standalone Server”(单机)
  3. 设置 ORACLE_BASE、GRID_HOME
  4. 创建 ASM 磁盘组(安装过程中可以设置)
# Grid Infrastructure 环境变量exportORACLE_BASE=/u01/oracleexportORACLE_HOME=/u01/oracle/product/11.2.0/gridexportPATH=$ORACLE_HOME/bin:$PATH# 查看 ASM 实例状态srvctl status asm crsctl status res-t

四、ASM 实例管理

4.1 启动和关闭 ASM 实例

# 以sysdba连接ASM实例exportORACLE_SID=+ASM sqlplus / as sysasm -- 启动ASM实例 STARTUP;-- 关闭ASM实例 SHUTDOWN NORMAL;-- 等待所有数据库实例断开 SHUTDOWN ABORT;-- 强制关闭(不推荐)

4.2 ASM 实例参数

-- 查看 ASM 实例参数SHOWPARAMETER asm;SHOWPARAMETER instance_type;-- 值为 ASM-- 关键参数-- ASM_DISKGROUPS:自动挂载的磁盘组-- ASM_DISKSTRING:搜索 ASM 磁盘的路径模式-- ASM_POWER_LIMIT:ReBalance 速度(1-11,越大越快,I/O消耗也越大)

五、磁盘组管理

5.1 磁盘组冗余级别

级别说明需要磁盘数可容忍故障
EXTERNAL外部冗余(依赖硬件RAID)≥ 1取决于硬件
NORMAL双向镜像≥ 2(不同Failure Group)1个Failure Group故障
HIGH三向镜像≥ 3(不同Failure Group)2个Failure Group故障

5.2 创建磁盘组

-- 连接到 ASM 实例CONNECT/ASSYSASM-- 创建 NORMAL 冗余磁盘组(双向镜像)CREATEDISKGROUP data_dg NORMAL REDUNDANCY FAILGROUP fg1DISK'/dev/sdb'NAME data_disk1,FAILGROUP fg2DISK'/dev/sdc'NAME data_disk2;-- 创建 HIGH 冗余磁盘组(三向镜像)CREATEDISKGROUP redo_dg HIGH REDUNDANCY FAILGROUP fg1DISK'/dev/sdd'NAME redo_disk1,FAILGROUP fg2DISK'/dev/sde'NAME redo_disk2,FAILGROUP fg3DISK'/dev/sdf'NAME redo_disk3;-- 创建 EXTERNAL 冗余磁盘组(依赖硬件RAID,性能最好)CREATEDISKGROUP fra_dg EXTERNAL REDUNDANCYDISK'/dev/sdg'NAME fra_disk1;

5.3 查看磁盘组信息

-- 查看所有磁盘组SELECTname,state,type,total_mb,free_mb,ROUND(free_mb/total_mb*100,1)ASfree_pctFROMv$asm_diskgroup;-- 查看磁盘组中的磁盘SELECTdg.nameASdiskgroup,d.nameASdisk_name,d.failgroup,d.state,d.total_mb,d.free_mbFROMv$asm_disk dJOINv$asm_diskgroup dgONd.group_number=dg.group_numberORDERBYdg.name,d.failgroup,d.name;-- 查看磁盘组中的文件SELECTname,type,bytes/1024/1024ASmbFROMv$asm_fileWHEREgroup_number=(SELECTgroup_numberFROMv$asm_diskgroupWHEREname='DATA_DG')ORDERBYtype,name;

六、磁盘组维护操作

6.1 向磁盘组添加磁盘

-- 向磁盘组添加磁盘(会自动触发 ReBalance)ALTERDISKGROUP data_dgADDFAILGROUP fg3DISK'/dev/sdh'NAME data_disk3;-- 监控 ReBalance 进度SELECT*FROMv$asm_operation;-- 等待 REBAL 操作完成(可能需要几分钟到几小时)

6.2 从磁盘组删除磁盘

-- 删除磁盘(Oracle 先迁移数据,再删除磁盘)ALTERDISKGROUP data_dgDROPDISKdata_disk3;-- 监控迁移进度SELECT*FROMv$asm_operation;

6.3 挂载和卸载磁盘组

-- 挂载磁盘组(使其可用)ALTERDISKGROUP data_dg MOUNT;-- 卸载磁盘组(数据库不使用该磁盘组的文件时才可卸载)ALTERDISKGROUP data_dg DISMOUNT;-- 强制挂载(即使磁盘组有问题)ALTERDISKGROUP data_dg MOUNTFORCE;

6.4 修复磁盘组(检查与平衡)

-- 检查磁盘组一致性ALTERDISKGROUP data_dgCHECKALL;-- 手动触发 ReBalance(调整速度)ALTERDISKGROUP data_dg REBALANCE POWER4;-- 速度1-11

七、在 ASM 环境下创建数据库

# 配置数据库实例参数(使用ASM磁盘组)cat>/tmp/initdb_asm.ora<<'EOF' db_name = 'ASMDB' db_create_file_dest = '+DATA_DG' db_create_online_log_dest_1 = '+REDO_DG' db_create_online_log_dest_2 = '+REDO_DG' db_recovery_file_dest = '+FRA_DG' db_recovery_file_dest_size = 50G memory_target = 2G processes = 300 EOF
-- 在 ASM 环境下创建数据库(OMF+ASM,无需指定文件路径)CONNECT/ASSYSDBA STARTUP NOMOUNT PFILE='/tmp/initdb_asm.ora';CREATEDATABASEasmdbCHARACTERSETAL32UTF8NATIONALCHARACTERSETAL16UTF16 DATAFILE SIZE700M AUTOEXTENDONSYSAUX DATAFILE SIZE500M AUTOEXTENDONDEFAULTTEMPORARYTABLESPACEtempTEMPFILE SIZE300M UNDOTABLESPACEundotbs1 DATAFILE SIZE500M LOGFILEGROUP1SIZE300M,GROUP2SIZE300M,GROUP3SIZE300M;

八、ASM 监控视图

-- 磁盘组空间监控(当 free_pct < 20% 时告警)SELECTname,total_mb/1024AStotal_gb,free_mb/1024ASfree_gb,ROUND(free_mb/total_mb*100,1)ASfree_pctFROMv$asm_diskgroupWHEREstate='MOUNTED';-- 磁盘健康状态SELECTdg.nameASdiskgroup,d.nameASdisk,d.mode_status,d.state,d.mount_statusFROMv$asm_disk dJOINv$asm_diskgroup dgONd.group_number=dg.group_numberWHEREd.state!='NORMAL';

九、最佳实践

  1. 选择 NORMAL/HIGH 冗余而非 EXTERNAL:不依赖操作系统RAID,Oracle自行管理
  2. Failure Group 对应物理磁盘控制器:相同控制器的磁盘放在同一 Failure Group
  3. DATA、REDO、FRA 分开磁盘组:不同类型文件的 I/O 特性不同
  4. 监控磁盘组空闲空间:低于20%时需扩容
  5. ReBalance 调低优先级:生产高峰期将 POWER 设为 1~2,避免影响业务

十、总结

Oracle ASM 管理的核心要点:

  1. ASM 实例:独立实例,管理磁盘组;使用 +ASM 作为 ORACLE_SID
  2. 冗余级别:EXTERNAL(无冗余)、NORMAL(双镜像)、HIGH(三镜像)
  3. 磁盘组操作:CREATE、ALTER(ADD/DROP DISK)、CHECK、REBALANCE
  4. 与数据库集成:参数指定磁盘组名(如 +DATA_DG),OMF 自动管理文件名
  5. 监控:VA S M D I S K G R O U P 、 V ASM_DISKGROUP、VASMDISKGROUPVASM_DISK、V$ASM_OPERATION

上一篇【第41篇】Oracle OMF——自动文件管理详解
下一篇【第43篇】ASM磁盘组使用与维护(明日更新,敬请期待)


参考资料

  • 《Oracle 11g数据库管理员指南》— 刘宪军著
  • Oracle官方文档:Automatic Storage Management Administrator’s Guide
  • Oracle官方文档:Database Administrator’s Guide - Storage Management
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 22:45:10

Scrapy实战:一个需登录态的商业网站采集案例

一、问题背景最近接到一个采集需求&#xff1a;目标网站是一个商业品牌数据库&#xff0c;需要采集5个分类的品牌数据。采集字段&#xff1a;品牌名称、创立时间、开店方式、合作期限、面积要求技术难点&#xff1a;网站需要登录才能访问完整数据列表页只有品牌名称&#xff0c…

作者头像 李华
网站建设 2026/5/14 22:44:29

软件测试的“全栈化”趋势:只会一种测试类型正在成为短板

在瞬息万变的软件行业&#xff0c;质量保障的战场早已从瀑布模型末端的“质量检查站”&#xff0c;前移到了贯穿需求、设计、开发、交付、运维的全生命周期中。当微服务将庞大的单体应用拆解成成百上千个独立运行、相互调用的服务单元时&#xff0c;系统的脆弱点不再仅仅存在于…

作者头像 李华
网站建设 2026/5/14 22:44:21

AT_ndpc2026_a ポリオミノ 题解

DP 水题一枚。DP 三要素走起&#xff01; 1. 状态定义 定义 fif_ifi​ 为填充 222 行 iii 列的方案数。 2. 转移方程 若竖着填充一块 121\times212 的多连块&#xff0c;则 fi→fi1f_{i}\to f_{i1}fi​→fi1​&#xff1b;若横着填充一块 121\times212 的多连块&#xff0c;则 …

作者头像 李华
网站建设 2026/5/14 22:44:20

低功耗机器人工控机怎么选?17 年经验告诉你,这几款性价比最高

低功耗机器人工控机不知道怎么选型&#xff1f;通过这边文章结合17年经验给大家提供该类型的机器人工控机选型方案。现在的机器人&#xff0c;越来越多是移动的。比如 AGV、AMR、服务机器人、巡检机器人等等。这些机器人都是电池供电的&#xff0c;所以续航是它们的生命线。而工…

作者头像 李华
网站建设 2026/5/14 22:43:28

从双清到格式化:安卓刷机数据清除全指南与分区深度解析

1. 安卓刷机数据清除的常见操作 安卓手机用久了难免会遇到卡顿、存储空间不足的问题&#xff0c;这时候很多用户会选择通过清除数据或者刷机来解决问题。但面对官方Recovery、TWRP、Fastboot等不同环境下的各种清除选项&#xff0c;新手很容易一头雾水。我刷机这么多年&#xf…

作者头像 李华