ASM DISK 的Discovery PATH

ASM实例的ASM_DISKSTRING初始化参数使用一个逗号分割的字符串限制ASM实例发现的DISK可以用于ASM DISK, 该字符串支持通配符如使用星号(*)表示LIKE,只有匹配了该字符串中的路径,ASM disk才会被发现;同样支持如果问号(?)为该字符串的第一个字符时,像sqlplus中一样表示的是ORACLE_HOME的路径。注意同一DISK不会因为路径多次匹配而显示多次。

ASM_DISKSTRING的格式依赖于使用的是ASM library还是操作系统路径,如使用了ASM library,在安装和配置时asm_diskstring只需要配置ASM路径如ORCL:*路径即可,不要再配置ASMLIB中指定的映射前的DISK的路径如/dev/oracleasm/asmdisk*, 如果配置了会导致在v$asm_disk显示2种类型的路径,可以使用ASMCMD> dsget 查看,并使用ASMCMD> dsset –profile ‘ORCL:*’修正GPNPprofile中的配置。

ASM_DISKSTRING的默认值是NULL,NULL值表示ORACLE ASM会查找当前系统中默认路径中可以读写访问的所有磁盘。默认的路径是平台中指定的,依赖于操作系统,已知如下:

----------------------------------------------------------|
|Platform |Discovery Path |
-----------------------------------------------------------
|AIX |/dev/rhdisk* |
-----------------------------------------------------------
|HP-UX |/dev/rdisk/* |
-----------------------------------------------------------
|Solaris |/dev/rdsk/* |
-----------------------------------------------------------
|WINDOWS |\\.\ORCLDISK* |
-----------------------------------------------------------
|Linux |/dev/raw/* |
-----------------------------------------------------------
|On Linux if using ASMLib Kernel Driver| ORCL:* |
----------------------------------------------------------|

除非同一个ASM instance集群中的每个ASM实例Node都能通过自己的ASM_DISKSTRING发现,否则磁盘将不可用。 在同一ASM集群中所有节点的磁盘名不一定非要相同,但是必须都要被发现,因为ASM DG信息在DISK的磁盘头中, 可以动态的改变ASM_DISKSTRING参数增加新存储。

如何发现ASM DISK?
当ASM 实例启动时,会扫描并审核在参数ASM_DISKSTRING指定的路径中的所有磁盘,是的,所有。除了在实例启动时还有如下情况同样也会发生读取ASM_DISKSTRING查找磁盘:
* MOUNT一个ASM磁盘组时
* online一个ASM磁盘组中的磁盘时
* 创建一个ASM磁盘组时
* 增加一个ASM 磁盘到到ASM磁盘组时
* resize 一个asm 磁盘大小时
* 查询 v$asm_diskgroup 或者 v$asm_disk视图时
注: 以上行为不限于SQL或asmcmd或EM ,GC,CC等其它等同工具。

当ASM instance成功发现了ASM DISK后,会出现在V$ASM_DISK视图中,同时在DISK盘头上会记录磁盘的状态信息,可以在视图中或使用kfed查看磁盘的状态(kfdhdb.hdrsts)。

|——————————————————————————|
|状态                         |描述                                                                             |
——————————————————————————–
|MEMBER              |属于当前diskgroup的disk                                       |
——————————————————————————–
|FORMER              |这个disk以前属于一个diskgroup,现在这个diskgroup被删除了       |
——————————————————————————–
|CANDIDATE        |当使用裸设备,一个新的可以被diskgroup所用的disk               |
——————————————————————————–
|PROVISIONED    |特定平台的功能提供的可用asmdisk,如WIN asmtool或LINUX asmlib  |
——————————————————————————-|

ASM DISK发现的规则

* asm 最多可以发现1万个asm disk(10G,11g,12c R1),如果ASM disk超过了1万个,也是只显示前1万个。
* asm 只会发现磁盘分区,不会发现包含分区表中的分区
* 对于ASM DISK状态为condidate,provisioned,former的DISK不用force选项加入DISKGROUP, 而对于foreign状态只能使用force选项填加。
* 对于member状态的disk,如果不属于当前的任何mount的diskgroup,可以使用force强制填加。
* 同一个磁盘不要显示多个路径,如使用多路径软件时只显示伪路径。
* 如果使用了copy disk,可能会导致多个asm disk同一个磁盘头,填加时会失败
对于ASM的限制请查看#370921.1 ASM – Scalability and Limits

提升ASM DISK发现的时间
ASM的asm_diskstring参数是依赖操作系统值,用于限制ORACLE ASM查找ASM磁盘的路径集。当一个磁盘被加进DISKGROUP时, 每个ASM实例mounted的diskgroup中的磁盘路径必须匹配自己实例中的asm_diskstring路径。 多数情况时使用asm_diskstring默认的值足够, 但是使用更严格的值可能会减少oracle asm扫描磁盘时不必要的时间。提升asm diskgroup mount时间或add disk时的时间。 默认的asm_diskstring值(NULL)可能不会发现所有的磁盘, 比如如果使用了ASMLIB或第三方的多路径软件时, 必须使用asm_diskstring;

在ORACLE ASM 10gR1时查询v$asm_disk和v$asm_diskgroup是一个排它操作,因为每一次执行都要执行disk discovery.为了减少开销,允许轻量级的访问数据集,ORACLE ASM 10g R2及以后引入了新的视图,v$asm_disk_stat 和v$asm_diskgroup_stat,查询这两个视图数据来源内存并且不需要执行disk discovery. 所以在OEM中也通常使用该视图。

删除asm disk并且不想在v$asm_disk中看到,可以在drop diskgroup或drop disk后修改该disk的owner和权限禁止ASM访问,如果删除asm_diskstring中的部分disk也可以动态的修改asm_diskstring参数。

Reference  Esteban D. Bernal [improving oracle asm discovery time best practices]

ASM Disk Discovery 最佳实践的更多相关文章

  1. Ubuntu14.04+RabbitMQ3.6.3+Golang的最佳实践

    目录 [TOC] 1.RabbitMQ介绍 1.1.什么是RabbitMQ?   RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol ...

  2. 基于AWS的云服务架构最佳实践

    ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...

  3. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

    多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...

  4. SQL Server系统数据库备份最佳实践

    原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...

  5. RDS最佳实践(一)—如何选择你的RDS

    在去年双11之前,为了帮助商家准备天猫双11的大促,让用户更好的使用RDS,把RDS的性能发挥到最佳,保障双11当天面对爆发性增加的压力,不会由于RDS的瓶颈导致系统出现问题,编写了 RDS的最佳实践 ...

  6. SQLServer · 最佳实践 · 透明数据加密TDE在SQLServer的应用

    转:https://yq.aliyun.com/articles/42270 title: SQLServer · 最佳实践 · 透明数据加密TDE在SQLServer的应用 author: 石沫 背 ...

  7. [转] 阿里研究员谷朴:API 设计最佳实践的思考

    API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...

  8. Apache Kafka: 优化部署的10个最佳实践

    原文作者:Ben Bromhead      译者:江玮 原文地址:https://www.infoq.com/articles/apache-kafka-best-practices-to-opti ...

  9. ES最佳实践之分片使用优化

    Elasticsearch最佳实践之分片使用优化 作者:老生姜 一.遇到的问题 与大多数分布式系统一样,Elasticsearch按照一定的Hash规则把用户数据切分成多个分片,然后打散到不同机器进行 ...

随机推荐

  1. C/C++ -- Gui编程 -- Qt库的使用 -- 使用小写qDebug调试程序

    qDebug作为printf不需要头文件 qDebug()作为cout要使用头文件<QDebug> -----debug.cpp----- -----debug.cpp----- #inc ...

  2. freeSWITCH之安装

    freeSWITCH 安装 官网教程 https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+First+Steps Windo ...

  3. spring中获取applicationContext(2)

    前几天写web项目的时候,用到了spring mvc. 但是又写bean.我要在代码里面生成,而这个bean里面,又有一些属性是通过spring注入的. 所以,只能通过ApplicationConte ...

  4. elasticsearch(一):安装与配置

    一.elastic search的安装与配置 1.安装Java 并且配置JAVA_HOME环境变量. 2.下载elasticsearch,下载地址:https://www.elastic.co/dow ...

  5. CEF加载FLASH插件时弹出CMD命令行窗口的问题

    这个是flash插件的一个bug,CEF(chromium系列浏览器)关闭sandbox第一次加载flash插件就会跳出这样的一个提示,在Google官方也看到了chromium的issue: 解决方 ...

  6. drawRect:和layoutSubview的区别

    关于这两个方法的区别 还是有点意思的. UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDisplay会调用自动调用draw ...

  7. [C#]简单离线注册码生成与验证

    本文使用RSA非对称加密和Base64简单地实现离线注册码的生成与验证功能. 主要思路就是提供者持有密钥,通过RSA加密客户机标识或时间标识,再通过Base64加密成不太难看的注册码,然后分发给客户机 ...

  8. httpServletRequest中的流只能读取一次的原因

    首先,我们复习一下InputStream read方法的基础知识, java InputStream read方法内部有一个,postion,标志当前流读取到的位置,每读取一次,位置就会移动一次,如果 ...

  9. 各种IDE的使用

    sharpdevelop http://blog.sina.com.cn/s/blog_d1001bff0101di7p.html

  10. Nginx 反向代理时获取用户的真实 IP

    在平时我们开发后端程序的过程中,应该多多少少都会碰到记录客户端 IP 的场景,例如我之前写过的 APP 用户的一个审计功能,就需要获取用户的 IP 地址:还有广告系统里面,也是需要获取用户的 IP 地 ...