ORACLE 데이터베이스에서 발생하는 ORA-00021: session attached to some other process 오류는 세션과 프로세스 간의 비정상적인 연결 상태에서 발생하는 문제입니다. 특히 백업, 리커버리, 포렌식, 세션 트레이스 작업 중 자주 발생하며, 시스템의 안정성과 직결되는 이슈이기 때문에 정확한 원인 파악과 해결이 요구됩니다.
ORA-00021은 Oracle이 내부적으로 세션과 프로세스를 연결할 때, 이미 다른 프로세스에 연결된 세션을 재사용하려고 할 때 발생하는 오류입니다. 이 오류는 일반적으로 다음과 같은 메시지를 포함합니다:
ORA-00021: session attached to some other process
즉, 하나의 세션 핸들이 동시에 두 개 이상의 프로세스에 연결되었거나, 세션이 잘못된 상태에서 재사용되고 있는 경우에 해당합니다.
다음의 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;
세션의 상태와 연결 프로세스를 비교하여 비정상 연결 여부를 확인할 수 있습니다.
| 조치 | 내용 |
|---|---|
| 세션 강제 종료 | ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;비정상 세션을 명시적으로 종료하여 프로세스를 해제 |
| 서버 프로세스 재시작 | 문제가 반복될 경우 Oracle 인스턴스 자체를 재시작 프로세스와 세션 매핑 정보 초기화 |
| 멀티스레드 애플리케이션 점검 | 동일 세션 핸들의 중복 사용 여부 확인 Connection Pool의 반환 누락 확인 |
| OS 프로세스 확인 | ps -ef | grep ora_로 오라클 백그라운드 프로세스 상태 체크Zombie Process 발생 여부 점검 |
| 오류 코드 | 메시지 | 원인 | 대응 방안 |
|---|---|---|---|
| ORA-00020 | maximum number of processes exceeded | 프로세스 수 초과 | PROCESSES 파라미터 증가 |
| ORA-00018 | maximum number of sessions exceeded | 세션 수 초과 | SESSIONS 파라미터 조정 |
| ORA-00021 | session attached to some other process | 세션 핸들 중복 연결 | 세션 종료 후 재시도 |
이 오류는 고질적으로 반복될 수 있으므로, DBA는 주기적으로 v$session과 v$process를 감시하는 자동화 스크립트를 작성해두는 것이 좋습니다. 또한 애플리케이션 레벨에서 세션 관리 정책을 명확히 정의하는 것이 시스템 안정성에 매우 중요합니다.
ORA-00021은 단순한 코드 오류가 아니라 시스템 구조와 애플리케이션 설계의 허점을 드러내는 경고 신호입니다. 세션 관리에 있어 작은 부주의가 전체 데이터베이스 운영에 영향을 줄 수 있기 때문에, 이 오류를 단순 해결이 아닌 구조적 개선의 기회로 삼는 것이 중요합니다. 현업에서는 세션과 프로세스의 연결 관계를 정기적으로 점검하고, 장애 발생 전 선제적으로 대응할 수 있는 체계를 구축하는 것이 핵심입니다.
출처:
| [ORACLE] ORA-00023 : session references process private memory; cannot detach session (0) | 2025.07.19 |
|---|---|
| [ORACLE] ORA-00022: invalid session ID; access denied (0) | 2025.07.19 |
| [ORACLE] ORA-00020: maximum number of processes exceeded (0) | 2025.07.19 |
| [ORACLE] ORA-00019: 리소스 제한으로 인해 사용자 로그인 거부 (0) | 2025.07.19 |
| [ORACLE] ORA-00018 : 최대 허용된 세션 수 초과 (0) | 2025.07.19 |