近期adg备库负荷高,经常高达99%甚至100%,所在主机还同时运行了两个informix实例,经过分析主机监控信息,发现informix占用了更多的CPU,但由于无法检查、控制informix,决定先从oracle方面尽量优化处理。
针对adg备库的使用,主要是来自一个报表库A的dblink查询,该报表库A建立在另外的城市,网络带宽受限,一些大量的报表查询会非常缓慢,一些任务甚至挤压了很多天无法执行完毕,而这些查询也进一步增加了主机CPU负荷。
注意,此时没有停掉异地的报表库,又在本地建立了报表库B,同样通过dblink进行大量的报表查询,所有的任务没有积压,执行很快。
报表库A采用导入的方式建库,一些报表任务一直在执行,大约从10月5日积压到今天21日,所以最久的会话已经执行了16天没有执行完毕,类似的来自报表库A的sql查询共计43条,如下所示。
select 'kill -9 '||p.spid from gv$session s,gv$process p where s.PADDR = p.ADDR and s.program like '%bd%'; -------------------------------- kill -9 60490580 kill -9 13172818 kill -9 3606292 kill -9 55509530 kill -9 4456748 kill -9 32965404 kill -9 54853718 kill -9 3998586 kill -9 4785596 kill -9 53477546 kill -9 65274060 kill -9 13042306 kill -9 35455334 kill -9 918542 kill -9 13501180 kill -9 38601624 kill -9 50004250 kill -9 46465076 kill -9 59769410 kill -9 47711008 kill -9 63504962 kill -9 44565178 kill -9 8192638 kill -9 60555614 kill -9 25625254 kill -9 12124484 kill -9 37290684 kill -9 40960376 kill -9 6555460 kill -9 44630266 kill -9 36962532 kill -9 2425478 kill -9 45548320 kill -9 46007290 kill -9 54068116 kill -9 5702524 kill -9 56690326 kill -9 40763578 kill -9 49676304 kill -9 9110752 kill -9 40437332 kill -9 63833784 kill -9 33816640 43 rows selected.
采用alter sytem kill session的方式无法杀死这些会话?所以采用最粗暴的方式,直接杀server进程,杀掉后主机CPU负荷逐渐降到90%以下。
文章评论