Oracle의 SQL_ID와 비슷한 개념

By | 2025-07-08

Oracle의 SQL_ID란?

  • Oracle에서는 SQL_IDShared Pool에 저장된 SQL 문장의 고유 ID로, V$SQL, V$SQLAREA 등에서 사용됩니다.
  • SQL ID는 쿼리의 해시를 기반으로 한 고유한 13자 식별자입니다.

✅ SQL Server에서 유사한 개념

SQL Server 항목설명
sql_handleSQL 텍스트를 식별하는 고유한 핸들
query_hash / query_plan_hash쿼리의 텍스트나 실행 계획의 해시값 (유사 SQL 그룹 파악)
plan_handle실행 계획을 식별하는 고유 핸들

✅ 예제: sql_handle 사용하여 SQL 문장 추적

sql복사편집SELECT 
    qs.sql_handle,
    qs.plan_handle,
    st.text AS sql_text,
    qs.execution_count,
    qs.total_worker_time,
    qs.total_elapsed_time,
    qs.query_hash,
    qs.query_plan_hash
FROM 
    sys.dm_exec_query_stats qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY 
    qs.total_worker_time DESC;

✅ 주요 식별자 설명

항목설명
sql_handleSQL 문장 자체의 고유 ID (바이너리 값)
plan_handle실행 계획의 고유 ID
query_hash쿼리 텍스트 기반 해시 (유사 쿼리 그룹 분석에 적합)
query_plan_hash실행 계획의 구조 기반 해시 (유사 실행 계획 식별에 적합)

✅ SQL ID와 가장 유사한 것?

SQL Server에서는 sql_handle이 Oracle의 SQL_ID와 가장 유사한 역할을 합니다.

그러나 Oracle은 SQL ID가 사람이 보기 쉬운 문자열인 반면, SQL Server의 sql_handle바이너리 값입니다.

원한다면 아래처럼 문자열로 변환할 수도 있습니다:

sql복사편집SELECT 
    CONVERT(VARCHAR(100), qs.sql_handle, 1) AS sql_handle_str,
    st.text
FROM 
    sys.dm_exec_query_stats qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) st;

✅ 참고: 특정 SQL 문으로 추적

만약 어떤 SQL 문을 기준으로 추적하고 싶다면, query_hash로 그룹핑하거나, sql_handle로 식별해서 추적 가능합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다