2026년 06월 28일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-01014 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-01014 ORACLE shutdown in progress 는?
ORA-01014 에러는 Oracle 데이터베이스가 종료(Shutdown) 진행 중인 상태에서 새로운 연결 시도나 SQL 작업을 수행하려 할 때 발생하는 에러입니다. 데이터베이스 인스턴스가 SHUTDOWN 명령을 수신하고 종료 프로세스를 진행하는 동안, Oracle은 신규 세션 연결 및 트랜잭션을 더 이상 허용하지 않으며 이 에러를 반환합니다. 운영 환경에서는 정기 점검, 패치 적용, 비정상 종료 등 다양한 상황에서 발생할 수 있으므로 DBA는 이 에러의 원인과 대응 방법을 명확히 숙지해야 합니다.
주요 발생 원인
- 의도적인 데이터베이스 Shutdown 명령 실행
DBA 또는 시스템 관리자가 SHUTDOWN IMMEDIATE, SHUTDOWN NORMAL, SHUTDOWN ABORT 등의 명령을 실행하여 데이터베이스를 종료하는 과정에서 발생하는 가장 일반적인 원인입니다. 종료 명령이 실행된 직후부터 인스턴스가 완전히 내려가기 전까지의 짧은 시간 동안 연결을 시도하는 애플리케이션이나 사용자 세션에서 이 에러가 나타납니다. 특히 SHUTDOWN IMMEDIATE는 진행 중인 트랜잭션을 롤백하고 세션을 강제 종료하기 때문에, 배치 작업이나 장시간 트랜잭션 중에 이 명령이 실행되면 영향을 받는 세션이 많아집니다.
- Oracle 자동 재시작 또는 스케줄된 유지보수 작업
Oracle Enterprise Manager, DBMS_SCHEDULER, 또는 외부 스케줄러(cron 등)에 의해 예약된 데이터베이스 재시작 작업이 실행되는 동안 발생할 수 있습니다. RAC(Real Application Clusters) 환경에서는 특정 노드의 인스턴스가 재시작되는 타이밍에 해당 노드로 연결을 시도하는 클라이언트에게 이 에러가 전달됩니다. 자동화된 패치 적용(AutoPatch) 또는 업그레이드 스크립트 수행 중에도 이 에러가 빈번히 발생하므로 유지보수 윈도우 설정이 매우 중요합니다.
- 비정상적인 인스턴스 크래시 또는 OS 레벨 강제 종료
운영체제 레벨에서의 강제 프로세스 종료(kill -9), 서버 전원 차단, 또는 Oracle 백그라운드 프로세스(PMON, SMON 등)의 비정상 종료로 인해 인스턴스가 갑작스럽게 다운되는 상황에서도 ORA-01014가 발생할 수 있습니다. 이 경우에는 종료 과정이 정상적이지 않기 때문에 alert log에 추가적인 에러 메시지(ORA-00600, ORA-07445 등)가 함께 기록되는 경우가 많습니다. 인스턴스 복구(Instance Recovery)가 필요한 상황으로 이어질 수 있으므로 즉각적인 원인 분석이 필요합니다.
해결 방법
1. 현재 데이터베이스 상태 확인
가장 먼저 데이터베이스의 현재 상태를 확인해야 합니다.
-- 데이터베이스 상태 확인 (SQLPLUS에서 SYSDBA 권한으로 접속)
CONNECT / AS SYSDBA
-- 인스턴스 상태 조회
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS, ACTIVE_STATE
FROM V$INSTANCE;
-- 데이터베이스 오픈 여부 확인
SELECT NAME, OPEN_MODE, LOG_MODE
FROM V$DATABASE;
2. 데이터베이스 재기동 (정상 Shutdown 이후)
Shutdown이 완료된 후 데이터베이스를 다시 기동하려면 아래 절차를 따릅니다.
-- SYSDBA 권한으로 접속
CONNECT / AS SYSDBA
-- 인스턴스 기동 (Mount 단계까지)
STARTUP MOUNT;
-- 데이터베이스 오픈
ALTER DATABASE OPEN;
-- 또는 한 번에 기동
STARTUP;
-- 기동 후 상태 재확인
SELECT STATUS FROM V$INSTANCE;
3. Shutdown 진행 중인 세션 확인 및 대기
Shutdown이 진행 중이라면 현재 활성 세션을 확인하고 완료될 때까지 기다리거나 강제 종료할 수 있습니다.
-- 현재 활성 세션 확인
SELECT SID, SERIAL#, USERNAME, STATUS, MACHINE, PROGRAM
FROM V$SESSION
WHERE STATUS = 'ACTIVE'
AND USERNAME IS NOT NULL;
-- 특정 세션 강제 종료 (SHUTDOWN IMMEDIATE 전 사용)
ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
-- 예시
ALTER SYSTEM KILL SESSION '145,23891' IMMEDIATE;
-- 현재 진행 중인 트랜잭션 확인
SELECT s.SID, s.SERIAL#, s.USERNAME, t.STATUS, t.USED_UBLK
FROM V$SESSION s, V$TRANSACTION t
WHERE s.TADDR = t.ADDR;
4. Alert Log 확인으로 비정상 종료 원인 파악
-- Alert Log 위치 확인
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'background_dump_dest';
-- Oracle 11g 이상에서는 ADR(Automatic Diagnostic Repository) 사용
SELECT ADR_HOME FROM V$DIAG_INFO WHERE NAME = 'ADR Home';
-- ADRCI 명령으로 최근 에러 조회 (OS 쉘에서 실행)
-- adrci> show alert -tail 100
5. RAC 환경에서의 조치
-- RAC 환경에서 각 인스턴스 상태 확인
SELECT INST_ID, INSTANCE_NAME, STATUS, DATABASE_STATUS
FROM GV$INSTANCE
ORDER BY INST_ID;
-- 특정 인스턴스만 재기동 (srvctl 명령 사용 권장)
-- OS 쉘: srvctl start instance -d DBNAME -i INSTANCE_NAME
-- OS 쉘: srvctl status database -d DBNAME
예방 방법
- 유지보수 윈도우 및 사전 공지 프로세스 수립
데이터베이스 종료가 필요한 작업(패치, 업그레이드, 백업 등)은 반드시 업무 영향이 최소화되는 시간대(새벽, 주말 등)에 수행하고, 사전에 애플리케이션 팀 및 사용자에게 공지해야 합니다. 또한, 애플리케이션 측에서는 ORA-01014 에러 발생 시 일정 횟수만큼 재연결을 시도하는 Connection Retry 로직과 Connection Pool Validation 설정을 구현하여 장애 영향을 최소화해야 합니다. Oracle Connection Pool(UCP, HikariCP 등) 사용 시 testOnBorrow, validationQuery 옵션을 반드시 활성화하는 것을 권장합니다.
- Graceful Shutdown 절차 표준화 및 모니터링 자동화
SHUTDOWN ABORT 대신 가급적 SHUTDOWN IMMEDIATE 또는 SHUTDOWN TRANSACTIONAL을 사용하고, Shutdown 전에 반드시 활성 세션과 장기 실행 트랜잭션을 확인하는 사전 점검 스크립트를 표준화해야 합니다. Oracle Enterprise Manager(OEM) 또는 Grafana + Oracle Exporter 등의 모니터링 도구를 활용하여 인스턴스 상태 변화를 실시간으로 감지하고, 비정상 종료 발생 시 즉시 알림을 받을 수 있는 체계를 구축하면 장애 대응 시간을 크게 단축할 수 있습니다.
관련 에러
- ORA-01012: Not logged on — 세션이 데이터베이스에 연결되지 않은 상태에서 작업 시도 시 발생하며, ORA-01014 이후 연결이 끊긴 세션에서 추가 작업 시 나타날 수 있습니다.
- ORA-03113: End-of-file on communication channel — 데이터베이스 인스턴스가 비정상 종료되거나 네트워크 연결이 끊겼을 때 클라이언트 측에서 발생하는 에러로, ORA-01014와 함께 alert log에서 자주 발견됩니다.
- ORA-01034: ORACLE not available — 데이터베이스 인스턴스가 완전히 종료된 상태에서 연결을 시도할 때 발생하며, ORA-01014는 종료 진행 중, ORA-01034는 종료 완료 후 연결 시도 시 반환된다는 점에서 차이가 있습니다.
- ORA-00600: Internal error code — 비정상 크래시로 인한 ORA-01014 발생 시 alert log에서 함께 확인되는 경우가 많으며, Oracle Support에 SR(Service Request)을 오픈해야 하는 심각한 내부 에러입니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.