Oracle ORA-00265 오류 원인과 해결 방법 완벽 가이드

ORA-00265
2026년 06월 05일 | DBMS Error 가이드

이 글에서 다루는 내용

ORA-00265 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.

ORA-00265 instance recovery required, cannot set ARCHIVELOG mode 는?

ORA-00265 에러는 Oracle 데이터베이스를 ARCHIVELOG 모드로 변경하려고 할 때, 인스턴스 복구(Instance Recovery)가 필요한 상태에서 해당 작업을 수행하면 발생하는 에러입니다. 쉽게 말해, 데이터베이스가 비정상적으로 종료된 이후 아직 복구가 완료되지 않은 상태에서 아카이브 로그 모드 전환을 시도할 때 Oracle이 이를 차단하면서 발생합니다. 이 에러는 주로 데이터베이스 관리자가 MOUNT 상태에서 ALTER DATABASE ARCHIVELOG 명령을 실행할 때 나타나며, 반드시 인스턴스 복구를 먼저 완료한 후에 모드 변경이 가능합니다.


주요 발생 원인

1. 데이터베이스 비정상 종료 후 복구 미완료

가장 흔한 원인으로, 운영 중인 Oracle 인스턴스가 서버 크래시, 전원 장애, 강제 종료(SHUTDOWN ABORT) 등의 이유로 비정상적으로 종료된 경우입니다. 이 상태에서 데이터베이스를 MOUNT 단계까지만 올린 뒤 ARCHIVELOG 모드 변경을 시도하면, Oracle은 아직 redo 로그를 통한 인스턴스 복구가 완료되지 않았음을 감지하고 ORA-00265를 반환합니다. 데이터베이스를 OPEN 상태로 올리는 과정에서 자동으로 인스턴스 복구가 수행되므로, 반드시 OPEN 단계를 거친 후 다시 MOUNT 상태로 내려야 합니다.

2. SHUTDOWN ABORT 이후 즉시 ARCHIVELOG 전환 시도

SHUTDOWN ABORT는 현재 진행 중인 트랜잭션을 롤백하지 않고 강제로 인스턴스를 종료하는 명령으로, 항상 인스턴스 복구를 필요로 하는 상태를 만들어냅니다. DBA가 빠른 재시작을 위해 STARTUP MOUNT 명령으로 MOUNT 상태까지만 올리고 바로 ARCHIVELOG 모드 전환을 시도하는 경우 이 에러가 빈번하게 발생합니다. SHUTDOWN ABORT 이후에는 반드시 STARTUP 명령으로 데이터베이스를 완전히 OPEN하여 인스턴스 복구를 완료시킨 뒤, SHUTDOWN IMMEDIATE로 정상 종료하고 절차를 다시 진행해야 합니다.

3. RAC 환경 또는 Data Guard 구성에서의 절차 누락

Oracle RAC(Real Application Clusters) 환경이나 Data Guard 구성에서 ARCHIVELOG 모드를 변경할 때 절차가 복잡해집니다. 특정 노드만 종료하거나 Standby 데이터베이스의 상태를 고려하지 않고 작업을 진행하면 인스턴스 복구가 필요한 상태가 유발되어 ORA-00265가 발생할 수 있습니다. RAC 환경에서는 모든 인스턴스를 정상적으로 종료(SHUTDOWN IMMEDIATE)한 후 하나의 인스턴스만 MOUNT하여 작업해야 하며, Data Guard 환경에서는 Primary와 Standby 간의 동기화 상태를 반드시 확인해야 합니다.


해결 방법

Step 1: 현재 데이터베이스 상태 및 복구 필요 여부 확인

먼저 Alert Log와 V$ 뷰를 통해 현재 상태를 점검합니다.

-- 현재 데이터베이스 상태 확인
SELECT STATUS, DATABASE_STATUS, INSTANCE_NAME
FROM V$INSTANCE;

-- 데이터베이스 모드 확인
SELECT NAME, LOG_MODE, OPEN_MODE
FROM V$DATABASE;

-- 복구 필요 여부 확인 (인스턴스 복구 정보)
SELECT * FROM V$RECOVER_FILE;

-- Redo 로그 상태 확인
SELECT GROUP#, STATUS, ARCHIVED, MEMBERS
FROM V$LOG;

Step 2: 인스턴스 복구 수행 (핵심 해결책)

ORA-00265를 해결하는 가장 확실한 방법은 데이터베이스를 OPEN 상태로 올려 Oracle이 자동으로 인스턴스 복구를 수행하도록 하는 것입니다.

-- [방법 1] 데이터베이스를 완전히 OPEN하여 자동 인스턴스 복구 수행
-- sqlplus / as sysdba 접속 후 실행

-- 현재 MOUNT 상태라면 OPEN으로 전환
ALTER DATABASE OPEN;

-- OPEN 후 정상 종료 (IMMEDIATE 또는 NORMAL 사용, ABORT는 절대 금지)
SHUTDOWN IMMEDIATE;

-- 다시 MOUNT 상태로 기동
STARTUP MOUNT;

-- 이제 ARCHIVELOG 모드 변경 가능
ALTER DATABASE ARCHIVELOG;

-- 데이터베이스 OPEN
ALTER DATABASE OPEN;

-- 아카이브 로그 모드 변경 확인
SELECT LOG_MODE FROM V$DATABASE;
-- [방법 2] 처음부터 전체 절차를 올바르게 수행하는 방법
-- (NOARCHIVELOG 상태에서 ARCHIVELOG로 전환하는 전체 표준 절차)

-- 1단계: 현재 모드 확인
SELECT NAME, LOG_MODE FROM V$DATABASE;

-- 2단계: 데이터베이스 정상 종료 (반드시 IMMEDIATE 이상 사용)
SHUTDOWN IMMEDIATE;

-- 3단계: MOUNT 상태로 기동
STARTUP MOUNT;

-- 4단계: ARCHIVELOG 모드로 변경 (이 단계에서 ORA-00265 발생 시 Step 1로 돌아갈 것)
ALTER DATABASE ARCHIVELOG;

-- 5단계: 데이터베이스 OPEN
ALTER DATABASE OPEN;

-- 6단계: 아카이브 로그 프로세스 확인
SELECT ARCHIVER FROM V$INSTANCE;
ARCHIVE LOG LIST;

Step 3: RAC 환경에서의 해결 방법

-- RAC 환경에서 모든 인스턴스 상태 확인
SELECT INST_ID, INSTANCE_NAME, STATUS
FROM GV$INSTANCE;

-- 모든 노드에서 인스턴스 종료 후 단일 노드로 복구 수행
-- Node 2, 3 ... n 에서 먼저 종료
SHUTDOWN IMMEDIATE;

-- Node 1에서만 OPEN하여 인스턴스 복구 완료
STARTUP;

-- 정상 종료
SHUTDOWN IMMEDIATE;

-- MOUNT 상태로 기동
STARTUP MOUNT;

-- ARCHIVELOG 모드 전환
ALTER DATABASE ARCHIVELOG;

-- OPEN
ALTER DATABASE OPEN;

Step 4: 아카이브 로그 설정 최종 검증

-- 아카이브 로그 목적지 설정 확인
SHOW PARAMETER LOG_ARCHIVE_DEST;
SHOW PARAMETER LOG_ARCHIVE_FORMAT;

-- 아카이브 로그 목적지 설정 (필요 시)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/arch/oradata' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;

-- 현재 아카이브 로그 목록 확인
SELECT NAME, SEQUENCE#, FIRST_TIME, NEXT_TIME
FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE# DESC
FETCH FIRST 10 ROWS ONLY;

-- 강제 로그 스위치로 아카이브 정상 작동 확인
ALTER SYSTEM SWITCH LOGFILE;

-- 아카이브 완료 확인
SELECT GROUP#, STATUS, ARCHIVED FROM V$LOG;

예방 방법

1. 정상 종료 절차 표준화 및 자동화

데이터베이스 종료 시 반드시 SHUTDOWN IMMEDIATE 또는 SHUTDOWN NORMAL만 사용하도록 운영 정책을 수립하고, SHUTDOWN ABORT는 절대적인 비상 상황에서만 제한적으로 허용해야 합니다. 또한 데이터베이스 기동/종료 스크립트를 표준화하여 ARCHIVELOG 모드 전환 시에는 반드시 OPEN → IMMEDIATE 종료 → MOUNT → ARCHIVELOG 전환 순서를 자동화된 스크립트로 수행하도록 합니다. 아래와 같이 간단한 쉘 스크립트를 통해 절차를 표준화할 수 있습니다.

-- 정기적으로 비정상 종료 이력 모니터링
SELECT STARTUP_TIME, INSTANCE_NAME, STATUS
FROM V$INSTANCE;

-- Alert Log에서 ORA-00265 이력 조회 (Oracle 11g 이상)
SELECT ORIGINATING_TIMESTAMP, MESSAGE_TEXT
FROM V$DIAG_ALERT_EXT
WHERE MESSAGE_TEXT LIKE '%ORA-00265%'
ORDER BY ORIGINATING_TIMESTAMP DESC;

2. 데이터베이스 상태 정기 모니터링 및 백업 정책 수립

ARCHIVELOG 모드 전환 전후로 반드시 Cold Backup 또는 RMAN Backup을 수행하는 정책을 수립해야 합니다. 또한 Enterprise Manager, OEM Cloud Control, 또는 커스텀 모니터링 스크립트를 통해 데이터베이스의 LOG_MODE, ARCHIVER 프로세스 상태, 아카이브 목적지 용량 등을 주기적으로 점검하여 이상 징후를 사전에 탐지합니다.

-- 일일 점검용 데이터베이스 상태 모니터링 쿼리
SELECT
    d.NAME         AS DB_NAME,
    d.LOG_MODE     AS ARCHIVE_MODE,
    i.ARCHIVER     AS ARCHIVER_STATUS,
    d.OPEN_MODE    AS OPEN_MODE,
    i.STATUS       AS INSTANCE_STATUS
FROM V$DATABASE d, V$INSTANCE i;

관련 에러

  • ORA-00264: No recovery required. 인스턴스 복구가 필요 없는 상태를 나타내며, ORA-00265와 반대 개념입니다.
  • ORA-00279: Change required for thread. 아카이브 로그 복구 중 필요한 로그 파일을 찾지 못할 때 발생하며, ARCHIVELOG 모드 전환 후 미디어 복구 시 자주 함께 등장합니다.
  • ORA-00283: Recovery session canceled due to errors. 복구 세션이 내부 오류로 취소될 때 발생하며, ORA-00265 해결 후 복구 작업 중 나타날 수 있습니다.
  • ORA-01122: Database file check failed. 데이터파일 검증 실패로, 인스턴스 복구가 필요한 상황에서 함께 발생하는 경우가 많습니다.
  • ORA-01589: Must use RESETLOGS or NORESETLOGS option for database open. 불완전 복구 후 데이터베이스를 OPEN할 때 발생하며, 복구 절차와 밀접하게 연관되어 있습니다.

DBMS 에러 코드 시리즈

주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.

본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.

댓글 남기기