1. 개요
Oracle Database의 데이터파일(DBF) 손상은 블록 단위 손상부터 전체 파일 손실까지 다양합니다. 본 문서는 손상 유형별 복구 시나리오와 함께, 실무에서 자주 사용되는 명령어 예시를 포함한 매뉴얼입니다.
2. 손상 유형 확인
- ORA-01157 / ORA-01110: 특정 데이터파일 손상
- ORA-01578: 블록 손상(Block Corruption)
- ORA-26040: Direct Path Insert 관련 문제
손상 점검 방법 예시:
SQL> ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE;
OS> dbv file=/u01/oradata/ORCL/users01.dbf blocksize=8192
3. 블록 손상 복구
① RMAN(Block Media Recovery)
RMAN> BLOCKRECOVER DATAFILE 5 BLOCK 100 TO 200;
② DBMS_REPAIR 패키지 활용
BEGIN
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS (schema_name => 'HR', object_name => 'EMP');
END;
/
③ EXPORT/IMPORT
OS> expdp system/manager tables=emp directory=dpdir dumpfile=emp.dmp logfile=emp.log
OS> impdp system/manager tables=emp directory=dpdir dumpfile=emp.dmp logfile=imp_emp.log
4. 데이터파일 전체 손상 복구
• 백업이 있는 경우 (RMAN)
RMAN> RESTORE DATAFILE 5;
RMAN> RECOVER DATAFILE 5;
• 백업이 없는 경우
- 비핵심 테이블스페이스 (예: TEMP, 인덱스)
SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
SQL> CREATE TEMPORARY TABLESPACE temp TEMPFILE '/u01/oradata/ORCL/temp01.dbf' SIZE 100M;
- 핵심 데이터 (사용자 테이블 포함): 전문 복구업체 의뢰 필요
5. SYSTEM/UNDO Tablespace 손상
- SYSTEM tablespace 손상 시 DB 오픈 불가 → 백업 복원 필수
RMAN> RESTORE TABLESPACE system;
RMAN> RECOVER TABLESPACE system;
- UNDO tablespace 손상 시: 재생성 가능
STARTUP MOUNT;
ALTER DATABASE DROP TABLESPACE undotbs1 INCLUDING CONTENTS;
CREATE UNDO TABLESPACE undotbs1 DATAFILE '/u01/oradata/ORCL/undotbs01.dbf' SIZE 200M;
ALTER SYSTEM SET UNDO_TABLESPACE=undotbs1;
6. 컨트롤파일/리두로그 손상
- 컨트롤파일(Control File) 복구
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u01/backup/control01.ctl';
ALTER DATABASE MOUNT;
- 리두로그(Redo Log) 손상 시
ALTER DATABASE CLEAR LOGFILE GROUP 2;
(아카이브 로그 기반 불완전 복구 필요할 수 있음)
7. 최악의 경우 (백업 및 로그 없음)
- DBV(Database Verify)로 손상 블록 제외 후 Export
- DUL(Oracle Data UnLoader) 사용 → Oracle Support를 통한 데이터 salvage
- 서드파티 복구 툴: Stellar Repair for Oracle 등
8. 결론
1) 블록 손상 → RMAN Block Recovery, DBMS_REPAIR
2) 데이터파일 전체 손상 → RMAN Restore & Recover (백업 필수)
3) SYSTEM/UNDO 손상 → SYSTEM은 복원, UNDO는 재생성 가능
4) 컨트롤/리두 손상 → 다중화된 파일 사용 또는 불완전 복구
5) 백업 및 로그가 모두 없는 경우 → 사실상 복구 불가, 전문 복구 툴 활용 필요
⚠️ 실무에서는 반드시 정기적인 RMAN 백업 및 아카이브 로그 보관 정책을 유지해야 합니다.