Platform : DBeaver
문제 : 쿼리를 날렸으나 테이블 조회 시 반영이 안되있는 현상을 확인
해결책 : 내가 날린 쿼리가 정상적으로 입력이 되었는지 확인 필요
→ 쿼리가 정상적으로 입력됨이 확인되면 commit;
입력
참고사이트
Database Reference
-- 본인이 날린 쿼리 조회
SELECT B.*
FROM V$SESSION A, V$SQL B
WHERE A.MODULE_HASH = B.MODULE_HASH AND A.AUDSID = SYS_CONTEXT('USERENV', 'SESSIONID')
ORDER BY FIRST_LOAD_TIME DESC
;
V$SQL
뷰와 V$SQLAREA
뷰의 차이V$SQLAREA
를 사용하면 됩니다-- 모든 쿼리 히스토리 조회 V$SQL
SELECT *
FROM V$SQL
ORDER BY LAST_LOAD_TIME DESC
;
-- 모든 쿼리 히스토리 조회 V$SQLAREA
SELECT *
FROM V$SQLAREA
ORDER BY LAST_LOAD_TIME DESC
;
V$SQL : 데이터베이스에 최근에 실행된 SQL 명령어들에 대한 정보를 제공
각 SQL 문의 텍스트, 실행 횟수, 최적화된 실행 계획, 실행된 시간 등 다양한 성능 지표를 포함
-V$SQL
은 매우 상세한 정보를 제공하며, 하나의 SQL 문에 대해 여러 버전(예: 다른 사용자에 의해 실행되거나, 다른 최적화로 인해)의 정보를 가질 수 있습니다.
-데이터베이스에서 실행된 모든 SQL 문에 대한 보다 상세한 정보를 제공합니다.
-동일한 SQL 문이라도 다양한 실행 마다 다른 정보를 가질 수 있기 때문에 동일한 SQL 문이 여러 번 실행되었을 경우, 각 실행에 대한 개별적인 정보를 볼 수 있습니다.
-이를 통해 개별 실행에 대한 성능 문제를 파악할 수 있습니다.
V$SQLAREA : V$SQL
의 정보를 요약하여 제공
-V$SQLAREA
는 일반적으로 메모리 사용을 더 적게 하며, SQL 문의 전반적인 성능을 파악하고자 할 때 유용합니다.
-데이터베이스에서 실행된 모든 SQL 문에 대한 전반적인 성능 통계를 제공합니다.
-동일한 SQL 문의 모든 실행에 대한 정보를 하나로 집계합니다.
-이는 일반적인 성능 분석에 적합하며, 동일한 SQL 문에 대한 전체적인 효과를 파악하는 데 도움이 됩니다.
-- 본인이 날린 쿼리 조회
SELECT B.*
FROM V$SESSION A, V$SQLAREA B
WHERE A.MODULE_HASH = B.MODULE_HASH AND A.AUDSID = SYS_CONTEXT('USERENV', 'SESSIONID')
-- 이 구문은 V$SESSION의 세션과 V$SQL의 SQL 명령이 같은 모듈에서 발생했는지를 확인
-- MODULE_HASH : SQL 명령이나 세션을 구별하는 데 사용되는 내부적인 해시 값
-- AUDSID : 현재 사용자의 세션 ID(AUDSID)
-- SYS_CONTEXT('USERENV', 'SESSIONID'): 현재 사용자의 세션 ID를 반환
-- => 따라서 이 조건은 쿼리를 실행하는 사용자의 세션에 해당하는 데이터만을 필터링
ORDER BY FIRST_LOAD_TIME DESC
-- FIRST_LOAD_TIME : 'SQL 명령이 처음으로 데이터베이스에 로드된 시간'
;
SYS_CONTEXT 함수 :
세션 정보를 조회하는 함수
Oracle 데이터베이스에서 제공하는 내장 함수로, 현재 세션의 정보나 환경 설정에 대한 세부 정보를 반환
USERENV :
USERENV
를 통해 접근할 수 있는 정보 : 사용자 이름, 세션 ID, 현재 언어, 클라이언트의 IP 주소 등
→ 각 정보는 SYS_CONTEXT
함수의 두 번째 인자로 지정하여 조회할 수 있습니다.
SESSIONID :
SESSIONID
를 SYS_CONTEXT
함수의 두 번째 인자로 사용하면, 현재 데이터베이스 세션의 고유 식별자(세션 ID)를 반환합니다. 이는 현재 연결된 사용자 세션을 식별하는 데 사용됩니다.
→ SESSIONID는 데이터베이스에서 사용자의 현재 세션을 구별하는 데 중요하며, 보안, 감사, 사용자 활동 추적 등 다양한 목적으로 사용됩니다.
V$SESSION
은 현재 데이터베이스 세션에 대한 정보를 포함
(추후 정리)