|
1 请讲述你在实际工作中最满意的一次oracle性能诊断经过?
其实在日常中,主要的性能问题就是SQL语句调优,主要是针对执行计划,索引,统计信息等手段进行。还有一部分是同硬件环境相关的问题排查解决,当然AIX,LINUX下的问题总结都很多,但记得最深的一次还是入行碰到的那一次。多年前某政府部门提供一台配置不错的机器,装的是windows系统+oracale10g,专用为向领导层演示用的,一天大领导要看系统演示,可不知怎么回事,这台机器开机启动就花了2小时,启来了本机连数据库没问题,访问其他机器的应用也没问题,但从其他机器的应用层访问不了数据库,用plsql也不行,就报tns无法连接。接骨眼上出问题很要命,客户要求15分钟内解决问题,一下变政治任务了。第一遍检查防火墙,交换机 都没有设置端口限制,本机访问操作数据库正常,telnet此机的1521默认端口也正常,但就是连不进来。客户逼得紧,也赶紧梳理一下oracle监听连接流程和原理,1521只是建立一个可访问连接握手,真正的连接访问端口是数据库另外发起的,连不上,说明除1521外的端口肯定被限制了。虽然可以设置use_shared_socket参数共用1521端口,但客户不赞同。重压之余,联系到此机以前只需5分钟而现在启动要2小时的异常,问客户最近对机器做过什么特殊操作没有? 客户很肯定的回答没有。网络没问题,单端口出现异常,那只能跟网卡有关联。突然想到是否网卡有古怪,不断检查网卡的各项属性,果然在网卡属性里的高级筛选选项中发现古怪,网卡对端口做了筛选,其中一个就是只允许1521和其他一些应用的端口通过。这也解释了机器为何启动如此慢。果断取消网卡中的筛选,重启机器,5分钟内就启动完成,数据库服务一开启,演示系统正常连接进来,问题总算解决了。后继给领导的演示就很顺利了。但最后谁修改了网卡的端口筛选,客户一个都不承认,这也是"正常的反应"。重压之下终得升天,痛并快乐着。
2 请讲述你认为的oracle性能诊断和Oracle开发之间的关系?
性能诊断和调优有些是来自开发的需求,要想调优好就必须懂开发或者搞过开发,才能对系统有深入的使用体会和明确的目的。
搞过开发后从事调优较有优势,至少从工具使用层面是没有问题的,同时一些SQL调优需要基于业务进行分析调整,不懂开发,则调优达不到好的效果。
如果你提的改进建议没有站在开发的角度进行考虑,受到开发抵触几率是很大的。要会基于开发角度思考如何调整SQL实现,如何进行业务的合理变更达到更好的效果或改善性能。
不能只单纯丢个报告,这个地方有问题,这个语句有问题就完事了。要具体到如何改,有什么选择方案。这样双方都能理解才能有好的合作。
3 请讲述你在oracle性能诊断方面的失误及教训?
切记在没有完全了解环境和问题的来龙去脉之前就立马操刀,这是兵家大忌。
一次测试数据库启动不了了,根据日志等错误提示直接就开始做恢复处理,可到恢复到最后,越处理问题越多,都快到库需要重建的地步。挫败感到顶点了,最后好好沉下心来仔细检查恢复步骤和日志,突然发现 alert.log中的日期好像同自己手机上的时间不同,一看差了一个月。原来有人改了linux机器时间,导致数据库启动不了 。
折腾这么久,原来就是这个问题导致的,捶胸顿足不已。
所以碰到问题,先不动现场,要检查时间,用户,实例号,IP等都是正确无误后,才能做下一步的环境信息和问题信息收集处理.
解决方法能在自己机器上模拟一试的,一定要模拟通过后才能应用于现场。
多做CASE总结,也多学习别人的处理思路、过程。
对调优涉及到东西要知其然,更要知其所已然,对原理了解透彻后,才能分步骤,分范围的检查,缩小包围圈最终找到病根才可。
技术要多收集整理学习,新版本和新特性要多了解.
多上itpub等社区看看别人的交流和心得体会。
4 请推荐你在oracle性能诊断方面使用的工具?
addmrpt,awr报告这是最常用的。
aix,linux下的shell脚本处理要熟悉.
平时多收集整理有用的SQL脚本,诊断脚本,用时就能直接出手了,这个是最实用个人专用武器。
|
|