본문 바로가기
Oracle

[ORACLE] ORA-00021 : session attached to some other process

by Dev. Orion 2025. 7. 19.
728x90

ORACLE 데이터베이스에서 발생하는 ORA-00021: session attached to some other process 오류는 세션과 프로세스 간의 비정상적인 연결 상태에서 발생하는 문제입니다. 특히 백업, 리커버리, 포렌식, 세션 트레이스 작업 중 자주 발생하며, 시스템의 안정성과 직결되는 이슈이기 때문에 정확한 원인 파악과 해결이 요구됩니다.

1. ORA-00021 오류란?

ORA-00021은 Oracle이 내부적으로 세션과 프로세스를 연결할 때, 이미 다른 프로세스에 연결된 세션을 재사용하려고 할 때 발생하는 오류입니다. 이 오류는 일반적으로 다음과 같은 메시지를 포함합니다:

ORA-00021: session attached to some other process

즉, 하나의 세션 핸들이 동시에 두 개 이상의 프로세스에 연결되었거나, 세션이 잘못된 상태에서 재사용되고 있는 경우에 해당합니다.

2. 발생 가능한 시나리오

  • RMAN 또는 사용자 백업 도중 세션이 중간에 강제 종료됨
  • 오라클 프로세스 크래시 후 세션 핸들이 살아있을 때
  • 멀티 스레드 환경에서 세션 핸들 공유 시 충돌 발생
  • 비정상적인 DBMS_DEBUG 사용 또는 DB 툴 연동 중 충돌

3. 진단 방법

다음의 SQL 쿼리를 통해 세션과 프로세스의 상태를 파악할 수 있습니다:

-- 현재 활성 세션 조회
SELECT sid, serial#, status, username, program
FROM v$session
WHERE status = 'ACTIVE';

-- 연결된 프로세스 확인
SELECT s.sid, p.spid, s.program
FROM v$session s, v$process p
WHERE s.paddr = p.addr;
  

세션의 상태와 연결 프로세스를 비교하여 비정상 연결 여부를 확인할 수 있습니다.

4. 실무 해결 방법

조치 내용
세션 강제 종료 ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
비정상 세션을 명시적으로 종료하여 프로세스를 해제
서버 프로세스 재시작 문제가 반복될 경우 Oracle 인스턴스 자체를 재시작
프로세스와 세션 매핑 정보 초기화
멀티스레드 애플리케이션 점검 동일 세션 핸들의 중복 사용 여부 확인
Connection Pool의 반환 누락 확인
OS 프로세스 확인 ps -ef | grep ora_로 오라클 백그라운드 프로세스 상태 체크
Zombie Process 발생 여부 점검

5. 예방 전략

  • Connection Pool에서 세션 반환 시점 명확하게 처리
  • 오라클 종료 시 세션 연결을 깔끔하게 닫도록 설계
  • 백업 도구 사용 시 백그라운드 세션 종료 여부 검증
  • DBMS_DEBUG 또는 외부 디버깅 툴 사용 시 세션 이중 사용 금지

6. 유사 에러 비교

오류 코드 메시지 원인 대응 방안
ORA-00020 maximum number of processes exceeded 프로세스 수 초과 PROCESSES 파라미터 증가
ORA-00018 maximum number of sessions exceeded 세션 수 초과 SESSIONS 파라미터 조정
ORA-00021 session attached to some other process 세션 핸들 중복 연결 세션 종료 후 재시도

7. 실무 노하우

이 오류는 고질적으로 반복될 수 있으므로, DBA는 주기적으로 v$sessionv$process를 감시하는 자동화 스크립트를 작성해두는 것이 좋습니다. 또한 애플리케이션 레벨에서 세션 관리 정책을 명확히 정의하는 것이 시스템 안정성에 매우 중요합니다.

8. 결론

ORA-00021은 단순한 코드 오류가 아니라 시스템 구조와 애플리케이션 설계의 허점을 드러내는 경고 신호입니다. 세션 관리에 있어 작은 부주의가 전체 데이터베이스 운영에 영향을 줄 수 있기 때문에, 이 오류를 단순 해결이 아닌 구조적 개선의 기회로 삼는 것이 중요합니다. 현업에서는 세션과 프로세스의 연결 관계를 정기적으로 점검하고, 장애 발생 전 선제적으로 대응할 수 있는 체계를 구축하는 것이 핵심입니다.


출처:

  • Oracle Database Error Messages Guide 21c - Oracle Corporation
  • https://docs.oracle.com/en/database/oracle/oracle-database/21/errmg
  • 실제 운영 환경에서의 DBA 실무 사례 및 운영 경험
728x90