
오라클 데이터베이스를 운용하거나 튜닝하는 데 있어 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 경험 및 튜닝 사례 정리
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_TABLES()로 테이블 정보 조회하는 방법 정리 (0) | 2025.06.14 |
|---|---|
| [ORACLE] EXPLAIN PLAN()으로 SQL 실행 계획 정확히 읽는 법 (0) | 2025.06.14 |
| [ORACLE] REFERENCES() 완벽 가이드 : 외래키와 참조 무결성의 모든 것 (0) | 2025.06.13 |
| [ORACLE] CALL() 작동 원리와 실무 활용 전략 총 정리 (0) | 2025.06.13 |
| [ORACLE] EXECUTE() 문법과 실무 활용 법 한눈에 보기 (0) | 2025.06.12 |