zoukankan      html  css  js  c++  java
  • 案例分析:程序媛记一次特殊的“故障”处理

    关注我们获得更多精彩

    640?wx_fmt=jpeg


    作者 | 兰珊,多年数据库服务经验、主要服务于政府、电网等企。擅长数据库升级、迁移、故障处理。


    摘要


    数据库表空间扩容是我们在运维过程中经常需要做的事情,本文分享一次在扩容表空间中遇到的情况以及针对本次情况的一些想法。



    记一次在运维过程中遇到的问题,在最近的一次表空间扩容中遇到的问题,该表表空间使用率达到 80% 以上,照常对该表空间进行扩容时报错,报错提示如下:

     

    640?wx_fmt=png


    打码部分为表空间名称,错误提示空间不足,在扩容表空间时已经检查过磁盘组的剩余空间。

     

    DATA 磁盘组的剩余空间还很充足,于是根据错误提示上 mos 查:

     

    640?wx_fmt=png


    结果如图,错误提示一样,直接拉到最后看解决办法。

     

    640?wx_fmt=png

    根据 mos 提供的方法,检查修复之后重新 rebalance。


    alter diskgroup diskgroupname rebalance power 32:使用此子句手动重新平衡磁盘组。自动存储管理在所有驱动器上均匀地重新分配数据文件。


    POWER :在 POWER 子句中,指定 0 到 11 之间的值,其中 0 表示重新平衡操作,11 表示 Oracle ASM 尽可能快地执行重新平衡。您在 POWER 子句中指定的值默认为 ASM_POWER_LIMIT 初始化参数的值。


    虽然指定 power 值为32,但是实际日志中查看,最大只能达到 11

     

    640?wx_fmt=png


    查询官方文档给出的解释:

    ASM_POWER_LIMIT:该 ASM_POWER_LIMIT initialization 参数指定磁盘组中磁盘重新平衡的默认功率。该值的范围是 0 到 1024。默认值为 1。值 0 禁用重新平衡。较高的数值使重新平衡操作能够更快地完成,但可能会导致更高的 I / O 开销和更多的重新平衡过程。

    • 对于具有磁盘组ASM兼容性集到磁盘组11.2.0.2或更大(例如,COMPATIBLE.ASM= 11.2.0.2),值的操作范围是 0 到 1024 用于重新平衡能力。

    • 对于磁盘组 ASM 兼容性设置为小于的磁盘组 11.2.0.2,值的操作范围 0 为 11包含。如果值 ASM_POWER_LIMIT 大于11,则将值用于 11 这些磁盘组。


    初始化参数的 POWER 子句允许值范围相同 ASM_POWER_LIMIT。如果 POWER 指定的子句的值大于 11ASM 兼容性设置为小于的磁盘组 11.2.0.2,则会显示警告,并且将使用 POWER 等于的值 11 进行重新平衡,所以日志中看到的最大值为 11。


    等到重新 rebalance 完成之后,重新增加数据文件发现仍然失败了,查看磁盘组信息发现每块盘的大小并没有改变。

     

    640?wx_fmt=png


    于是返回仔细查看 mos 文档,根据 mos 提示查看 Usable_file_MB 的值,我发现数据库的 Usable_file_MB=-115876 是一个负数。

     

    640?wx_fmt=png


    这个值代表什么意思,为什么是负数呢?我查询官方文档,官方文档给出的解释是:USABLE_FILE_MB 表示为镜像调整的可用空间量,可用于新文件在磁盘发生故障后恢复冗余。USABLE_FILE_MB 通过 REQUIRED_MIRROR_FREE_MB 从磁盘组中的总可用空间中减去然后调整镜像值来计算。例如,在正常冗余磁盘组中,默认情况下,镜像文件使用的磁盘空间等于其大小的两倍,如果剩余 4 GB 的实际可用文件空间,则 USABLE_FILE_MB 大约等于 2 GB。然后,您可以添加最大 2 GB 的文件。

    REQUIRED_MIRROR_FREE_MB 指为了使 diskgroup 能在一个或多个磁盘损坏后能够恢复冗余(redundancy),磁盘组中应该保留的剩余空间。


    在 data 磁盘组的查询输出示例中,计算如下:

    (FREE_MB - REQUIRED_MIRROR_FREE_MB)/ 2=USABLE_FILE_MB

     (278199-509952)/2=-115875


    该值为负数时有那些影响呢?官方文档给出的解释:

    1. 根据值FREE_MB,您可能无法创建新文件。

    2. 下一次失败可能会导致冗余减少的文件。


    如果 USABLE_FILE_MB 变为负数,强烈建议您尽快为磁盘组添加更多空间

    虽然 DATA 磁盘组还剩 两百八十多G 未使用,但是采用的是 Normal redundancy,减去故障恢复所需要的磁盘空间,剩下的空间已经不足了。所以无法新增数据文件,对表空间进行扩容。


    联系存储工程师新加一块 500G 的磁盘,对 DATA 磁盘组进行扩容。

    alter diskgroup DATA rebalance power 11;


    等待 rebalance 完成之后,再进行扩容表空间,表空间成功扩容。

     

    640?wx_fmt=png

    总结

    这次故障其实算不上真正意义上的故障,扩容失败主要是磁盘组剩余可使用空间不足,惯性思维认为剩余空间大小充足,就应该能进行扩容表空间,本来新增存储扩容磁盘组就能解决问题,由于知识储备不够,关注的问题的点不够全面导致这次简单的扩容复杂化了。以后在对表空间进行扩容时,不仅要关注磁盘组的剩余空间大小,还要注意磁盘的冗余方式。


    作者:兰珊

    投稿:有投稿意向技术人请在公众号对话框留言。

    转载:意向文章下方留言。

    更多精彩请关注 “数据和云” 公众号


    招聘专栏

    Oracle 售前工程师(广州、深圳、上海、武汉、北京、石家庄)


    Oracle 高级工程师(上海、深圳、北京、成都、昆明、贵州、西宁)


    MySQL 技术经理(上海、南京、成都)


    MySQL 工程师(上海、杭州)


    超高待遇:丰厚的年终奖,五险一金,高额学习基金,团建旅游,法定节假日,福利假期等。


    推荐他人成功入职有好礼(iPhone X)相送 。


    投递简历至邮箱:hr@enmotech.com


    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    2018DTCC , 数据库大会PPT

    2017DTC,2017 DTC 大会 PPT

    DBALIFE ,“DBA 的一天”海报

    DBA04 ,DBA 手记4 电子书

    122ARCH ,Oracle 12.2体系结构图

    2017OOW ,Oracle OpenWorld 资料

    PRELECTION ,大讲堂讲师课程资料

    近期文章

    仅仅使用AWR做报告? 性能优化还未入门

    实战课堂:一则CPU 100%的故障分析

    杨廷琨:如何编写高效SQL(含PPT)

    一份高达555页的技术PPT会是什么样子?

    大象起舞:用PostgreSQL解海盗分金问题

    ProxySQL!像C罗一样的强大

    高手过招:用SQL解决环环相扣刑侦推理问题

    640?wx_fmt=jpeg

  • 相关阅读:
    扩展VirtualBox虚拟机磁盘容量
    Java实现莱布尼兹问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    第九届蓝桥杯JavaC组省赛真题
    第九届蓝桥杯JavaC组省赛真题
    第九届蓝桥杯JavaC组省赛真题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312292.html
Copyright © 2011-2022 走看看