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$session
과 v$process
를 감시하는 자동화 스크립트를 작성해두는 것이 좋습니다. 또한 애플리케이션 레벨에서 세션 관리 정책을 명확히 정의하는 것이 시스템 안정성에 매우 중요합니다.
8. 결론
ORA-00021은 단순한 코드 오류가 아니라 시스템 구조와 애플리케이션 설계의 허점을 드러내는 경고 신호입니다. 세션 관리에 있어 작은 부주의가 전체 데이터베이스 운영에 영향을 줄 수 있기 때문에, 이 오류를 단순 해결이 아닌 구조적 개선의 기회로 삼는 것이 중요합니다. 현업에서는 세션과 프로세스의 연결 관계를 정기적으로 점검하고, 장애 발생 전 선제적으로 대응할 수 있는 체계를 구축하는 것이 핵심입니다.
출처:
- Oracle Database Error Messages Guide 21c - Oracle Corporation
- https://docs.oracle.com/en/database/oracle/oracle-database/21/errmg
- 실제 운영 환경에서의 DBA 실무 사례 및 운영 경험
'Oracle' 카테고리의 다른 글
[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 |