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

ORA-01516
2026년 07월 20일 | DBMS Error 가이드

이 글에서 다루는 내용

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

ORA-01516 nonexistent log file, data file, or temporary file 는?

ORA-01516 에러는 Oracle 데이터베이스에서 로그 파일(Redo Log), 데이터 파일(Data File), 또는 임시 파일(Temporary File)이 존재하지 않거나 접근할 수 없을 때 발생하는 에러입니다. 주로 ALTER DATABASE 또는 ALTER TABLESPACE 명령어를 사용하여 특정 파일을 참조하려 할 때, 해당 파일 번호나 경로가 데이터베이스 내부적으로 유효하지 않은 경우에 트리거됩니다. 30년간 현장에서 경험해보면, 이 에러는 파일 이동, 삭제, 또는 잘못된 파일 번호 참조로 인해 가장 빈번하게 발생하며, 즉각적인 조치를 취하지 않으면 데이터베이스 운영에 심각한 영향을 미칠 수 있습니다.


주요 발생 원인

1. 잘못된 파일 번호(File#) 참조

Oracle 데이터베이스의 모든 데이터 파일, 로그 파일, 임시 파일에는 고유한 파일 번호가 부여됩니다. ALTER DATABASE DATAFILE 99 OFFLINE 처럼 실제로 존재하지 않는 파일 번호를 지정하면 ORA-01516이 발생합니다. 이는 특히 DBA가 V$DATAFILE, V$LOGFILE, V$TEMPFILE 뷰를 확인하지 않고 번호를 직접 입력할 때 자주 발생합니다.

2. 물리적 파일의 삭제 또는 이동

운영체제 레벨에서 데이터 파일이나 redo 로그 파일이 실수로 삭제되거나 다른 경로로 이동된 경우, Oracle은 해당 파일의 존재를 컨트롤 파일에서는 인식하지만 실제 파일 시스템에서는 찾지 못해 에러를 발생시킵니다. 이러한 상황은 스토리지 마이그레이션 작업 중이나 디스크 용량 확보를 위한 임의 파일 삭제 시 발생하며, 최악의 경우 데이터베이스 전체가 기동 불가 상태에 빠질 수 있습니다.

3. Temporary File(임시 파일) 자동 삭제 후 미복구

Oracle의 임시 테이블스페이스(TEMP)에 속한 임시 파일은 특정 조건에서 자동으로 삭제되거나, 데이터베이스 재시작 후 소실될 수 있습니다. 이후 ALTER TABLESPACE TEMP ADD TEMPFILE 명령 없이 해당 임시 파일을 참조하려 하면 ORA-01516이 발생합니다. 특히 RAC(Real Application Clusters) 환경에서 노드 재시작 후 임시 파일이 누락되는 케이스를 실무에서 자주 목격해왔습니다.


해결 방법

원인 1 해결: 올바른 파일 번호 확인 후 명령 재실행

먼저 아래 쿼리로 각 파일의 실제 번호를 확인하세요.

-- 데이터 파일 목록 확인
SELECT FILE#, STATUS, NAME
FROM V$DATAFILE
ORDER BY FILE#;

-- 로그 파일 목록 확인
SELECT L.GROUP#, LF.MEMBER, L.STATUS
FROM V$LOG L
JOIN V$LOGFILE LF ON L.GROUP# = LF.GROUP#
ORDER BY L.GROUP#;

-- 임시 파일 목록 확인
SELECT FILE#, STATUS, NAME
FROM V$TEMPFILE
ORDER BY FILE#;

올바른 파일 번호를 확인한 후 아래와 같이 명령을 재실행합니다.

-- 올바른 파일 번호로 데이터 파일 오프라인 처리
ALTER DATABASE DATAFILE 5 OFFLINE;

-- 올바른 그룹 번호로 로그 파일 삭제
ALTER DATABASE DROP LOGFILE GROUP 3;

원인 2 해결: 물리적으로 이동된 파일 경로 갱신

파일이 이동된 경우, 먼저 데이터베이스를 MOUNT 상태로 전환한 후 경로를 갱신합니다.

-- MOUNT 상태에서 데이터 파일 경로 변경
STARTUP MOUNT;

ALTER DATABASE RENAME FILE
  '/old/path/datafile01.dbf'
TO
  '/new/path/datafile01.dbf';

ALTER DATABASE OPEN;

-- 파일 복구가 필요한 경우
RECOVER DATAFILE '/new/path/datafile01.dbf';

파일이 삭제된 경우에는 백업에서 복구 후 복구 명령을 실행해야 합니다.

-- RMAN을 이용한 특정 데이터 파일 복구
RMAN TARGET /

RUN {
  RESTORE DATAFILE 5;
  RECOVER DATAFILE 5;
}

-- SQL*Plus에서 온라인 전환
ALTER DATABASE DATAFILE 5 ONLINE;

원인 3 해결: 임시 파일 재추가

-- 현재 TEMP 테이블스페이스 상태 확인
SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 AS SIZE_MB, STATUS
FROM DBA_TEMP_FILES;

-- 임시 파일 재추가 (누락된 경우)
ALTER TABLESPACE TEMP ADD TEMPFILE
  '/u01/app/oracle/oradata/ORCL/temp01.dbf'
SIZE 2048M
REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

-- 기존 임시 파일 경로 변경이 필요한 경우
ALTER DATABASE RENAME FILE
  '/old/path/temp01.dbf'
TO
  '/new/path/temp01.dbf';

예방 방법

1. 파일 상태 모니터링 자동화

정기적으로 Oracle 파일 상태를 점검하는 모니터링 스크립트를 작성하고 스케줄러(DBMS_SCHEDULER 또는 cron)에 등록하세요. 아래 스크립트를 매일 새벽 점검 루틴에 포함시키면 파일 이상 징후를 조기에 탐지할 수 있습니다.

-- 파일 상태 이상 감지 쿼리 (SYSMON 등에 등록)
SELECT 'DATAFILE' AS FILE_TYPE, FILE#, NAME, STATUS
FROM V$DATAFILE
WHERE STATUS NOT IN ('SYSTEM', 'ONLINE', 'AVAILABLE')
UNION ALL
SELECT 'TEMPFILE', FILE#, NAME, STATUS
FROM V$TEMPFILE
WHERE STATUS != 'ONLINE'
UNION ALL
SELECT 'LOGFILE', F.GROUP#, F.MEMBER, L.STATUS
FROM V$LOGFILE F
JOIN V$LOG L ON F.GROUP# = L.GROUP#
WHERE L.STATUS = 'INVALID' OR F.STATUS = 'INVALID';

2. 파일 시스템 작업 시 반드시 DBA 협의 절차 수립

스토리지 팀이나 시스템 관리자가 Oracle 데이터베이스 관련 디렉터리에서 파일을 삭제하거나 이동할 때는 반드시 DBA의 사전 승인과 Oracle 레벨에서의 정식 파일 관리 절차(RMAN, ALTER DATABASE)를 통해서만 수행하도록 내부 규정을 마련해야 합니다. OS 레벨의 임의 파일 조작은 ORA-01516을 포함한 다양한 심각한 에러의 원인이 됩니다.


관련 에러

  • ORA-01114: 파일에 블록을 쓰는 도중 I/O 에러가 발생했을 때 나타나며, ORA-01516과 함께 물리적 파일 문제 시 복합 발생하는 경우가 있습니다.
  • ORA-01157: 데이터 파일을 식별하거나 잠글 수 없을 때 발생하며, 파일이 존재하지 않거나 접근 불가 상태일 때 ORA-01516과 유사한 맥락에서 발생합니다.
  • ORA-01110: 에러 발생 시 문제가 된 데이터 파일의 이름과 번호를 함께 출력해주는 보조 에러로, ORA-01516 발생 시 함께 출력되어 원인 파악에 도움을 줍니다.
  • ORA-00313: 로그 파일 그룹을 열 수 없을 때 발생하며, redo 로그 파일이 물리적으로 존재하지 않을 때 ORA-01516과 연계되어 나타납니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기