본문 바로가기
Database/Oracle

[ORACLE] SESSION() 상세 분석으로 시스템 성능 향상 하기

by Papa Martino V 2025. 6. 14.
728x90

오라클 SESSION() 상세 분석으로 시스템 성능 향상하기
[Oracle] SESSION

 

오라클 데이터베이스를 운용하거나 튜닝하는 데 있어 SESSION에 대한 이해는 필수입니다. 특히 세션은 데이터베이스 사용자와 인스턴스 사이의 연결을 의미하며, 시스템 자원 활용과 밀접하게 관련되어 있어 실시간 모니터링 및 관리가 매우 중요합니다. 이 글에서는 Oracle Session의 기본 개념부터 실제 운영 환경에서의 활용, 그리고 성능 향상을 위한 튜닝 기법까지 심층적으로 다뤄보겠습니다.

1. ORACLE SESSION이란?

Oracle Session은 사용자 또는 애플리케이션이 Oracle 데이터베이스 인스턴스에 접속할 때 생성되는 하나의 논리적인 연결입니다. 하나의 세션은 하나의 사용자 프로세스와 서버 프로세스 간의 통신을 담당하며, 로그인 시 자동으로 생성되어 로그아웃 또는 연결 종료 시 소멸됩니다.

세션의 구성 요소

  • SID(Session Identifier): 각 세션을 고유하게 식별하는 값
  • SERIAL#: 동일한 SID가 재사용될 경우를 대비한 시퀀스 번호
  • USERNAME: 세션을 생성한 사용자 이름
  • STATUS: ACTIVE, INACTIVE 등의 상태 표시

2. ORACLE SESSION의 종류

Oracle에서 생성되는 세션은 그 목적에 따라 몇 가지로 분류할 수 있습니다.

세션 종류 설명
사용자 세션(User Session) 일반적인 사용자 또는 애플리케이션이 생성하는 세션
백그라운드 세션(Background Session) DBWR, LGWR 등 오라클 내부 프로세스가 사용하는 세션
DBA 세션 DBA 권한을 가진 사용자가 생성한 세션

3. ORACLE SESSION 조회 방법

세션 정보를 조회하려면 V$SESSION 또는 V$PROCESS 뷰를 활용합니다. 다음은 자주 사용하는 SQL 예시입니다.

SELECT SID, SERIAL#, USERNAME, STATUS, OSUSER, MACHINE, PROGRAM
FROM V$SESSION
WHERE USERNAME IS NOT NULL;

4. 세션 관련 주요 뷰

  • V$SESSION – 세션 기본 정보 제공
  • V$PROCESS – 세션과 매핑된 운영체제 프로세스 정보
  • V$SESSTAT – 세션별 통계 정보
  • V$SESSION_WAIT – 세션이 현재 대기 중인 이벤트 정보

5. 세션 관리와 튜닝 전략

1) 비정상 세션 종료

세션이 비정상적으로 종료되지 않고 남아 있는 경우, 리소스를 지속적으로 점유할 수 있습니다. 이때 다음 SQL을 통해 강제로 종료할 수 있습니다.

ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;

2) 세션 리소스 제한

사용자가 너무 많은 리소스를 사용하는 것을 방지하기 위해 PROFILE을 통해 제한을 설정할 수 있습니다.

CREATE PROFILE limited_user_profile LIMIT
  SESSIONS_PER_USER 2
  CONNECT_TIME 60
  CPU_PER_SESSION 10000;

3) 세션 수 모니터링

세션 수가 급격히 증가하면 DB가 과부하될 수 있습니다. 다음 쿼리로 현재 활성 세션 수를 모니터링할 수 있습니다.

SELECT COUNT(*) FROM V$SESSION WHERE STATUS = 'ACTIVE';

6. 세션 튜닝 팁

  • 불필요한 커넥션을 최소화하고 커넥션 풀링을 활용할 것
  • 세션 대기 이벤트 분석을 통한 병목 파악
  • 긴 시간 동안 실행되는 쿼리 식별 및 인덱스 최적화
  • 세션 통계 기반 리소스 사용량 분석

7. 세션 문제 사례와 해결 전략

문제 원인 해결 방법
세션 폭주로 인한 DB 다운 무한 루프, 앱 버그, 커넥션 누수 APP 단 커넥션 풀 적용, 세션 제한 프로파일 설정
세션 Lock 발생 DML 작업 중 트랜잭션 미종료 Lock 조회 후 필요한 경우 세션 강제 종료
INACTIVE 세션 다수 존재 앱 비정상 종료 또는 미종료 트랜잭션 timeout 설정 또는 주기적인 세션 클리너 구현

8. 결론

Oracle Session은 단순한 연결 이상의 의미를 가지며, 성능 및 안정성 유지에 핵심적인 요소입니다. DBA 및 개발자는 세션의 구조와 흐름을 이해하고, 문제 발생 시 적절한 대처 방법을 익혀야 합니다. 이를 통해 시스템 전반의 효율성과 안정성을 확보할 수 있습니다.

출처

  • Oracle® Database Administrator's Guide 19c, Oracle Corporation
  • Expert Oracle Database Architecture, Thomas Kyte
  • Oracle 공식 문서: https://docs.oracle.com/en/
  • 실무 DBA 경험 및 튜닝 사례 정리

 

728x90