소개
오라클 데이터베이스의 실시간 모니터링은 성능 문제를 신속하게 진단하고 해결하는 데 필수적입니다. 본 가이드에서는 오라클이 제공하는 다양한 도구를 활용하여 실시간 성능 데이터를 수집하고 분석하는 방법을 상세하게 설명합니다.
모니터링 활성화
실시간 SQL 모니터링 기능은 STATISTICS_LEVEL
초기화 파라미터를 TYPICAL
(기본값) 또는 ALL
로 설정하면 자동으로 활성화됩니다.
SQL> ALTER SYSTEM SET STATISTICS_LEVEL = TYPICAL;System altered.
SQL 모니터링은 오랜 시간 실행되는 쿼리에 대한 성능 메트릭을 제공합니다.
SQL 모니터를 활용한 성능 분석
SQL 모니터는 개별 SQL 문의 실행 성능을 실시간으로 추적합니다. 다음을 포함한 다양한 성능 지표를 제공합니다.
- 수행 시간
- CPU 시간
- I/O 시간
- 읽기 작업 수
- 쓰기 작업 수
SQL Developer 또는 클라우드 컨트롤을 통해 모니터링된 SQL 실행 페이지에 접근하여 SQL 모니터 정보를 확인할 수 있습니다.
클라우드 컨트롤을 이용한 접근
- 클라우드 컨트롤에 로그인합니다.
- Performance 메뉴에서 SQL Monitoring을 선택합니다.
- 모니터링된 SQL 실행 페이지가 나타납니다.
SQL Developer를 이용한 접근
SQL Developer에서 Real Time SQL 모니터링 기능을 사용하려면 데이터베이스 연결을 설정하고 SQL 히스토리 뷰를 활용할 수 있습니다.
DBMS_SQL_MONITOR 패키지 활용
DBMS_SQL_MONITOR
패키지는 데이터베이스 작업을 시작하고 종료하며, 데이터베이스 작업에 대한 보고서를 생성하는 데 사용됩니다.
주요 서브프로그램
BEGIN_OPERATION
: 데이터베이스 작업 세션을 시작합니다.END_OPERATION
: 데이터베이스 작업을 종료합니다.REPORT_SQL_MONITOR
: 데이터베이스 작업에 대한 자세한 보고서를 생성합니다.REPORT_SQL_MONITOR_XML
: 데이터베이스 작업 보고서를 XML 형식으로 생성합니다.
다음은 DBMS_SQL_MONITOR
패키지를 사용하여 데이터베이스 작업을 모니터링하는 예제입니다.
SQL> VARIABLE job_id NUMBER;SQL> EXECUTE :job_id := DBMS_SQL_MONITOR.BEGIN_OPERATION ( -> operation_name => 'my_etl_job', -> forced_tracking => TRUE);SQL> SELECT count(*) FROM sh.sales; COUNT(*)---------- 513843SQL> SELECT prod_id, cust_id, amount_sold, sales_rep_id -> FROM sales -> WHERE amount_sold > 20;80611 rows selected.SQL> EXECUTE DBMS_SQL_MONITOR.END_OPERATION (op_name => 'my_etl_job', op_id => :job_id);
실시간 SQL 모니터링 딕셔너리 테이블 및 뷰 활용
실시간 SQL 모니터링 데이터는 다양한 딕셔너리 뷰를 통해 접근할 수 있습니다. 이러한 뷰는 AWR 프레임워크를 통해 제공되며, CDB 및 PDB 수준의 정보를 제공합니다.
주요 뷰
DBA_RSRC_REPORTS
: 메타데이터를 포함한 XML 보고서를 표시합니다.DBA_RSRC_REPORTS_DETAILS
: 각 보고서에 대한 메타데이터를 자세히 보여줍니다.V$SQL_MONITOR
: 실시간 데이터베이스 작업과 관련된 정보를 요약합니다.V$SQL_PLAN_MONITOR
: 모니터링된 SQL 문의 각 단계에 대한 실행 통계를 제공합니다.V$SQL_SESSION
: 세션별 통계를 제공합니다.V$SQL
: 공유 SQL 영역의 정보를 제공합니다.
예제
다음은 V$SQL_MONITOR
뷰를 사용하여 모니터링된 SQL 문의 CPU 시간, I/O 시간 등을 확인하는 예제입니다.
SELECT sql_id, sql_text, cpu_time, iO_timeFROM v$sql_monitorWHERE sql_text LIKE '%sh.sales%';
모니터 및 NO_MONITOR 힌트
MONITOR
힌트를 사용하여 장시간 실행되는 쿼리에 대해 실시간 SQL 모니터링을 강제적으로 활성화할 수 있습니다. 반대로 NO_MONITOR
힌트를 사용하여 특정 쿼리에 대한 실시간 SQL 모니터링을 비활성화할 수 있습니다.
SELECT /*+ MONITOR */ prod_id, prod_name, cust_id, avg(amount_sold)FROM salesGROUP BY prod_id, prod_name, cust_id;SELECT /*+ NO_MONITOR */ prod_id, prod_name, cust_id, avg(amount_sold)FROM salesGROUP BY prod_id, prod_name, cust_id;
결론
오라클 데이터베이스의 실시간 성능 모니터링은 효과적인 성능 관리의 핵심입니다. 제공된 도구와 뷰를 활용하여 성능 문제를 빠르게 진단하고 해결할 수 있습니다.