导读:本期聚焦于深圳程序员创作的《Oracle RAC集群中如何使用asmcmd的lsdsk和lsdg命令管理ASM磁盘组?》,敬请观看详情。asmcmd是Oracle ASM实例自带的命令行管理工具,其中lsdg用于查看磁盘组的使用率、冗余级别、状态等关键信息,lsdsk则用于列出ASM磁盘的路径、所属磁盘组以及头状态。在RAC集群环境里,掌握这两个命令能帮助DBA快速判断磁盘空间是否告急、磁盘是否被多个实例共享、离线磁盘是否影响业务。本文围绕lsdg和lsdsk的常用参数展开讲解,包括HeadDate列含义、组过滤方式、候选盘识别方法,并结合实际运维场景给出排查思路和注意事项,适合负责Oracle RAC集群日常维护的数据库管理员参考使用。

Oracle RAC集群的存储层依赖ASM(Automatic Storage Management)来管理磁盘,数据库文件不再直接落在文件系统上,而是存放在一个个ASM磁盘组里。日常运维中,DBA最常问的几个问题无非是:磁盘组还剩多少空间?某块盘挂在哪个组上?新加的盘为什么ASM识别不到?这些问题在sqlplus里查视图当然可以,但asmcmd工具提供的lsdg和lsdsk命令更快更直观,本文结合实际使用场景详细讲解这两个命令。

Oracle RAC集群中如何使用asmcmd的lsdsk和lsdg命令管理ASM磁盘组?

一、asmcmd工具的进入方式与基本环境

asmcmd是一个操作系统层面的命令行工具,它通过连接ASM实例来执行操作。在RAC环境下,登录到任意一个节点的grid用户下即可使用。进入之前需要先设置好环境变量,确认ORACLE_SID指向的是ASM实例而不是数据库实例,这一点非常关键。单节点数据库的SID通常是orcl这类名字,而ASM实例的SID在RAC中一般是+ASM1、+ASM2这种带节点号的格式。

如果直接在grid用户下敲asmcmd报错,多半是环境变量没配对。可以先执行echo $ORACLE_SID确认当前SID,再通过asmcmd -p进入交互模式,-p参数会在提示符前显示当前路径,比如+DATA/racdb,方便定位当前位置。进入后看到的目录结构类似+DATA、+FRA这样的磁盘组挂载点,可以用cd和ls像操作普通目录一样浏览。

-- 在grid用户下切换环境并进入asmcmd
export ORACLE_SID=+ASM1
asmcmd -p
ASMCMD> lsdg
ASMCMD> exit

除了交互模式,asmcmd也支持一次性执行,格式为asmcmd lsdg或asmcmd lsdsk,适合写进shell脚本做定时巡检。需要注意的是,asmcmd必须在grid用户(或者说ASM软件的属主)下运行,用oracle用户执行可能会遇到权限错误,这是新手最常踩的坑之一。

二、lsdg命令详解:磁盘组状态一目了然

lsdg用来列出磁盘组的详细信息,不带任何参数执行时会显示所有已挂载的磁盘组。输出中最需要关注几列:State列显示磁盘组状态,正常应该是MOUNTED,如果出现DISMOUNTED说明该节点上组没有被挂载;Type列是冗余类型,EXTERN表示外部冗余、NORMAL是正常冗余、HIGH是高冗余;Total_MB和Free_MB分别代表总空间和剩余空间,单位是MB。

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_Free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576   2048000   356782                 0          356782              0             Y  DATA/
MOUNTED  NORMAL  N         512   4096  1048576    512000    88432             51200            18616              0             N  FRA/

这里有一个容易被忽视的细节:Req_mir_Free_MB和Usable_file_MB这两列。在NORMAL冗余的组里,ASM会预留一部分空间用于镜像恢复,所以Free_MB并不等于真正可用的空间。Usable_file_MB才是扣除镜像开销后实际能写入的容量,规划空间时务必以这个数字为准,否则按Free_MB做容量预估,实际写入量到了一半就可能报ORA-15041错误。

lsdg还支持按组名过滤,比如lsdg DATA只看DATA组的信息,也可以配合-g参数显示更详细的统计信息。如果发现某个组的Offline_disks大于0,说明有磁盘离线了,这时需要立即用lsdsk配合排查是哪块盘出了问题,避免冗余空间耗尽导致组被强制卸载。

三、lsdsk命令详解:定位磁盘与排查问题

lsdsk用来查看ASM磁盘层面的信息,直接执行会列出当前节点可见的所有ASM磁盘,包括磁盘路径、模式、状态和所属磁盘组。输出中的Header_Status列很关键,它反映磁盘头部的状态,常见的取值有几种:MEMBER表示该盘已经是某个磁盘组的成员;CANDIDATE表示是候选盘,可以被添加到组里;FORMER表示这块盘曾经属于某个组但已被删除;PROVISIONED通常出现在ASMLIB或UDEV管理的场景,表示已配置但尚未加入组。

ASMCMD> lsdsk
Path
/dev/sdb1
/dev/sdc1
/dev/sdd1

默认输出很简洁,只有路径。想看详细信息需要加-k参数,它会显示磁盘大小、空闲空间、头部状态、所属组名等;-g参数则从V$ASM_DISK视图读取全局信息,能看到所有节点对该盘的可见情况,这在RAC多节点排查共享存储问题时特别有用。

ASMCMD> lsdsk -k -g
Total_MB  Free_MB  OS_MB  Name        Failgroup  Failgroup_Type  LibLabel  Product  Redund   Path              Mode_S  State    Header_Status
  102400        0 102400  DATA_0000   DATA_0000  REGULAR                   0.0      UNKNOWN /dev/sdb1         ONLINE  NORMAL   MEMBER
  102400   356782 102400  DATA_0001   DATA_0001  REGULAR                   0.0      UNKNOWN /dev/sdc1         ONLINE  NORMAL   MEMBER
  102400        0 102400  DATA_0002   DATA_0002  REGULAR                   0.0      UNKNOWN /dev/sdd1         ONLINE  NORMAL   MEMBER

实际排障时,lsdsk最常见的用途有两个。第一是加盘前确认新盘状态,如果一块新扫出来的盘Header_Status显示为MEMBER,说明它的磁盘头还残留旧组信息,直接加盘会失败,需要先用dd清掉磁盘头或者用alter diskgroup ... drop disk在原组中正常删除。第二是判断节点间的磁盘可见性,如果节点1上lsdsk能看到某块盘而节点2上看不到,问题基本出在多路径配置、UDEV规则或SAN的zoning上,而不是ASM本身。

另外还有一个组合参数lsdsk -d DATA,可以只列出属于DATA组的磁盘,配合-p还能显示更完整的列信息。对于使用ASMLIB的环境,还可以用lsdsk --candidate只看候选盘,快速找出可用的空闲资源。

四、典型运维场景与注意事项

场景一:磁盘组使用率超过90%需要扩容。先用lsdg确认目标组的Usable_file_MB,再用lsdsk -k查看有没有CANDIDATE状态的空闲盘,确认路径无误后执行加盘SQL,加完观察Rebal列为Y表示正在重新平衡,等它变回N扩容才算完成。场景二:某节点数据库无法启动,报无法挂载磁盘组。此时在该节点执行lsdg看State是否为DISMOUNTED,再用lsdsk -g检查磁盘在该节点的可见性,逐层往下排查存储链路。

使用这两个命令时有几点提醒:一是lsdsk看到的磁盘路径在不同节点可能因多路径软件不同而显示不同,比如节点1显示/dev/sdb1,节点2显示/dev/mapper/mpathb,只要指向同一块物理盘就没问题;二是执行asmcmd相关命令会连到ASM实例,如果grid的profile环境变量混乱,可能出现连到错误实例的情况,建议每次先确认ORACLE_SID;三是巡检脚本中可以把lsdg输出做简单解析,对Free_MB低于阈值的组提前告警,比等业务报错再处理从容得多。掌握lsdg看组、lsdsk看盘这个基本分工,RAC存储层的日常管理就有了清晰的抓手。

Oracle RACASM磁盘组asmcmd修改时间:2026-09-10 13:18:38

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0910/54043.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。