2026년 07월 08일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-01157 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-01157 cannot identify/lock data file – see DBWR trace file 는?
ORA-01157 에러는 Oracle 데이터베이스가 특정 데이터 파일을 식별하거나 잠금(lock)을 획득할 수 없을 때 발생하는 심각한 오류입니다. 주로 데이터베이스 시작(startup) 과정 또는 운영 중에 운영체제 수준의 파일 접근 문제가 발생할 때 나타나며, DBWR(Database Writer) 백그라운드 프로세스가 해당 파일에 접근하지 못할 때 트리거됩니다. 이 에러는 단독으로 발생하기보다는 ORA-01110 에러와 함께 출력되어 어떤 파일에 문제가 있는지 구체적으로 알려주는 경우가 많습니다.
주요 발생 원인
1. 데이터 파일의 물리적 손실 또는 삭제
가장 흔한 원인으로, 운영체제 수준에서 데이터 파일이 실수로 삭제되었거나, 스토리지 장애로 인해 파일이 물리적으로 접근 불가능한 상태가 된 경우입니다. Oracle의 컨트롤 파일에는 해당 파일의 경로 정보가 등록되어 있으나 실제 파일이 존재하지 않기 때문에 DBWR 프로세스가 파일을 열지 못하고 에러를 발생시킵니다. 특히 DBA의 실수나 스크립트 오류로 인해 프로덕션 환경에서도 발생할 수 있는 매우 위험한 상황입니다.
2. 파일 권한(Permission) 및 소유권 문제
데이터 파일이 존재하더라도 Oracle 프로세스(oracle 유저)가 해당 파일에 대한 읽기/쓰기 권한을 보유하지 못한 경우 이 에러가 발생합니다. 운영체제 패치, 스토리지 마이그레이션, 또는 NFS 마운트 설정 변경 후 파일 소유권이나 퍼미션이 변경되어 Oracle이 접근하지 못하는 상황이 대표적입니다. 이 경우 파일 자체는 멀쩡하지만 OS 레벨 접근 제어가 데이터베이스 가용성을 막는 상황이 됩니다.
3. 데이터 파일 경로 변경 또는 마운트 포인트 문제
스토리지 재구성, ASM 마이그레이션, 또는 파일시스템 마운트 포인트 변경 후 Oracle 컨트롤 파일에 등록된 경로와 실제 파일 위치가 불일치할 때 발생합니다. NFS 스토리지를 사용하는 환경에서는 NFS 마운트가 해제(unmount)된 상태에서 데이터베이스가 시작될 경우에도 동일한 에러가 발생합니다. 이 경우 파일은 실제로 존재하지만 Oracle이 인식하는 경로에 없기 때문에 컨트롤 파일 업데이트 또는 파일 이동이 필요합니다.
해결 방법
방법 1: 문제 파일 확인
먼저 어떤 데이터 파일에 문제가 있는지 정확히 확인합니다.
-- 데이터 파일 상태 및 경로 확인
SELECT file#, status, name
FROM v$datafile
WHERE status != 'ONLINE';
-- 또는 전체 데이터 파일 목록 조회
SELECT file#, status, name, bytes/1024/1024 AS size_mb
FROM v$datafile
ORDER BY file#;
-- 에러 발생 시 alert log 확인을 위한 경로 조회
SELECT value FROM v$parameter WHERE name = 'background_dump_dest';
방법 2: 물리적 파일 손실 시 – OFFLINE 후 복구
파일이 삭제된 경우 해당 파일을 OFFLINE으로 처리하고 백업에서 복구합니다.
-- MOUNT 상태로 데이터베이스 시작 (OPEN이 안 될 경우)
STARTUP MOUNT;
-- 문제 데이터 파일 OFFLINE 처리
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf' OFFLINE;
-- 데이터베이스 OPEN
ALTER DATABASE OPEN;
-- RMAN을 통한 데이터 파일 복구
-- (별도 RMAN 세션에서 실행)
RMAN> RESTORE DATAFILE '/u01/oradata/ORCL/users01.dbf';
RMAN> RECOVER DATAFILE '/u01/oradata/ORCL/users01.dbf';
-- 복구 완료 후 파일 ONLINE으로 전환
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf' ONLINE;
방법 3: 파일 권한 문제 해결
OS 레벨에서 권한을 수정한 후 데이터베이스를 재시작합니다.
-- 현재 파일 경로 및 상태 확인
SELECT file#, name, status FROM v$datafile;
# OS 레벨에서 권한 및 소유권 수정 (oracle 유저로 실행)
ls -al /u01/oradata/ORCL/users01.dbf
chown oracle:oinstall /u01/oradata/ORCL/users01.dbf
chmod 640 /u01/oradata/ORCL/users01.dbf
-- 권한 수정 후 데이터베이스 재시작
SHUTDOWN ABORT;
STARTUP;
방법 4: 파일 경로 변경 시 – 컨트롤 파일 업데이트
파일이 다른 위치로 이동된 경우 컨트롤 파일의 경로를 갱신합니다.
-- MOUNT 상태에서 데이터 파일 경로 변경
STARTUP MOUNT;
-- 컨트롤 파일의 데이터 파일 경로 수정
ALTER DATABASE RENAME FILE '/old/path/users01.dbf'
TO '/new/path/users01.dbf';
-- 변경 확인
SELECT file#, name FROM v$datafile;
-- 데이터베이스 OPEN
ALTER DATABASE OPEN;
방법 5: 시스템 테이블스페이스 파일 손실 시 (최악의 경우)
시스템 테이블스페이스 파일이 손상된 경우 전체 데이터베이스 복구가 필요합니다.
-- RMAN을 통한 전체 데이터베이스 복구
STARTUP MOUNT;
-- RMAN 세션에서
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
-- 복구 완료 후
ALTER DATABASE OPEN RESETLOGS;
예방 방법
1. 정기적인 데이터 파일 상태 모니터링 및 자동화
운영 중인 데이터베이스의 데이터 파일 상태를 주기적으로 점검하는 자동화 스크립트를 구성하고, Oracle Enterprise Manager 또는 커스텀 모니터링 도구를 통해 파일 상태 이상 발생 시 즉시 알림을 받을 수 있도록 설정해야 합니다.
-- 파일 상태 모니터링 쿼리 (cron job 또는 스케줄러에 등록)
SELECT d.file#, d.name, d.status, t.name AS tablespace_name
FROM v$datafile d
JOIN v$tablespace t ON d.ts# = t.ts#
WHERE d.status NOT IN ('ONLINE', 'SYSTEM');
2. RMAN 백업 정책 수립 및 정기적 복구 테스트
ORA-01157 에러의 근본적인 해결책은 결국 복구 가능한 백업의 존재입니다. RMAN을 활용한 정기적 전체 백업(Full Backup)과 증분 백업(Incremental Backup) 정책을 수립하고, 실제 복구 테스트를 분기별로 수행하여 백업의 유효성을 검증해야 합니다.
-- RMAN 백업 현황 확인
SELECT bs.recid, bs.status, bs.start_time, bs.completion_time,
bp.name AS backup_piece
FROM v$backup_set bs
JOIN v$backup_piece bp ON bs.set_stamp = bp.set_stamp
ORDER BY bs.start_time DESC
FETCH FIRST 10 ROWS ONLY;
관련 에러
- ORA-01110: 문제가 발생한 데이터 파일의 번호와 이름을 함께 출력하며, ORA-01157과 항상 쌍으로 발생합니다. 이 에러 메시지를 통해 정확한 파일 위치를 파악할 수 있습니다.
- ORA-01115: 데이터 파일 읽기(I/O) 오류로, 파일은 존재하지만 I/O 레벨에서 읽기가 불가능한 경우 발생하며 ORA-01157과 유사한 스토리지 문제를 나타냅니다.
- ORA-01186: 데이터 파일 검증 실패 에러로, 파일이 존재하지만 내부 구조가 손상된 경우 ORA-01157과 함께 발생할 수 있습니다.
- ORA-27037: OS 레벨에서 파일 정보를 가져올 수 없을 때 발생하며, 스토리지 장애나 NFS 문제와 연관된 경우 ORA-01157과 동반 출력되는 경우가 많습니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.