Oracle SQL Monitor는 오라클 데이터베이스의 성능 모니터링 도구이다. 실시간으로 SQL 실행 계획 및 성능 통계 정보를 제공하여 SQL 실행 과정을 추적하고 분석하는데 도움을 준다. 특히, 다른 성능 모니터링 도구에 비해 병렬 쿼리의 실행 계획과 성능 통계를 확인하는데 유용하다.
SQL Monitor 수집 대상
Oracle SQL Monitor 성능 정보는 아래와 같은 경우에 수집된다.
- 힌트 사용 /*+ MONITOR */
- 5초 이상 실행 ( _sqlmon_threshold 히든 파라미터로 조정 가능)
- 병렬 쿼리
SQL Monitor 수집 목록
SQL Monitor는 실시간 수집 결과를 동적 성능 뷰 v$sql_monitor, v$sql_plan_monitor에 저장한다. 과거 정보는 주기적으로 DBA_HIST_REPORTS 에 보관한다. 아래는 현재 SQL Monitor 수집 목록을 조회하는 쿼리이다.
select sql_id, sql_exec_id , min(case when px_qcsid is null then inst_id end) as inst_id , min(case when px_qcsid is null then sid end) as sid , min(case when px_qcsid is null then session_serial# end) as serial# , min(case when px_qcsid is null then status end) as qc_status , listagg(distinct status, ',') as px_status , min(sql_exec_start) as sql_exec_start , round(max(elapsed_time)/1000000) as elapsed , min(module) as module , min(username) as username , max(px_maxdop) as dop , min(sql_text) as sql_text from gv$sql_monitor a group by sql_id, sql_exec_id order by sql_exec_start desc;
SQL Monitor 보고서
SQL Monitor 보고서는 아래 명령어를 통해 조회할 수 있다.
select dbms_sqltune.report_sql_monitor(sql_id=>'', sql_exec_id=> '') from dual