오라클/백업/복구

Control file 복구

김포춘 2014. 11. 4. 16:20
반응형

Control file 장애 상황 

1. Parameter file 의 경로와 실제 파일 경로가 다른 경우

2. Control file 끼리 내용이 서로 다른 경우

3. Old control file 또는 control file 이 삭제되었을 경우



1. Parameter file 의 경로와 실제 파일 경로가 다른 경우


해결 방법 : Parameter file 의 내용을 수정하거나 , Parameter file에 안들어가 있는 control file 을 추가해주면 됨



2. Control file 끼리 내용이 서로 다른 경우


해결 방법 : Control file 의 version 넘버가 큰 파일을 작은 파일로 덮어쓰면 됨 


3. Old control file 또는 control file 이 삭제되었을 경우

- 백업 데이터 파일과 Archive redo log file 을 사용하여 using backup control file 옵션으로 복구

- 위와 같은 방법이 불가능할 경우 control file 을 재생성

            - 현재 redo log file에 손상이 없을 경우 - noresetlogs 모드로 재생성

- 현재 redo log file에 손상이 있을 경우 - resetlogs 모드로 재생성


NORESETLOGS 옵션으로 CONTROL FILE 재생성


DB MOUNT 상태에서 Control file 을 재생성하는 스크립트 생성

-> alter database backup controlfile to trace '/app/oracle/back.sql' ;          <-- 경로와 이름은 아무렇게나 해도 됨


DB 를 종료하고 생성한 스크립트를 vi editor 로 열기

-> vi /app/oracle/back.sql 


스크립트를 열면 내용이 상당히 많은데 필요한 부분만 빼고 다 지워주자

스크립트의 내용중 -- 부분은 주석이라는 의미

 

STARTUP NOMOUNT 

CREATE CONTROLFILE REUSE DATABASE "TESTDB" NORESETLOGS  ARCHIVELOG   

......

CHARACTER SET KO16MSWIN949

;


스크립트 내용중 위와 같이 STARTUP NOMOUNT가 스크립트 실행되는 첫 부분 이다.

아래 NORESETLOGS 라고 써있는 부분이 RESETLOGS 모드와 NORESETLOGS모드를 구분하는 부분

여기선 NORESETLOGS 모드로 재생성 함으로써 나머지 다 지움.


DB가 꺼진 상태에서 스크립트 실행

SYS> @/app/oracle/back.sql

스크립트가 실행되면서 control file 이 정상적으로 생성되었고 자동으로 mount 상태로 됨

SYS> alter database open   

Control file 이 재생성되어 정상적으로 DB가 OPEN 됨


※스크립트로 Control file 재생성시 주의사항

1. DB가 RESETLOGS Mode 로 OPEN 되는지 NORESETLOGS Mode로 OPEN 되는지 구분하고 생성하시오

2. 스크립트 안에 공백이 있으면 생성 도중에 에러가 생김

3. NORESETLOGS 모드일 경우는 스크립트 내부의 Redo log file 이 전부 해당 경로에 있어야 함

4. RESETLOGS 모드일 경우 스크립트 내부의 Redo log file 이 없어도 reset logs 로 open 될 때 재생성 됨

5. 두 모드 공통적으로 데이터파일은 반드시 스크립트 내부의 경로에 실제 존재해야 함

6. Control file 의 생성위치는 파라미터 파일에 지정된 경로


Redo log file 까지 손상이 생겨 RESETLOGS 옵션으로 CONTROL FILE 재생성


DB MOUNT 상태에서 Control file 을 재생성하는 스크립트 생성

-> alter database backup controlfile to trace '/app/oracle/back2.sql' ;          <-- 경로와 이름은 아무렇게나 해도 됨


DB 를 종료하고 생성한 스크립트를 vi editor 로 열기

-> vi /app/oracle/back2.sql 


스크립트를 열면 내용이 상당히 많은데 필요한 부분만 빼고 다 지워주자

스크립트의 내용중 -- 부분은 주석이라는 의미

 

STARTUP NOMOUNT 

CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG   

......

CHARACTER SET KO16MSWIN949

;


스크립트 내용중 위와 같이 STARTUP NOMOUNT가 스크립트 실행되는 첫 부분 이다.

아래 NORESETLOGS 라고 써있는 부분이 RESETLOGS 모드와 NORESETLOGS모드를 구분하는 부분

여기선 NORESETLOGS 모드로 재생성 함으로써 나머지 다 지움.


DB가 꺼진 상태에서 스크립트 실행

SYS> @/app/oracle/back2.sql

스크립트가 실행되면서 control file 이 정상적으로 생성되었고 자동으로 mount 상태로 됨

SYS> alter database open resetlogs;           <-- 이때 redo log file 이 재생성됨

Control file 이 재생성되어 정상적으로 DB가 OPEN 됨




반응형