CPU 占用100%

早上遇到集团人员反映,说马司数据库系统切换后,还是出现CPU占用100%,接到电话后,连过去查看下。

应那边没设任何防范,很容易就连过去查看,TOP 下。

直接反映就是ORACLE出现问题,好几个进程都出现点用有10%以上。

 15242702_201006212049281.jpg

利用SQL查看下,PID 进程中,是在执行什么任务。

SELECT SQLAREA.SQL_TEXT
  FROM V$SESSION SESS, V$PROCESS PRO, V$SQLAREA SQLAREA
 WHERE PRO.SPID = &SPID
   AND SESS.PADDR = PRO.ADDR
   AND SESS.SQL_ADDRESS = SQLAREA.ADDRESS;

 

或者是

select sql_text
  from v$sqltext_with_newlines
 where (hash_value, address) in
       (select sql_hash_value, sql_address from v$session where sid = &sid)
 order by address, piece;

 

可以用SPID 查询出SID

select ses.sid from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr; -- 23965

 

查看哪台机器引起

SELECT a.username,
       a.machine,
       a.program,
       a.sid,
       a.serial#,
       a.status,
       c.piece,
       c.sql_text
  FROM v$session a, v$sqltext c
 WHERE a.sid = '174'
   and a.sql_address = c.address(+)
 ORDER BY c.piece

 

查看死锁

  SELECT   /*+   rule   */   lpad('   ',decode(l.xidusn   ,0,3,0))||l.oracle_username   User_name,    
                o.owner,o.object_name,o.object_type,s.sid,s.serial#    
  FROM   v$locked_object   l,dba_objects   o,v$session   s    
  WHERE   l.object_id=o.object_id    
  AND   l.session_id=s.sid    
  ORDER   BY   o.object_id,xidusn   DESC  

解锁为
(1).先杀Oracle进程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
(2).再杀操作系统进程:
KILL -9 刚才查出的SPID 或 ORAKILL 刚才查出的SID 刚才查出的SPID。


 

发现全是在查询语句。

WHERE A.CAR_ID = D.CAR_ID(+)

   and a.work_time between :d1 and :d2

   and a.crn_id like :crn_id

   and cntr_no like :cntr_no

   and nvl(d.car_code, 0) like :car_code

   and nvl(work_man, 0) like :name

   and a.cntr_opr like :pcntr_opr

   and a.cntr_type like :pcntr_type

   and a.cntr_size like :pcntr_size

   and a.eqp_sta like :peqp_sta

union

 where a.work_time between :d1 and :d2

   and a.crn_id like :crn_id

   and cntr_no like :cntr_no

   and nvl(work_mans, 0) like :NAME

     and nvl(a.BEG_FIELD_NAME, 0) like :car_code

   and a.cntr_opr like :pcntr_opr

   and a.cntr_type like :pcntr_type

   and a.cntr_size like :pcntr_size

   and a.eqp_sta like :peqp_sta

 order by work_time desc

 

在此SQL中出现太多的like % 和 union 还有再排序下,造成资源一直浪费在这。

因属于生产库,第一反映就是KILL掉进程,不会让CPU爆掉。

kill -9 pid ;

将CPU占用10%以上的进程全KILL了,就恢复正常。

15242702_201006212050451.jpg

因属于工作时间,根本没有时间认真去研究下。只tail -100 alert_portdb.log下。

Sun Jun 20 19:00:41 2010

ARCH: Completed archiving  log 1 thread 1 sequence 5659

Sun Jun 20 20:39:07 2010

Errors in file /oracle/admin/portdb/udump/portdb_ora_6751.trc:

ORA-07445: exception encountered: core dump [0000000100405A00] [SIGSEGV] [Address not mapped to object] [0x8FFFF7BB68790] [] []

Mon Jun 21 00:10:54 2010

SMON offlining US=11

SMON offlining US=12

Mon Jun 21 14:27:10 2010

Thread 1 advanced to log sequence 5661

 

发现从6月20号20:39就开始出现错误了,一发现ORA-07445问题就大了(第一意识)。

bash-3.00$ tail -100 /oracle/admin/portdb/udump/portdb_ora_6751.trc

发现全是查询语句的问题,这个只能跟开发人员联系,进行调优了。

 

fj.png1.jpg

fj.png2.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15242702/viewspace-665816/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15242702/viewspace-665816/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值