Oracle Real-time SQL Monitoring (오라클 실시간 SQL 모니터링)
Oracle Real-time SQL Monitoring은 SQL 쿼리 실행 중 성능을 **실시간으로 모니터링**하고 분석하는 강력한 도구입니다. 복잡하고 시간이 오래 걸리는 쿼리의 실행 계획, I/O, CPU, 대기 시간 등 상세한 성능 지표를 즉각적으로 보여주어 성능 문제를 신속하게 파악하고 해결하는 데 도움을 줍니다.
- 주요 기능 및 특징
* **실시간 모니터링**: 쿼리가 실행되는 동안 진행 상태와 각 단계의 성능 지표를 실시간으로 확인할 수 있습니다. * **세부 실행 계획**: 전체 쿼리 실행 계획뿐만 아니라, 각 오퍼레이션(테이블 스캔, 조인 등)이 얼마나 많은 행을 처리하고 어떤 자원을 사용했는지 정확한 데이터를 제공합니다. * **자원 사용량 분석**: CPU, I/O, 메모리 사용량, 대기 이벤트(wait events)를 실시간으로 추적하여 병목 현상의 원인을 쉽게 찾을 수 있습니다. * **자동 활성화**: 기본적으로 실행 시간이 길거나 병렬로 실행되는 SQL 쿼리는 자동으로 모니터링 대상이 됩니다. 이는 `_sqlmon_threshold` 파라미터로 제어할 수 있습니다.
- 사용 방법
Real-time SQL Monitoring은 주로 AWR(Automatic Workload Repository) 리포트나 SQL Developer와 같은 GUI 도구를 통해 사용합니다.
- **1. SQL Developer/SQL Developer Web 사용**
가장 직관적인 방법입니다.
1. SQL Developer에 접속하여 원하는 SQL 쿼리를 실행합니다. 2. 쿼리가 실행되는 동안 'SQL Monitor' 탭에서 실시간으로 성능을 모니터링할 수 있습니다. 3. 쿼리가 완료되면 'Summary', 'Plan Statistics', 'Activity' 등 다양한 탭을 통해 상세 분석 리포트를 확인할 수 있습니다.
- **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`을 사용하면 가장 상세한 정보를 얻을 수 있습니다.
- **3. SQL 힌트 사용**
특정 쿼리를 강제로 모니터링 대상에 포함시키려면 `MONITOR` 힌트를 사용합니다.
```sql SELECT /*+ MONITOR */ * FROM employees WHERE hire_date < SYSDATE; ```
- 참고**: Real-time SQL Monitoring은 Oracle Enterprise Edition에서만 제공되는 기능이며, Diagnostics Pack 라이선스가 필요합니다.