在做数据库巡检的时候,检查ASM空间是必做的一步。在冗余模式为external时,可以很容易计算出剩余可用空间=Free_MB,如果下图所示,磁盘组DATA的剩余可用空间为22403MB。

如果磁盘组为normal,又是如何计算剩余可用空间,以及REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的值,这个问题的答案跟很多复杂问题的答案一样:要看情况。

Column

Description

FREE_MB

Unused capacity of the disk group (in megabytes).

REQUIRED_MIRROR_FREE_MB

Amount of space that is required to be available in a given disk group in order to restore redundancy after one or more disk failures. The amount of space displayed in this column takes mirroring effects into account.

USABLE_FILE_MB

Amount of free space that can be safely utilized taking mirroring into account and yet be able to restore redundancy after a disk failure.

简单来说,视V$ASM_DISKGROUP中:

FREE_MB:磁盘组中没有被使用的空间。

REQUIRED_MIRROR_FREE_MB:如果ASM磁盘或ASM磁盘组出现故障后,要重新满足冗余度的定义,要求有多少的空闲空间。

USABLE_FILE_MB:在满足冗余度之后,还有多少的剩余空间可以用。

那么,ASM是如何计算出这些值的?接下来可以通过一些不同组合的磁盘组来解答这一问题。

  1. Normal模式,个Failgroup

先创建一个normal冗余模式的磁盘组DATANEW,然后添加4块磁盘,每个Failgroup2块,其中1块1G,另一块500M。

Disk01

Disk02

Failgroup01

1G

500M

Failgroup02

1G

500M

ASM在磁盘组内使用failgroup来提供数据的镜像和冗余,数据存储在一个failgroup的同时,会在另外的failgroup存储相同的数据副本,以此来保障数据安全,在一个normal冗余的磁盘组中,会有两份相同的数据,所以在一个failgroup出现故障时并不会影响整个磁盘组的可用性,ASM还可以根据镜像数据让磁盘组重新达到normal冗余的要求,但是为了能做到这一点,需要磁盘有足够的剩余空间,因此failgroup实际有多大就显得非常的重要了。

查看视图V$ASM_DISKGROUP来获得磁盘组的相关信息:

以上输出显示:

TOTAL_MB=3048MB --正好是所有磁盘大小之和。

FREE_MB=2854MB --并不等于TOTAL_MB,说明盘头中有数据。

REQUIRED_MIRROR_FREE_MB=1024M --大小等于最大的磁盘。

USABLE_FILE_MB=915MB --计算公式:USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / 磁盘冗余度

从磁盘组可以得到的信息是磁盘中没有被使用的空间为2854MB,如果出现故障,要满足冗余度的定义,要有1024MB的空间,在满足冗余度之后,还有915MB的剩余空间可以用。

那么磁盘组DATANEW到底还剩余多少空间呢?是要看FREE_MB,还是USABLE_FILE_MB?接下来就来验证这一问题:

  1. 磁盘组DATANEW新增一个1000MB的数据文件

再次查看视图V$ASM_DISKGROUP信息

以上输出显示:

FREE_MB=836MB --约等于(2854-1000)/2

USABLE_FILE_MB=-94MB

根据计算公式USABLE_FILE_MB=(836 – 1024) / 2=-94,尽管添加数据文件之前USABLE_FILE_MB为915MB,但还是成功添加了一个1000MB的文件,而FREE_MB的剩余空间减少约等于2个数据文件的大小。

  1. 再次添加一个500MB的数据文件

报错DATANEW剩余空间不足,836M的剩余空间无法再创建一个500M的文件。

从上面的测试可以推论出:

  1. 在磁盘组为normal冗余模式下,实际剩余可用空间为FREE_MB / 冗余度,也就是FREE_MB的一半,这是因为根据normal冗余,数据会存在一份相同的镜像,所以实际占用的空间也会多出一倍。
  2. USABLE_FILE_MB可以变为负值,表示ASM并不会强制留出REQUIRED_MIRROR_FREE_MB的空间,但是这意味着如果遭遇了ASM磁盘组故障,有可能会没有足够的剩余空间来重新满足冗余度的要求。如果USABLE_FILE_MB为负数,就应该增加磁盘组的空间或者释放出一些空间来。
  1. Normal模式,多个Failgroup
  1. 在之前测试的基础上新加2个Failgroup

Disk01

Disk02

Failgroup01

1G

500M

Failgroup02

1G

500M

Failgroup03

1G

500M

Failgroup04

2G

500M

查看视图V$ASM_DISKGROUP来获得磁盘组的相关信息:

结果有些不同,在有2个Failgroup的时候,REQUIRED_MIRROR_FREE_MB的值等于最大磁盘的大小,而在Failgroup大于2的时候,REQUIRED_MIRROR_FREE_MB的值等于最大Failgroup的大小。

ASM会在不同的failgroup中存储镜像数据,1个normal冗余的磁盘组要求至少有2个failgroup,1个high冗余的磁盘组要求至少3个failgroup,如果具有2个failgroup的normal冗余磁盘组,其中1个failgroup发生了故障,那么这个磁盘组如何重新满足冗余度的要求?不能!因此这种情况下,ASM仅仅给出了一个磁盘的大小作为REQUIRED_MIRROR_FREE_MB的值。

  1. 在添加一个1000MB的数据文件,磁盘组DATANEW就有了共2000MB的数据文件

再次查看视图V$ASM_DISKGROUP信息

和预期的一样,FREE_MB减少了近1000MB * 2的大小。

综上所述,在normal冗余模式下,实际剩余空间 = FREE_MB / 2。REQUIRED_MIRROR_FREE_MB的值表示重新满足冗余度所需要的空间,这个值的大小取决于冗余度和failgroup的数量,failgroup数量为2时,这个值等于最大磁盘的大小(如果failgroup只有1个磁盘,那么这个值为0),failgroup数量大于3时,这个值等于最大failgroup的大小。USABLE_FILE_MB的值表示在满足冗余度之后,还有多少的剩余空间可以用,这个值可以为负值,但是这意味着如果遭遇了ASM磁盘组故障,有可能会没有足够的剩余空间来重新满足冗余度的要求,为了避免出现负值情况,可以增加磁盘组空间。

Normal模式下ASM中的空间参数解析相关推荐

  1. oracle在非归档模式下,Oracle在非归档模式下不能更改表空间为备份模式

    Oracle表空间设置为备份模式后,便可以联机对表空间下数据文件进行文件系统级别的copy备份操作,因为期间对表空间的修改都记录到数据库的重做日志文件中. 由此想到数据库如果是非归档模式,那么这个表空 ...

  2. 关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】

    刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [root@ ...

  3. vim normal 模式下L键

    vim normal 模式下L键总是到一行的最后一个字符,而不是最后一个字符的下一个字符,这样进入插入模式,就还得往右移动一下,就很费劲? 怎么解决 更新: a键进入插入即可 转载于:https:// ...

  4. vim 使用体会(1) Normal模式 当你启动Vim后,Vim会处于Normal模式。在Vim的Normal模式下,所有的键就是功能键,下面附上Vim快捷键分布图。 (2) Insert模

    (1) Normal模式 (2) Insert模式 在Normal模式下,按下键盘上的i键入Insert模式.在Insert模式下,你可以自由的输入你想要输入的东西了,就像使用其他编辑器一样~ (3) ...

  5. STM32使用DMA在Normal模式下二次传输

    当STM32的DMA配置为Normal(即单次)模式时,在DMA第一次传输完成后,要启动第二次DMA传输,需先关闭该DMA通道,重新设置DMA传输数据个数,再开启DMA通道. 原理和定时器关闭自动重载 ...

  6. sublime 下 解决Vintage模式下,normal 模式下中文输入的问题。

    * sublime 下 解决Vintage模式下,normal 模式下中文输入的问题.* 大家好,相信有不少sublime 铁粉在vintage 模式下,使用vim 快捷键时,在转换normal 与 ...

  7. 计算机探索策略的反馈调整,任务驱动模式下的中职计算机应用基础课程优化教学探索...

    邵志杰 摘 要:在中职计算机课程教学过程中,教师应当结合中职学生的实际情况以及未来职业需求来调整教学策略,使学生能够在计算机课堂上提升知识运用能力.基于此,教师在开展中职计算机应用基础课程教学过程中, ...

  8. Script:找出ASM中的Spfile参数文件

    以下脚本可以用于找出ASM存储中的Spfile参数文件,因为使用asmcmd去查找很不方便,而spfile丢失又是很头大的事情, 所以有一个脚本代劳可以省不少功夫呢! --- listspfiles. ...

  9. C语言中函数可变参数解析

    大多数时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数.但在某些情况下希望函数的参数个数可以根据需要确定.典型的例子有 大家熟悉的函数printf().scanf ...

最新文章

  1. 不同Logger的使用
  2. Iphone是革了传统互联网的命
  3. 用python爬取淘宝用户数据的单位是_国内有没有数据爬取方面的公司?
  4. 加载如下html 写出输出顺序,浏览器加载和渲染html的顺序-结论篇
  5. 教你写出可读性高的Python代码
  6. hadoop自动提交脚本
  7. click事件在什么时候出发_超全的js事件机制amp;事件委托
  8. 2021 ACDU China Tour启航,首站邀您北京共话行业数据库技术实践
  9. c语言乘法口诀表的流程图_看了100篇化妆教程,还没有这60句化妆口诀管用
  10. ppt 胡事民 计算机图形学_从相机标定到SLAM,极简三维视觉六小时课程视频(附PPT)...
  11. OpenWrt网络结构
  12. 【svn】svn分支(branch)如何同步主干(trunk)的代码?
  13. 查看树莓派引脚以及串口连接
  14. qt修改文件编码格式
  15. openshift operator 介绍
  16. Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法
  17. IT人员如何成为一名云计算工程师
  18. 【ReID】ABD-Net: Attentive but Diverse Person Re-Identification
  19. 整理任正非思想:再论反骄破满,在思想上艰苦奋斗-1996
  20. 虚拟地址转换成物理地址

热门文章

  1. 未来五年移动互联网有哪些热门技术?(转)
  2. kali WiFi密码破解分享
  3. 1022: [SHOI2008]小约翰的游戏John
  4. 如何开高效的需求评审会?
  5. 小学计算机打字比赛教案,打字比赛活动方案
  6. 其它品牌手机可以刷鸿蒙,定了,鸿蒙系统4月起开始搭载智能手机,其它品牌手机能支持吗?...
  7. MES的转型升级,智能制造呼唤新理念
  8. C# dynamic是什么
  9. uniapp 关于swiper组件和moveable-area、moveable-view组件搭配的图片预览高度集成组件
  10. 透视HTTP协议-03|HTTP协议进阶(一)