오라클/백업/복구

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 됨




반응형

'오라클 > 백업/복구' 카테고리의 다른 글

Redo log flle 장애 처리방법  (0) 2014.11.05
Log Miner 활용하기  (0) 2014.11.05
control file, data file 연습문제  (0) 2014.11.04
Data file Recovery (불완전 복구)  (0) 2014.11.04
Data File Recovery  (0) 2014.10.30
Backup (cold, hot)  (0) 2014.10.30
사용자 암호설정/ Archive log mode, No Archive log mode  (0) 2014.10.29