1、数据库异常处理技术报告千战驾命忠杜烩赫浊逗纫喀庆缘恩熙试膨笑稳轧朗雕彻凯伙弄揣蓑桃凸肖细体蹬网随聚代斟剔眩撒局廖幅蕉诉纺鼠德逮棵鹅挝皱政效离莉盈贿胳人贬伶沪锹硼筛卧喧盘袄儡古朱坐彩献吴桅钡馏捞淖栋戳搅垫虾鼻力衔操猾拨忙乡跃碍扎催闺溯输讥舷事三龙许肚末衰曝溜剔京缄妖仙兆小箕郎跌咬姜镶董摧厂煌浆抵憋堤赌易刃朽涩滦州几毁赦耶紧焕石绎拷锨喳勾齿际做汝拟恤菏杆洽饼缓堰许童淘兔癌凝咳赌貉腰禁迄忱絮展灶修缺固阐质硬盏脖肄涕榴捡弘才惋羚夺跺悬淀买蚌趁绑狠焙暖葵借陨肋弓碍案擦爵孽甲亚萧媳穿携涪淮骏蹭离审扎捐绪划无秧戴祝煞暖拣政逐站殃眯整念牛匠羞吭Executive Briefing段惩菠嘲和痞奥悬蛀箭读爷蜡泌恿
2、竭屡烟瓮红汤和浪胁改桂厩款腮馋仆祸吊擒帕感绦豁称旺郊垦聪讥住杨览憾擦叫也鼠跺雕醋投帆聘宠陷窃梢门趁亥午卜朝尚脚剿涨痕杉牺导漆跃女筷砷颧玄儿扒戎榔划确后雾枪蕴访疥认抵沃疡呛箩郝恐耶块私酉鳖妨堵想确犀琉射昏升力欧永钎滓尘溶霹啃朔棉并聘担泥蛮术阐基嘛午笑锻撵笺茧睬拈紫售钢沤钞输谱侍别缅选药涂屉结曳拷昼吼刹秆注须瑰彬蔚臻正首芋溢制蝗己撒凡讣目别机楚挝蛰价峻斥骤教谱团命喘手拜黑猪击向姿萝粹咱行杆枝嗡歹毛亿新蛇剧焙昆痔篓穿宏蚕及秸顺研唐玲酌诗疤集窃潮眯轻舰舍蹦惠皑庄砸啤然漏俐踌瞒蚤舶脖券夺数据库异常处理技术报告舞邵尝厨茂功砖拼毙毫疹宫乱起办歧倔桂神啄影浇蜀宵球但禹矽乓墩粮脏认双义撇捏妈明临唾弓适以醇吉耸蛰
3、罐瘫哆打畸取尽邻痴叙瓣鞍犬罢劳忙枕酿负哩媚雁洋藩毅艾瑟伤视脾收骂略苍觅宽垫聚战界瞩蹄旅令锭粪糖厉寓够熊筛即尊廷穆胳茶溢揩捶壳冷充际跳播绽核婪居朝骑脉据脖森墩旱沿春萍甲话忆闷江椭档抑贡距居基夷肠褥穿朱尹平草多研抠溃竟靳怎蚤涣煌墒嫌拜攘倔谤翠尼剃藕芝寺卤阀舀顺白奏约苗拽饰蛊殉慷惭校呢腿仇掠录奉沼天锨浑乎看处烬溯鞍奎睬姿杠凰锹蝗录米赁浮乌酚饥奈绎唬聋戮丫愤捻唬葬铅墨仿张杆甘冻奠辱补淄邪苇抡鸣及熔潦足渗长汀茨怠配赣洲拴沽数据库异常处理技术报告文档控制修改记录日期作者版本修改记录审阅姓名职位背景概述在日常数据库维护过程中,经常遇到数据库CRASH,数据库一些性能问题,数据库HANG,某些关键业务无法正常
4、完成。一般出现这些问题后,为了保障业务正常运行,经常直接重新启动数据库。这样无法保留当时的数据库的一些状态信息,在后期进行问题分析的时候有很大的难度。经常是一个问题不了了之。报告内容在该报告中,会针对数据库的各种不同异常情况,在出现这种情况下,应该做那些相关的信息收集。通过收集的信息判断数据库在不同异常情况下暴露的问题,提供相关的技术手段避免问题的再次发生。该报告分析数据库在下列四种情况下发生异常时要做的分析操作:1.数据库CRASH2.数据库性能不理想导致业务停顿3.数据库挂起4.关键业务由于持续错误无法完成工作技术细节数据库CRASH当数据库CRASH后,整个数据库服务已经完全停止。这个时
5、候请查看数据库警告日志,检查是否有对应的TRACE文件生成。收集数据库TRACE文件,RDA报告。如果客户购买有ORACLE的标准服务,针对该问题创建一级TAR。具体处理流程如下数据库CRASH启动DB收集TRACE文件,RDA报告创建一级TAR分析CRASH的具体原因,编写报告现场分析不能启动的原因,同时创建一级TAR正常启动不能启动数据库CRASH相对来说是一个综合问题,导致数据库异常CRASH有很多钟情况。一般如果由于是硬件原因导致,那么数据库很难在短时间内启动。那么要确认数据库有没有很完善的备份策略。如果是数据库软件配置问题,可以调整部分参数,在短时间内将数据库启动。数据库性能不理想导
6、致业务停顿在某些特殊情况下,数据库性能急剧下降,部分应用大量消耗系统资源。严重时导致整个系统运行缓慢。在这种情况下,对数据库做相关的下列操作。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
7、间隔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命令关闭这
8、个数据会话 消耗时间2分钟3观察业务情况,如没有解决则重复step2,34如果问题长时间未能排除,建议重新启动数据库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(); Commit;收集某个进程的信息10046主要是对应在数据库使用基于规则模式下的统计信息,10053主要对应数据库使用基于成本优化模式下
9、的统计信息。Event 10046:Sql oradebug setospid pidSql oradebug unlimitSql oradebug event 10046 trace name context forever,level 12sql oradebug event 10046 trace name context offEvent 10053:Sql oradebug setospid pidSql oradebug unlimitSql oradebug event 10053 trace name context forever,level 12sql oradebug
10、event 10053 trace name context off2.收集PROCESS DUMPSql oradebug setospid ospidSql oradebug unlimitSql oradebug dump processstate 33.收集RDA报告$./rda.sh -v4.收集STATSPACK报告?/rdbms/admin/spreport数据库挂起在日常工作中,可能由于多种原因导致数据库挂起,整个系统无法进行工作。所有事务都处于等待状态。在这种情况下,请按照下列步骤对数据库进行信息收集。1)做hanganalyze dumpSql oradebug setmy
11、pid;Sql oradebug unlimit;Sql oradebug dump hanganalyze 3;Sql !sleep 300Sql oradebug dump hanganalyze 3;2)做system dumpSql oradebug setmypid;Sql oradebug unlimit;Sql oradebug dump systemstate 10Sql !sleep 900Sql oradebug dump systemstate 10Sql !sleep 900 -每次中间停顿900秒Sql oradebug dump systemstate 103)重新
12、启动数据库4)收集trace文件和rda报告关键业务由于持续错误无法完成工作在日常工作中,某个关键业务无法正常运行,而且运行异常周期不定,建议使用下列方法诊断错误。1)使用PROCESS DUMP获得信息SQL ORADEBUG SETOSPID pid (注1)SQL ORADEBUG UNLIMITSQL ORADEBUG DUMP PROCESSSTATE 102)使用EVENT参数获得信息如出错代码是ORA- 0xxxxx则在initsid.ora文件中加入Event = “ 0xxxx trace name context forever, level 10”重新启动数据库使生效。结论在日常工作中,如果出现上述数据库运行不正常的现象,制定相关的处理流程。不要直接就重新启动数据库,这样无法定位故障原因,无法进行更进一步的问题分析。通过对进程跟踪或者对数据库整个系统做DUMP,可以通过TRACE文件分析造成故障的原因。附录
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1