CPU 99% DB 서버 (오라클 11G, RAC) 지속 되는 문제의 원인 분석의 건 0 1 2,297

by 와니와플 #CPU99 RAC [2016.10.14 16:04:12]


test.zip (45,450Bytes)

안녕하세요 첨부된 AWR 레포트는 해당 이슈 발생시 생성한 레포트 입니다.

 

CPU가 99%로 약 10분 정도를 점유하고 있는 상태로

 RAC 장애로 판단하여 원인 분석을 진행 하였으나 특별한 요소가 없어 난감한 상황입니다.

어떻게든 밝혀 내라는데...

혹시 AWR 첨부 레포트 보시고 원인 추정 되는 것 좀 공유 해 주실 수 있을지요?

 

고수님들의 많은 도움 부탁 드립니다.

감사합니다.

by 미스틱매니아 [2016.10.19 10:44:07]

전 잘 아는 편은 아니지만 일단 간단하게 보이는게 있어 적어봅니다.

 

1. 아래의 쿼리가 평균 100건 내외를 조회함에도 불구하고 평균 수행시간이 74초로 상당히 심각한 쿼리입로 보입니다. 총 23번 호출 됬습니다. (sql_id : 34h7yw4b8mqzp)

select a.co_no as"co_no", a.co_nm as "co_nm", a.emp0 as "emp0", a.part as "part", a.emp1 as "emp1", a.app_cnt as "app_cnt", a.app_amt as "app_amt", a.cc_cnt as "cc_cnt", a.cc_amt as "cc_amt", a.tot_cnt as "tot_cnt", a.tot_amt as "tot_amt", a.sales_amt as "sales_amt", a.fee as "fee", a.profit as "profit" from ( select a.co_no as co_no, max(b.co_nm) as co_nm, max((select max(s.emp_nm) from tb_user s where s.emp = a.emp0)) as emp0, max(fn_nm_code1('part', a.dept)) as part, max((select max(s.emp_nm) from tb_user s where s.emp = a.emp1)) as emp1, sum(nvl(a.app_cnt, 0)) as app_cnt, sum(nvl(a.app_amt, 0)) as app_amt, sum(nvl(a.cc_cnt, 0)) as cc_cnt, sum(nvl(a.cc_amt, 0)) as cc_amt, sum(nvl(a.app_cnt, 0) - nvl(a.cc_cnt, 0)) as tot_cnt, sum(nvl(a.app_amt, 0) - nvl(a.cc_amt, 0)) as tot_amt, sum(nvl(a.sales_amt, 0)) as sales_amt, sum(nvl(a.fee, 0)) as fee, sum(nvl(a.profit, 0)) as profit from tb_sales_statistics a, tb_comp b where a.tr_dt between :1 and :2 and a.co_no = b.co_no(+) AND a.currency_code = :3 group by a.co_no ) a order by a.tot_amt desc

 

2. 동시에 30분 만에 470만번 이상 호출된 쿼리가 있습니다. 그런데 위 쿼리의 fn_nm_code1('part', a.dept) 랑 아귀가 맞는 쿼리라서 해당 함수 내부 쿼리인걸로 보입니다. 이경우 함수 호출로 인한 부하까지 생각하면 엄청나겠네요. 1번쿼리가 오래 걸린 이유도 해당 함수를 다수 처리하느냐 일수도 있겠고요.

 

SELECT DISTINCT DESC1 FROM TB_CODE WHERE COL_NM = :B2 AND CODE1 = :B1

 

3. 1번쿼리도 해당 함수때문에 오래걸린거 같긴 한데, 해당 함수가 AWR 내 쿼리에서 자주 보여서 470만번 전부 해당 쿼리가 호출한거 같지는 않습니다. 다만 1번쿼리는 분명 튜닝 필요하고, 해당 함수 쓰는 쿼리가 대량으로 함수 호출하는 사태는 막아야 같습니다.

일단 레포트 상에서 보이는건 이거 정도입니다...다른 고수님들이 보면 더 좋은게 나올거 같은데 전 이정도가 한계이네요

  

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입