经常有网友在构建10g/11g中ASM存储环境的时候遇到ASM磁盘无法识别的问题,虽然已经为存储设备赋予了适当的权限,也为ASM实例修改了asm_diskstring初始化参数,可是在DBCA的ASM Diskgroup创建页面里就是无法显示候选的ASM Disk磁盘。 实际上因为ASM存储方式比起裸设备或GPFS来说更为黑盒,我们也无法利用ASM instance中的一些动态性能视图或内部视图来排查造成这一问题的原因,使得这类问题显得十分棘手。 下面我来介绍一种使用操作系统调用追踪工具来排查ASM无法找到磁盘问题的方法。

[oracle@vrh1 raw]$ cd /dev/rdsk/* 演示中我们要用到的三个裸设备位于/dev/rdsk下 */[oracle@vrh1 rdsk]$ ls
hdisk1  hdisk2  hdisk3[oracle@vrh1 rdsk]$ sqlplus / as sysdbaSQL> select * from v$version;BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - ProductionSQL>  select path from v$asm_disk;
no rows selectedSQL> alter system set asm_diskstring='/dev/rdsk/hdisk*';
System altered.SQL> select * from v$asm_disk;
no rows selected/* 以上虽然设置了asm_diskstring参数,ASM instance依然无法在指定路径下找到合适的设备这是为什么呢?!
*/[oracle@vrh1 rdsk]$ ps -ef|grep rbal|grep -v grep
oracle   31375     1  0 15:40 ?        00:00:00 asm_rbal_+ASM1/* 找出当前ASM实例中的rbal后台进程  *//* 针对该后台进程做系统调用的trace,一般Linux上使用strace,而Unix上使用truss */strace -f -o /tmp/asm_rbal.trc -p $OS_PID_OF_RBAL_BGPROCESS
truss  -ef -o /tmp/asm_rbal.trc -p $OS_PID_OF_RBAL_BGPROCESS[oracle@vrh1 rdsk]$ strace -f -o /tmp/asm_rbal.trc  -p 31375
Process 31375 attached - interrupt to quit/* 在另外一个终端窗口中打开sqlplus登录ASM实例,执行对v$ASM_DISK或者X$KFDSK的查询 */SQL> select * from x$kfdsk;no rows selected/* 完成以上查询后使用Ctrl+C中断strace命令,并分析生成的system call trace *//* 因为在不同Unix平台上rbal后台进程可能使用不同的system call function函数以达到相同的目的,所以在你的平台上可能并不像在Linux上使用open和access2个关键词搜索就可以得到答案了!     */[oracle@vrh1 rdsk]$ cat /tmp/asm_rbal.trc |egrep "open|access"
31375 open("/dev/rdsk", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 15
31375 access("/dev/rdsk/hdisk3", R_OK|W_OK) = -1 EACCES (Permission denied)
31375 access("/dev/rdsk/hdisk2", R_OK|W_OK) = -1 EACCES (Permission denied)
31375 access("/dev/rdsk/hdisk1", R_OK|W_OK) = -1 EACCES (Permission denied)

可以看到以上系统调用中使用access函数访问候选的hdisk*ASM磁盘设备时出现了"Permission denied"的问题,很显然是因为权限不足导致了ASM实例无法利用这部分的磁盘设备,我们来纠正这一问题后再次尝试:

[root@vrh1 ~]# chown oracle:dba /dev/rdsk/hdisk*SQL> select path_kfdsk from x$kfdsk;PATH_KFDSK
--------------------------------------------------------------------------------
/dev/rdsk/hdisk3
/dev/rdsk/hdisk2
/dev/rdsk/hdisk1SQL> select path from v$asm_disk;PATH
--------------------------------------------------------------------------------
/dev/rdsk/hdisk3
/dev/rdsk/hdisk1
/dev/rdsk/hdisk2

以上丢失ASM Disk诊断方法的原理是在查询v$asm_disk或者x$kfdsk视图时Oracle会让RBAL这个ASM特别的后台进程去访问asm_diskstring参数指定路径下的所有可用设备,只要我们了解了在访问过程中RBAL遭遇的问题,那么一般来说都可以很简单地予以解决,如果strace/truss也无法给予你任何启示的话,也许你不得不去提交一个SR让Oracle Support来进一步协助你了,当然在正式提交SR之前你有必要再次确认一下你的ASM Disk是否都满足了以下的这些硬指标: 1.合理地设置ASM_DISKSTRING参数,若没有设置ASM_DISKSTRING参数那么ASM实例会尝试到默认的一些路径去搜索磁盘设备,这些默认路径在不同操作系统上略有不同:

操作系统 默认搜索路径
Solaris /dev/rdsk/*
Windows \\.\orcldisk*
Linux /dev/raw/*
Linux with ASMLIB ORCL:*
Linux with ASMLIB /dev/oracleasm/disks/*
HPUX /dev/rdsk/*
HP-UX(Tru 64) /dev/rdsk/*
AIX /dev/*

2.候选磁盘设备应当属于安装ASM的Oracle软件的用户,否则使用chown或卷管理软件修改磁盘拥有者,并保证磁盘被正确加载 3.候选磁盘设备应当设置合理的权限,一般为660,如果存在问题那么可以临时设为770以便测试 4.RAC环境中需要注意所有的磁盘设备应当在所有节点都可见,建议使用cluvfy工具验

本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1277762

Discover Your Missed ASM Disks相关推荐

  1. Oracle Grid 11.2.0.4 安装是出现INS-30510: Insufficient number of ASM disks selected.

    最新文章:Virson's Blog 错误的原因是由于磁盘数和冗余层级不匹配: 如果创建用来存放OCR和VOTEDISK的ASM磁盘组,那么External.Normal.High三种冗余级别对应的F ...

  2. 深入了解Oracle ASM(一):基础概念

    ASM基础概念   任何转载请注明源地址,否则追究法律责任!:http://www.askmaclean.com/archives/know-oracle-asm.html   相关文章链接: Asm ...

  3. 【ASM】ASM基础知识

    [ASM]ASM基础知识 市场占有率 ASM自动存储管理技术已经面世10多个年头,目前已经广泛使用于各个领域的数据库存储解决方案. 到2014年为止,ASM在RAC上的采用率接近60%,在单机环境中也 ...

  4. Oracle 10GR2+ASM在OEL上的安装(VMware Server 1.0)

    自动存储管理 (ASM) 是 Oracle 数据库 10g/11g 的一个特性,它为数据库管理员提供了一个简单的存储管理界面,并且该界面在所有服务器和存储平台上都是一致的.作为专门为 Oracle 数 ...

  5. ASM安装和sqlplus管理

    asm 架构图 ******************************** asm安装: 安装三个必要的包 # rpm -ivh *.rpm 1:oracleasm-support 2:orac ...

  6. 【ASM】Oracle ASM + 11gR2 + RHEL6.5 安装

    [ASM]Oracle ASM + 11gR2 + RHEL6.5 安装 [ASM]Oracle ASM + 11gR2 + RHEL6.5 安装 1.1    简介 1.1.1    ASMLib ...

  7. 红帽Linux 6.5上配置ASM流程

    ASM(Automatic Storage Management)是Oracle官方推荐的软件存储解决方案.自10g版本正式推出以来,软件架构层面上ASM的地位是在不断的提升.首先是11g将ASM从数 ...

  8. 多路径下使用ASMLIB创建ASM磁盘

    多路径下使用ASMLIB创建ASM磁盘 Asmlib有扫描磁盘有默认的顺序,通常为/dev/sd*,而多路径配置磁盘目录往往映射在/dev/mapper下 因此 #  egrep -v "^ ...

  9. 如果ASM磁盘组由哪些物理磁盘组成?

    我们知道用下面的方法可创建 ASM 磁盘,然后再创建逻辑的ASM组 以 root 用户身份创建 ASM 磁盘. # /etc/init.d/oracleasm createdisk VOL1 /dev ...

最新文章

  1. 创建php数组的方法,创建PHP数组的方法讲解
  2. 深入浅出设计模式原则之开闭原则(OCP)
  3. 清明赏春攻略——来一场技术踏青!
  4. 用Trivy扫描容器镜像
  5. java编译异常有哪些_编译时JAVA最常见的错误有哪些
  6. 使用RequireJS优化Web应用前端
  7. iOS 10 UserNotifications 框架解析
  8. 2018 腾讯内部转岗面试题 1 —— 不用 sizeof 判断操作系统是 32 还是 64 位
  9. Python源码深度解析—对象的创建
  10. 源码分析之String
  11. 拓端tecdat|R语言缺失值的处理:线性回归模型插补
  12. 50道编程题(有精力的同学看看)
  13. html页面怎么加入qq群,qq群申请
  14. 左程云算法体系班笔记
  15. 简简单单几行Python代码就能暴力破解网站登录密码,真有这么强吗?
  16. 王家林Spark笔记
  17. Java对象的生命周期与垃圾回收以及四种引用
  18. 抖音直播弹幕协议解析记录
  19. 【Android开发日记】jsonObject = new JSONObject(info)报错 A JSONObject text must begin with '{' at character
  20. 4.R语言【rehsape2包】介绍、melt( )、cast( )函数、其他使用技巧

热门文章

  1. 【GPS】GPS测试环境
  2. 数据类型详解之字符串
  3. 2018-8-10-控件
  4. 人工神经网络的硬件实现,人工神经网络基本概念
  5. 三栏布局的七种实现方式
  6. 老板到底能不能,监控到电脑版微信聊天?
  7. [Photography] 新摄影笔记
  8. Markdown 自动生成目录
  9. 软件和资源收集(四):图库、作图、音乐、视频
  10. 容器环境下如何将NuGet包XML文档添加到Swagger