메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Oracle (토론 | 기여)님의 2025년 8월 25일 (월) 13:13 판 (새 문서: == Oracle Real-time SQL Monitoring (오라클 실시간 SQL 모니터링) == * Oracle Real-time SQL Monitoring은 SQL 쿼리 실행 중 성능을 **실시간으로 모니터링**하고 분석하는 강력한 도구입니다. 복잡하고 시간이 오래 걸리는 쿼리의 실행 계획, I/O, CPU, 대기 시간 등 상세한 성능 지표를 즉각적으로 보여주어 성능 문제를 신속하게 파악하고 해결하는 데 도움을 줍니다. ----- ### 주요 기능...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Oracle Real-time SQL Monitoring (오라클 실시간 SQL 모니터링)

Oracle Real-time SQL Monitoring은 SQL 쿼리 실행 중 성능을 **실시간으로 모니터링**하고 분석하는 강력한 도구입니다. 복잡하고 시간이 오래 걸리는 쿼리의 실행 계획, I/O, CPU, 대기 시간 등 상세한 성능 지표를 즉각적으로 보여주어 성능 문제를 신속하게 파악하고 해결하는 데 도움을 줍니다.


      1. 주요 기능 및 특징
 * **실시간 모니터링**: 쿼리가 실행되는 동안 진행 상태와 각 단계의 성능 지표를 실시간으로 확인할 수 있습니다.
 * **세부 실행 계획**: 전체 쿼리 실행 계획뿐만 아니라, 각 오퍼레이션(테이블 스캔, 조인 등)이 얼마나 많은 행을 처리하고 어떤 자원을 사용했는지 정확한 데이터를 제공합니다.
 * **자원 사용량 분석**: CPU, I/O, 메모리 사용량, 대기 이벤트(wait events)를 실시간으로 추적하여 병목 현상의 원인을 쉽게 찾을 수 있습니다.
 * **자동 활성화**: 기본적으로 실행 시간이 길거나 병렬로 실행되는 SQL 쿼리는 자동으로 모니터링 대상이 됩니다. 이는 `_sqlmon_threshold` 파라미터로 제어할 수 있습니다.

      1. 사용 방법

Real-time SQL Monitoring은 주로 AWR(Automatic Workload Repository) 리포트나 SQL Developer와 같은 GUI 도구를 통해 사용합니다.

        1. **1. SQL Developer/SQL Developer Web 사용**

가장 직관적인 방법입니다.

1. SQL Developer에 접속하여 원하는 SQL 쿼리를 실행합니다. 2. 쿼리가 실행되는 동안 'SQL Monitor' 탭에서 실시간으로 성능을 모니터링할 수 있습니다. 3. 쿼리가 완료되면 'Summary', 'Plan Statistics', 'Activity' 등 다양한 탭을 통해 상세 분석 리포트를 확인할 수 있습니다.

        1. **2. SQLplus 또는 SQL Developer Web에서 수동으로 리포트 생성**

SQL 쿼리 ID(SQL\_ID)를 사용하여 SQL Monitoring 리포트를 수동으로 생성할 수 있습니다. 이는 자동 모니터링 대상이 아닌 짧은 쿼리나 특정 쿼리의 성능을 분석할 때 유용합니다.

1. **모니터링 대상 SQL\_ID 찾기**

   ```sql
   SELECT SQL_ID FROM V$SQL WHERE sql_text LIKE '%YOUR_QUERY_TEXT%';
   ```

2. **SQL Monitoring 리포트 생성**

   `DBMS_SQLTUNE.REPORT_SQL_MONITOR` 함수를 사용합니다.
   ```sql
   -- HTML 형식의 리포트 생성
   SET LONG 2000000
   SET PAGESIZE 1000
   SET LINESIZE 250
   SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id => 'YOUR_SQL_ID') FROM DUAL;
   -- TXT 형식의 리포트 생성
   SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
       sql_id => 'YOUR_SQL_ID',
       type => 'TEXT',
       report_level => 'ALL') FROM DUAL;
   ```
     * **`sql_id`**: 모니터링할 쿼리의 고유 ID입니다.
     * **`type`**: 리포트의 형식을 지정합니다 (`HTML`, `TEXT`, `XML`). `HTML`이 가장 시각적으로 보기 좋습니다.
     * **`report_level`**: 리포트의 상세 수준을 지정합니다 (`BASIC`, `TYPICAL`, `ALL`). `ALL`을 사용하면 가장 상세한 정보를 얻을 수 있습니다.
        1. **3. SQL 힌트 사용**

특정 쿼리를 강제로 모니터링 대상에 포함시키려면 `MONITOR` 힌트를 사용합니다.

```sql SELECT /*+ MONITOR */ * FROM employees WHERE hire_date < SYSDATE; ```

    • 참고**: Real-time SQL Monitoring은 Oracle Enterprise Edition에서만 제공되는 기능이며, Diagnostics Pack 라이선스가 필요합니다.