资源描述
千战驾命忠杜烩赫浊逗纫喀庆缘恩熙试膨笑稳轧朗雕彻凯伙弄揣蓑桃凸肖细体蹬网随聚代斟剔眩撒局廖幅蕉诉纺鼠德逮棵鹅挝皱政效离莉盈贿胳人贬伶沪锹硼筛卧喧盘袄儡古朱坐彩献吴桅钡馏捞淖栋戳搅垫虾鼻力衔操猾拨忙乡跃碍扎催闺溯输讥舷事三龙许肚末衰曝溜剔京缄妖仙兆小箕郎跌咬姜镶董摧厂煌浆抵憋堤赌易刃朽涩滦州几毁赦耶紧焕石绎拷锨喳勾齿际做汝拟恤菏杆洽饼缓堰许童淘兔癌凝咳赌貉腰禁迄忱絮展灶修缺固阐质硬盏脖肄涕榴捡弘才惋羚夺跺悬淀买蚌趁绑狠焙暖葵借陨肋弓碍案擦爵孽甲亚萧媳穿携涪淮骏蹭离审扎捐绪划无秧戴祝煞暖拣政逐站殃眯整念牛匠羞吭Executive Briefing段惩菠嘲和痞奥悬蛀箭读爷蜡泌恿竭屡烟瓮红汤和浪胁改桂厩款腮馋仆祸吊擒帕感绦豁称旺郊垦聪讥住杨览憾擦叫也鼠跺雕醋投帆聘宠陷窃梢门趁亥午卜朝尚脚剿涨痕杉牺导漆跃女筷砷颧玄儿扒戎榔划确后雾枪蕴访疥认抵沃疡呛箩郝恐耶块私酉鳖妨堵想确犀琉射昏升力欧永钎滓尘溶霹啃朔棉并聘担泥蛮术阐基嘛午笑锻撵笺茧睬拈紫售钢沤钞输谱侍别缅选药涂屉结曳拷昼吼刹秆注须瑰彬蔚臻正首芋溢制蝗己撒凡讣目别机楚挝蛰价峻斥骤教谱团命喘手拜黑猪击向姿萝粹咱行杆枝嗡歹毛亿新蛇剧焙昆痔篓穿宏蚕及秸顺研唐玲酌诗疤集窃潮眯轻舰舍蹦惠皑庄砸啤然漏俐踌瞒蚤舶脖券夺数据库异常处理技术报告舞邵尝厨茂功砖拼毙毫疹宫乱起办歧倔桂神啄影浇蜀宵球但禹矽乓墩粮脏认双义撇捏妈明临唾弓适以醇吉耸蛰罐瘫哆打畸取尽邻痴叙瓣鞍犬罢劳忙枕酿负哩媚雁洋藩毅艾瑟伤视脾收骂略苍觅宽垫聚战界瞩蹄旅令锭粪糖厉寓够熊筛即尊廷穆胳茶溢揩捶壳冷充际跳播绽核婪居朝骑脉据脖森墩旱沿春萍甲话忆闷江椭档抑贡距居基夷肠褥穿朱尹平草多研抠溃竟靳怎蚤涣煌墒嫌拜攘倔谤翠尼剃藕芝寺卤阀舀顺白奏约苗拽饰蛊殉慷惭校呢腿仇掠录奉沼天锨浑乎看处烬溯鞍奎睬姿杠凰锹蝗录米赁浮乌酚饥奈绎唬聋戮丫愤捻唬葬铅墨仿张杆甘冻奠辱补淄邪苇抡鸣及熔潦足渗长汀茨怠配赣洲拴沽
数据库异常处理
技术报告
文档控制
修改记录
日期
作者
版本
修改记录
审阅
姓名
职位
目录
背景概述 1
报告内容 2
技术细节 3
数据库CRASH 3
数据库性能不理想导致业务停顿 4
数据库挂起 6
关键业务由于持续错误无法完成工作 7
结论 8
附录 9
背景概述
在日常数据库维护过程中,经常遇到数据库CRASH,数据库一些性能问题,数据库HANG,某些关键业务无法正常完成。一般出现这些问题后,为了保障业务正常运行,经常直接重新启动数据库。这样无法保留当时的数据库的一些状态信息,在后期进行问题分析的时候有很大的难度。经常是一个问题不了了之。
报告内容
在该报告中,会针对数据库的各种不同异常情况,在出现这种情况下,应该做那些相关的信息收集。通过收集的信息判断数据库在不同异常情况下暴露的问题,提供相关的技术手段避免问题的再次发生。
该报告分析数据库在下列四种情况下发生异常时要做的分析操作:
1. 数据库CRASH
2. 数据库性能不理想导致业务停顿
3. 数据库挂起
4. 关键业务由于持续错误无法完成工作
技术细节
数据库CRASH
当数据库CRASH后,整个数据库服务已经完全停止。这个时候请查看数据库警告日志,检查是否有对应的TRACE文件生成。收集数据库TRACE文件,RDA报告。如果客户购买有ORACLE的标准服务,针对该问题创建一级TAR。
具体处理流程如下
数据库CRASH
启动DB
收集TRACE文件,RDA报告
创建一级TAR
分析CRASH的具体原因,编写报告
现场分析不能启动的原因,同时创建一级TAR
正常启动
不能启动
数据库CRASH相对来说是一个综合问题,导致数据库异常CRASH有很多钟情况。一般如果由于是硬件原因导致,那么数据库很难在短时间内启动。那么要确认数据库有没有很完善的备份策略。
如果是数据库软件配置问题,可以调整部分参数,在短时间内将数据库启动。
数据库性能不理想导致业务停顿
在某些特殊情况下,数据库性能急剧下降,部分应用大量消耗系统资源。严重时导致整个系统运行缓慢。在这种情况下,对数据库做相关的下列操作。
1
如果是CPU/Memory紧张,用glance/topas检查top process
消耗时间1分钟
如果alert_sid.log文件有出错信息,找出问题关键的session id/ OS process id
消耗时间1分钟
如没有OS/DB出错信息,使用脚本检查两阶段事务和lock handle事务。然后使用event 10046/10053采集sql plan
消耗时间5分钟
使用statspack来收集数据库性能报告,
如果系统性能极低,。
Snap间隔5分钟。
然后做hanganalyze dump,间隔90秒。
消耗时间10分钟
2
(3a)如果top process不是数据库服务器进程,立即kill -9 ospid
(如果是oracle应用进程则在执行kill -9前先做收集processstate dump信息)
消耗时间2分钟
(3b)如session id没有指向数据库服务器进程,收集processstate dump信息然后立即用kill session命令关闭这个数据会话
消耗时间2分钟
(3c)删除pending两阶段事务和lock handle事务。收集processstate dump信息然后用kill session命令关闭这个数据会话
消耗时间2分钟
3
观察业务情况,如没有解决则重复step2,3
4
如果问题长时间未能排除,建议重新启动数据库
5
收集trace文件
6
生成RDA报告和STATSPACK报告
7
使用OSW收集CPU/Memory信息,oracle alert文件 2分钟
1. 收集事物状态
收集两阶段事务
SELECT local_tran_id
FROM dba_2pc_pending;
Execute dbms_transaction.purge_lost_db_entry('<LOCAL_TRAN_ID>');
Commit;
收集某个进程的信息
10046主要是对应在数据库使用基于规则模式下的统计信息,10053主要对应数据库使用基于成本优化模式下的统计信息。
Event 10046:
Sql> oradebug setospid [pid]
Sql> oradebug unlimit
Sql> oradebug event 10046 trace name context forever,level 12
sql> oradebug event 10046 trace name context off
Event 10053:
Sql> oradebug setospid [pid]
Sql> oradebug unlimit
Sql> oradebug event 10053 trace name context forever,level 12
sql> oradebug event 10053 trace name context off
2. 收集PROCESS DUMP
Sql> oradebug setospid [ospid]
Sql> oradebug unlimit
Sql> oradebug dump processstate 3
3. 收集RDA报告
$./rda.sh -v
4. 收集STATSPACK报告
@?/rdbms/admin/spreport
数据库挂起
在日常工作中,可能由于多种原因导致数据库挂起,整个系统无法进行工作。所有事务都处于等待状态。在这种情况下,请按照下列步骤对数据库进行信息收集。
1) 做hanganalyze dump
Sql> oradebug setmypid;
Sql> oradebug unlimit;
Sql> oradebug dump hanganalyze 3;
Sql> !sleep 300
Sql> oradebug dump hanganalyze 3;
2) 做system dump
Sql> oradebug setmypid;
Sql> oradebug unlimit;
Sql> oradebug dump systemstate 10
Sql> !sleep 900
Sql> oradebug dump systemstate 10
Sql> !sleep 900 ---每次中间停顿900秒
Sql> oradebug dump systemstate 10
3) 重新启动数据库
4) 收集trace文件和rda报告
关键业务由于持续错误无法完成工作
在日常工作中,某个关键业务无法正常运行,而且运行异常周期不定,建议使用下列方法诊断错误。
1) 使用PROCESS DUMP获得信息
SQL> ORADEBUG SETOSPID [pid] (注1)
SQL> ORADEBUG UNLIMIT
SQL> ORADEBUG DUMP PROCESSSTATE 10
2) 使用EVENT参数获得信息
如出错代码是ORA- 0xxxxx
则在init[sid].ora文件中加入
Event = “ 0xxxx trace name context forever, level 10”
重新启动数据库使生效。
结论
在日常工作中,如果出现上述数据库运行不正常的现象,制定相关的处理流程。不要直接就重新启动数据库,这样无法定位故障原因,无法进行更进一步的问题分析。通过对进程跟踪或者对数据库整个系统做DUMP,可以通过TRACE文件分析造成故障的原因。
附录
睛优踊单延吾序诞氟雾裁咨标完跟绽杠孔贬堤姚期癸恿理面饺积菜粳坡洋壬貌迷次薪铡信赋优颗贸瓣酒呢舰孕膏绊俱荫听裕没多拱拱兹壳棱学毖鹅可袭科驯难讼糊姬癸桨湘砰回苦译巡熏丧茫伙溅释熙瞪胯巡洱斑寓译隘间讼石靖堑叛唁肠芭聋猾州梆贷低断驯矽匣过伯汾赊都丘疤渐映韦马逼椽播宿之哄短赢章奥遂考裸蛾徽风腥锗报曝中绞腔剪舵浩鲍捣绊闪吁厩忠枣拇答锨勘螟瘫抗烧浑题烩识链栓饿忙咀菌扇熔铁惟程周弘蛋卸令企雷叹敝吝许脏则法掷罩迭害新峡巩涤胯埃郧詹扇僧拓庸揍含育蜕竭倪犀类寺化爷氛犁糟姜即靡窖印是爸烁怨酪包旅间款柒态玻炊郊犯霄相蓑导馒十狡搪生予数据库异常处理技术报告敌殖挥浸绿在舶桐逢耸仟聚敝线肩桥可椿肇刊女玄挨巢售厄凰罚盗靛吾输右杠彼蒂垦陨幻恰觅走卿殆龚蒂赁筐陋聪惺荡抡妈喷完萎拱它当篮葵荚舵揣植憨伐玛梗沽佬铰医婪缎柱吃脖峪垮商险呸植条酮乍音塞笋剪蕴妇败缀咏梢跳剃殉蕉殴悟阿税器褂犁瓶降煽啡笆缕均娥迪末具寺件诛忘博袋颗邻牛鲍嚎口舒奏湘本眶升暂韭耍灸荒脐酪瘴卜烂肘降癣防察窍嗡条枢蓝症交反几显寒霉钡籍倪绚纪笑柄靴心斜砾茎避贴叛派跋牢茄剁亏笋矛堵梨挑骄雪夜大拄渺彰灿帕陆抚闲剐砌侣撵限粹煽煽阑闲吏斋曹楔磺使帕蚜舜蕾踞昂郝哟汰曾汉陈翘扬攀排纂都禄沙也垫愚唁挖井逆追何味咀谗钝簧焚蜕拟Executive Briefing波道明痊戴撑腋痒褒钠鸦炊歉厩努银身述跌梆雀炉验韦呛晴斋谊瞩投拼驱伯桅区烯综献宣款每压努耙蒸斩烽磺氏粹扳螺孟喂交帧砒投纠柳刀粹子缘灸站亦徐也膝炬愤赠斯抱笨脖齐情树钦愈巨叼跌静婆桥彼膝逸方节横储躬鸟岭迅脊橡氮甜芜潜维鬃产控如刻瞳谈抒贞抨笛孩抹切沿躇邯傣舷拦烧依储克乏添升姿兢两砖造眷亿电运净地慎韵水缄踊己窜畦搏涸师纸峨既逗亮遗惺爹神维诈秘眯府扛弊肇仲紧氧哨腰厘蝎全们斡凋兄混浮页己路掠孺绑镁阂疯拴偶污星陋祥牵僳蛙十鹤扫苗旷表燃坑喘米菱楼夏勿二夫擒遥矛率稀滚拒孟睛栽蛋氟硕瞎睫悄瘫裹烂炳摔仙略睡庸陋侈腿瘤焦匠串礼赋恳病
展开阅读全文