ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 15994|回复: 96

[精华] 有压力,要坚持 --- ASM还魂记 [复制链接]

版主

何乡是吾乡,归期未有期

精华贴数
6
技术积分
13512
社区积分
4358
注册时间
2004-12-7
论坛徽章:
110
ITPUB元老
日期:2007-12-12 18:09:57八级虎吧徽章
日期:2008-12-08 16:10:56生肖徽章2007版:狗
日期:2009-01-15 19:45:13生肖徽章2007版:龙
日期:2009-09-16 13:11:59祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:蛇
日期:2009-11-13 10:54:512010数据库技术大会纪念徽章
日期:2010-05-13 10:04:282011新春纪念徽章
日期:2011-01-25 15:41:012011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56
发表于 2008-2-24 00:31:21 |显示全部楼层
作者:NinGoo | 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】
地址:http://www.ningoo.net/html/2008/dba_under_pressure.html

DBA未必是一个高薪的职业,但绝对是一个高压力的职业。

昨天晚上,数据仓库一个4节点的RAC+ASM系统,在进行新加节点操作的时候,发现新节点的ASM实例无法mount diskgroup,报ORA-15042错误。后来尝试将整个库重启,结果所有节点的ASM实例都出现同样的问题了。这个教训告诉我们,在遇到问题没有搞清楚具体原因之前,千万不要轻易重启数据库。

但是问题既然已经发生,自然要想办法修复。这是一个将近7T的生产系统,虽然目前只供内部使用,也不可能接受长时间的停机,所以重建diskgroup然后从备份恢复的方案只能是最坏情况下的打算。那么,当务之急,是要尽快查出问题所在,对症下药。

工欲善其事,必先利其器。这次问题的解决,得益于oracle的kfed工具。从dump出来的结果看到,报错的两个disk的头信息确实已经损坏,另外一点比较奇怪的就是,正常disk header中记录的disk number和path信息,和从v$asm_disk查出来的已经不一致了。这个现象可能由于两个disk的头信息损坏,导致AMS Instance读取相关信息的整个机制出现了混乱。

首先将两个损坏的disk通过dd做一个完整的备份。另外一方面,流云也通过metalink开了一级tar,并且直接电话找oracle的相关支持人员调动资源帮助解决问题,事实证明,虽然对于紧急故障处理的速度可能不是足够快,因为他们不了解系统相关情况,需要花很多时间来问一些相关的问题等等。但是oracle拥有足够的文档资源,这也为最终解决问题打下了基础。当然,文档只是提供了方向和思路,而且往往不同的两个文档之间还会有矛盾之处,这些都需要根据情况来做出修正。

从oracle得到的一份文档记录了一个相似的案例,并且也是通过kfed工具修复了disk header而最终解决了问题,这给了我们足够的信心。拖雷和七公在家里也连上来和我们一起来分析如何修复损坏的disk header,根据dump出来的正常disk的头信息很快算出来两个异常disk的头信息,然后通过kfed将信息merge进去,满怀希望的重启ASM Instance,靠,问题依旧。

仔细比对文档,发现刚才没有去改时间截。时间截的信息,除了在每个disk header中保存,还会在集中保存在disk directory中。那么首先要找到这个disk directory。而disk directory的地址又保存在一个起始磁盘的某个AU上。所以就要找到这个file1block1的disk,也就是kfdhdb.f1b1locn 的值不为0的disk,通过一个个disk header的查找可以确定。当然,这次我们比较幸运,坏的两个disk不是f1b1,否则可恢复的机会就要大打折扣,时间上也会拉长很多,因为可能需要扫描整个disk去查到保存在disk其他位置的file directory信息,能找到还好,找不到就彻底没戏,只能重建了。

通过f1b1的AU2 block4中的指针(大多数情况下在这个位置,但并不保证),找到disk directory对应disk的时间截,当然,这个过程说起来一句话,实际上花了相当长的时间,其中还隐藏了很多细节,呵呵。处理这种问题,一个人真的很难搞定,因为基本都是internal的东西,之前从来都没有任何经验,只能靠一点点的蛛丝马迹去不同的猜测、验证,一个人的话就很容易走入死胡同,幸好我们是团队作战。

历经艰难找时间截信息,马上merge进去重试。My God,还是不行。这个时候已经是到凌晨了,从早上9点上班算起,已经连续工作了15个小时以上了,而且似乎坏事总是喜欢扎,中间还处理了另外一个备库文件创建失败的故障,还有个主机的一块盘也坏了,当然是镜像过的,问题不大,保修一下就好。到洗手间洗个脸,清醒一下。另外最坏的方案也开始做准备了,要是一两个小时内问题还是无法解决,就只能全库恢复了。

时间一点点过去,压力越来越大,脑子的运转也越来越慢。其实从dump出来的星期可以看到,disk header中的东西并不多,基本上就是四五处地方不一致需要修改的。那么为什么修改后还是不成功呢?再从头仔细的比对正常和修复过的disk header信息,发现check校验值是不一样的,而几个正常的disk都是同一个值。一般来说校验值应该是通过计算得到,所以check值没法通过 merge导入,那么只有手工强行更改了来试试是否可行了。事实证明,这是行不通的。但是,这次尝试也露出了一点点希望的曙光。之前merger后从v$ asm_disk.header_status看这两个盘的值一直都是INCOMPATIBLE,而这次终于有了变化,变成PROVISIONED。虽然 diskgroup依旧不能mount,心里还是觉得这条路是能走通的。

晚上原计划要将一个库rebuild几个索引到新的磁盘上以分布IO压力的,先把这个命令下了再说。回头再来想,为什么check会不正确呢?说明 check的计算,不但跟dump出来的那些值相关,跟头部中的其他一些位应当也是相关的,而这些位通过dump是看不到的。于是用od直接看16进制的值,通过比较发现很多在正常的disk header中全0的地方,在损坏的两个盘中都是有值的,莫非问题就出在这里?狠一点,将前面4k的头部全部用dd清零,然后重新merge。谢天谢地,diskgroup正常mount上了,oh,yeah!这个时候虽然已经凌晨4点了,因为持续的紧张和熬夜,我们都是面容疲倦,但是问题最终得到解决,还是相当的激动,流云同学甚至一拳打在椅背上将手都打出血来了^_^

做完一些善后工作,外面公交车在开始高叫“行人车辆请注意安全”了。再回头看这个晚上,其实中途好多次都想放弃了,一次次的失败真的让人非常的沮丧,而且周三的晚上才做了一次维护,疲劳状态下很多处理其实做得都不好,走了很都的弯路。也许很多事情都是这样,在你即将绝望放弃的时候,其实离最终的终点已经非常非常的接近,只要再坚持一下,但是这一下,又谈何容易呢。

[ 本帖最后由 NinGoo 于 2008-2-24 15:22 编辑 ]

注册会员

初级会员

精华贴数
0
技术积分
593
社区积分
1019
注册时间
2006-10-15
论坛徽章:
12
2008北京奥运纪念徽章:排球
日期:2008-08-04 12:34:512010年世界杯参赛球队:日本
日期:2010-05-14 00:29:36祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:马
日期:2009-03-10 11:27:28生肖徽章2007版:牛
日期:2009-01-20 17:04:49指数菠菜纪念章
日期:2009-01-06 12:20:54生肖徽章2007版:蛇
日期:2008-12-16 16:16:23生肖徽章2007版:猪
日期:2008-11-06 14:35:37生肖徽章2007版:牛
日期:2008-10-29 08:27:28生肖徽章2007版:蛇
日期:2008-10-17 10:10:072008北京奥运纪念徽章:摔跤
日期:2008-09-03 11:58:39ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22
发表于 2008-2-24 00:44:44 |显示全部楼层
学习了,这么晚不睡还是有收获哦,呵呵,沙发

使用道具 举报

版主

开门

精华贴数
3
技术积分
20342
社区积分
10129
注册时间
2002-11-28
论坛徽章:
106
生肖徽章:龙
日期:2006-09-07 10:14:59生肖徽章:龙
日期:2007-09-26 17:12:35生肖徽章:龙
日期:2007-09-26 17:12:20生肖徽章:龙
日期:2007-09-26 17:10:45生肖徽章:龙
日期:2007-09-26 17:10:41生肖徽章:龙
日期:2007-09-26 17:09:21生肖徽章:龙
日期:2007-01-25 16:50:47生肖徽章:龙
日期:2007-01-25 16:50:41生肖徽章:龙
日期:2006-09-07 17:03:02生肖徽章:龙
日期:2006-09-07 17:00:52生肖徽章:龙
日期:2006-09-07 10:19:47生肖徽章:龙
日期:2007-09-26 17:12:36
发表于 2008-2-24 00:47:08 |显示全部楼层

使用道具 举报

精华贴数
8
技术积分
49183
社区积分
22295
注册时间
2001-10-15
论坛徽章:
184
蜘蛛蛋
日期:2012-02-03 17:20:24迷宫蛋
日期:2011-12-20 08:39:39茶鸡蛋
日期:2011-12-01 22:49:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2012-01-06 16:55:17蜘蛛蛋
日期:2011-10-20 15:51:252012新春纪念徽章
日期:2012-01-04 11:49:54迷宫蛋
日期:2011-10-29 11:12:59复活蛋
日期:2011-12-14 09:37:30灰彻蛋
日期:2011-12-30 14:51:36ITPUB年度最佳版主
日期:2011-12-28 15:24:18紫蛋头
日期:2011-08-31 10:57:28
发表于 2008-2-24 00:54:35 |显示全部楼层
不错,群策群力,战斗力确实强.

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
102
社区积分
17
注册时间
2007-3-23
论坛徽章:
0
发表于 2008-2-24 00:54:53 |显示全部楼层

回复 #1 NinGoo 的帖子

“DBA未必是一个高薪的职业,但绝对是一个高压力的职业。”
赞这句!很有挑战

使用道具 举报

注册会员

怒放的生命

精华贴数
0
技术积分
519
社区积分
3
注册时间
2004-10-15
论坛徽章:
0
发表于 2008-2-24 01:05:53 |显示全部楼层
“遇到问题没有搞清楚具体原因之前,千万不要轻易重启数据库。”
我的blog

曾经多少次跌倒在路上曾经多少次折断过翅膀 如今我已不再感到彷徨我想超越这平凡的生活 我想要怒放的生命就象飞翔在辽阔的天空就象穿行在无边的旷野拥有挣脱一切的力量

使用道具 举报

版主

magic007

精华贴数
1
技术积分
2001
社区积分
65
注册时间
2004-2-8
论坛徽章:
20
授权会员
日期:2007-08-20 23:44:42咸鸭蛋
日期:2012-02-06 17:15:20管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010新春纪念徽章
日期:2010-03-01 11:20:052010年世界杯参赛球队:阿尔及利亚
日期:2010-02-26 11:08:08ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21
发表于 2008-2-24 01:43:10 |显示全部楼层
战斗力很强啊。感谢分享这么宝贵的经验。
我的网站:http://www.laoxiong.net
支持ASM的ODU软件及数据恢复:http://www.oracleodu.com
email:magic007cn[at]gmail.com
新浪微博:http://weibo.com/oracleodu

使用道具 举报

精华贴数
0
技术积分
2833
社区积分
11120
注册时间
2008-2-21
论坛徽章:
128
蓝锆石
日期:2008-08-23 16:25:58萤石
日期:2008-02-26 15:38:51祖母绿
日期:2008-08-18 16:12:54海蓝宝石
日期:2008-02-23 15:06:23紫水晶
日期:2008-08-22 14:58:26红宝石
日期:2008-07-26 15:02:37九尾狐狸
日期:2008-09-16 09:24:50红孩儿
日期:2008-10-26 12:20:09紫蜘蛛
日期:2008-11-19 08:33:41玉兔
日期:2009-02-02 09:09:53九尾狐狸
日期:2007-01-18 07:40:34蓝色妖姬
日期:2008-07-28 09:55:47
发表于 2008-2-24 08:11:07 |显示全部楼层
常常都是奋战在夜里的职业
遇到问题没有搞清楚具体原因之前,千万不要轻易重启数据库。得记住这句话

使用道具 举报

版主

版主

精华贴数
5
技术积分
16779
社区积分
3149
注册时间
2001-9-24
论坛徽章:
43
ITPUB元老
日期:2005-02-28 12:57:002010年世界杯参赛球队:希腊
日期:2010-04-10 03:25:41ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:跆拳道
日期:2010-10-12 02:26:092010广州亚运会纪念徽章:跆拳道
日期:2010-11-19 03:50:302010广州亚运会纪念徽章:篮球
日期:2010-12-15 05:22:122011新春纪念徽章
日期:2011-01-04 10:35:172011新春纪念徽章
日期:2011-01-25 15:41:012011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56
发表于 2008-2-24 08:22:13 |显示全部楼层
辛苦
MSN: stevenzhaoyi at hotmail.com
taobao店: http://ostreet.taobao.com/?spm=11026KLr.8-auqmS.2-4zl1Om

使用道具 举报

版主

版主 (Oracle 11g)

精华贴数
2
技术积分
10242
社区积分
397
注册时间
2004-11-14
论坛徽章:
52
管理团队2006纪念徽章
日期:2006-04-16 22:44:45蛋疼蛋
日期:2011-12-17 21:09:462012新春纪念徽章
日期:2012-01-04 11:50:44现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262010系统架构师大会纪念
日期:2010-09-04 13:35:54
发表于 2008-2-24 09:18:12 |显示全部楼层
辛苦
最大的追求莫过于让自己稳重、冷静、沉着、思考多学习、多做事最大的放弃莫过于浮躁

[200满员]Goldengate 技术交流群QQ: 129041284
www.dbcloud.info
Oracle&GoldeGate群:124029279
OGG容灾复制监控产品群:194835772

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部