原文: When will my rebalance complete
作者: Bane Radulovic
译者:魏兴华,沃趣科技高级技术专家,主要参与公司一体机产品、监控产品、容灾产品、DBaaS平台的研发和设计。曾就职于东软集团,阿里巴巴集团,Oracle ACE组成员,DBGEEK 用户组发起人,ITPUB认证博客专家,ACOUG、SHOUG核心成员。曾在中国数据库大会、Oracle技术嘉年华、ORCL-CON、YY分享平台等公开场合多次做过数据库技术专题分享。对Oracle 并行机制、数据库异常恢复方法、ASM等有深入的研究,人称”Oracle Internal达人”,对企业数据库架构设计、故障恢复、高并发下数据库性能调优有丰富的经验,擅长从等待事件角度分析解决数据库性能问题,是OWI方法论的提倡者和践行者。
审校:魏兴华
责编:仲培艺
“磁盘组的rebalance什么时候能完成?”,这个问题我经常被问到,但是如果你期望我给出一个具体的数值,那么你会失望,毕竟ASM本身已经给你提供了一个估算值(GV$ASM_OPERATION.EST_MINUTES
),其实你想知道的是rebalance完成的精确时间。虽然我不能给你一个精确的时间,但是我可以给你一些rebalance的操作细节,让你知道当前rebalance是否正在进行中,进行到哪个阶段,以及这个阶段是否需要引起你的关注。
Understanding the rebalance
就像在本ASM系列文章的“rebalancing act”章介绍过的,rebalance操作本身包含了3个阶段:planning、extents relocation 和 compacting,就rebalance需要的总时间而言,planning阶段需要的时间是非常少的,你通常都不用去关注这一个阶段;第二个阶段extent relocation一般会占取rebalance阶段的大部分时间,也是我们最需要关注的阶段;最后我们也会讲述第三阶段compacting阶段在做些什么。
首先需要明白为什么会需要做rebalance,如果你为了增加磁盘组的可用空间,增加了一块新磁盘,你可能并不太会关注rebalance什么时候完成,好吧,也可能确实你需要关注,比如你的归档空间所在的DG满了,导致数据库HANG了。相似的,如果你为了调整磁盘的空间,例如resizing或者删除磁盘,你可能也不会太去关注rebalance什么时候完成。
但是,如果磁盘组中的一块磁盘损坏了,这个时候你就有足够的理由去关注rebalance的进度。假如你的磁盘组是normal冗余的,这个时候万一你损坏磁盘的partner磁盘也损坏,那么你的整个磁盘组会被dismount,所有跑在这个磁盘组上的数据库都会crash,你可能还会丢失数据。在这种情况下,你非常需要知道rebalance什么时候完成。实际上,你需要知道第二个阶段extent relocation什么时候完成,一旦它完成了,整个磁盘组的冗余就已经完成了(第三个阶段对于冗余度来说并不重要,后面会介绍)。
Extents relocation
为了进一步观察extents relocation阶段,我删除了具有默认并行度的磁盘组上的一块磁盘:
SQL> show parameter power
NAME TYPE VALUE
------------------------------------ ----------- ----------------
asm_power_limit integer 1
SQL> set time on
16:40:57 SQL> alter diskgroup DATA1 drop disk DATA1_CD_06_CELL06;
Diskgroup altered.
ASM的视图GV$ASMOPERATION
的ESTMINUTES
字段给出了估算值的时间,单位为分钟,这里给出的估算时间为26分钟。
16:41:21 SQL> select INST_ID, OPERATION, STATE, POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from GV$ASM_OPERATION where GROUP_NUMBER=1;
INST_ID OPERA STAT POWER SOFAR EST_WORK EST_RATE EST_MINUTES
---------- ----- ---- ---------- ---------- ---------- ---------- -----------
3 REBAL WAIT 1
2 REBAL RUN 1 516 53736 2012 26
4 REBAL WAIT 1
大约10分钟后,EST_MINUTES
的值变为24分钟:
16:50:25 SQL> /
INST_ID OPERA STAT POWER SOFAR EST_WORK EST_RATE EST_MINUTES
---------- ----