v$sqlarea 테이블 질문 0 4 1,703

by 민속주점 [Oracle Admin] [2018.09.11 15:10:02]


안녕하세요?

다름이 아니라 운영중인 시스템 DB v$sqlarea가 계속적인 증가로 인해

DB SQL 및 패키지가 정상적으로 수행 안됩니다. 그래서 ALTER SYSTEM FLUSH SHARED_POOL 명령을 통해

임시적으로 해결했으나, 이후 계속적으로 증가되어 질문드립니다.(다른 시스템 비교 결과 : 증가되다가도 감소 됨, 자동관리되는걸로 보임)

일전에 이런문제가 없었으나 갑작스럽게 발생됩니다.

oracle SGA 메모리영역을 확인해야할까요? 아니면 어디 점검 해야할까요...?

조언얻고자 질문 드립니다.

by 소주쵝오 [2018.09.11 17:33:19]
과도한 리터럴SQL 이 발생하고 있는지 확인 한번 해보세요~
동일한 쿼리에 조건절의 상수값만 변경되어 실행되는 쿼리가 있는지 확인해 보세요
메모리를 많이 사용하는 리터럴SQL을 바인드변수로 쿼리 수정해야 합니다.

select *
from (
select count(*) as cnt
     , substr(sql_text, 1, 50) as sql_text
     , sum(executions) as tot_exec
     , round(sum(sharable_mem/1024/1024), 2) as mem_MB
     , min(first_load_time) as start_time
     , max(first_load_time) as end_time
     , max(sql_id) as sql_id
from v$sqlarea
where 1=1
and executions < 5
group by substr(sql_text, 1, 50)
order by cnt desc
)
where rownum <= 20 ;

 


by 민속주점 [2018.09.12 10:58:39]

해당 sql 수행해보니

리터럴sql 호출하는 패키지 찾아 수정하여 모니터링 중 입니다.

감사합니다.


by jkson [2018.09.11 22:16:37]

사용은 안해봤지만 예전에 리터럴SQL 찾는 쿼리라고 기록해놓은 게 있네요.

select *

from

(

select parsing_schema_name , sql_id, sql_text, executions

,sum(executions) over(partition by force_matching_signature ) executions_sum

, row_number() over(partition by force_matching_signature order by sql_id desc) rnum

, count( *) over (partition by force_matching_signature) cnt

, force_matching_signature

, module

from gv$sqlarea s

where force_matching_signature != 0

)

where cnt > 5

--and rnum = 1

order by module , cnt desc, sql_text


by 민속주점 [2018.09.12 10:58:53]

리터럴sql 호출하는 패키지 찾아 수정하여 모니터링 중 입니다.

감사합니다.

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