출처: 서진수 강사님 oracle 취업 강좌, oracle백업 과 복구 교재. oracle concepts 문서
[참조할것]
select name from v$controlfile;
select name from v$datafile;
select member from $logfile;
/app/oracle/diag/rdbms/testdb/testdb/trace/alert_testdb.log
tail -f alert_testdb.log
archive log list;
:%s/\/app\/oracle/\/data\/imsy
◎Parameter & Control 장애 요약
◎ Parameter File 에러
□ Parameter File 없을때 만들어주기
◎ 절차
① 이미 만들어 져있는 원본을 복사해온다
② Control 파일에 대한 경로는 설정 되어 있지 않으니 vi 로 편집해 줄것
③ startup
◎ 알아야 할 내용
① 파라미터 조회하기 show parmeter spfile
② PFILE 통해 SPFILE 만들기: create spfile from pfile
③ SPFILE 통새 PFILE 만들기 : create pfile from spfile
④ startup 으로 특정시점으로 가기 : startup nomount
⑤ 특정 시점에서 상위 변화된 시점으로 이동하기: alter database mount
◎ Control File 에러
□ parameter 경로와 실제 control file 경로가 다른 경우
[상황: parameter 경로는 3개인데 실제 파일은 2개인 경우]
nomount 상태
ORA-00205: error in identifying control file, check alert log for more info
→ 그냥 파라미터내용에 경로를 지우거나, control을 추가해주면됨
□ 다중화된 control File 의 버젼이 다른경우
[상황: control01.ctl 의 버젼이 오래된 것이고, 나머지는 최신일때 나는 오류]
nomount 상태
ORA-00214: control file '/app/oracle/oradata/testdb/control02.ctl' version 2868
inconsistent with file '/app/oracle/oradata/testdb/control01.ctl' version 2837
→ control01.ctl 최신으로 바꾸어 주면됨
□ 전부 Old Control File 이거나 전부 삭제되었을 경우
◎ 원인
mount 상태에서 Control File의 Scn 정보가 Datafile의 Scn 보다 낮을 경우의 에러
(실제 파일보다 기록된 정보가 예전정보일때 발생됨 )
→ Datafile을 참조해서 Control File을 재생성
[오류 화면]
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/app/oracle/oradata/testdb/system01.dbf'
ORA-01207: file is more recent than control file - old control file
◎ 복구 절차 ★★
① 안맞는 Control을 통해서 Control 생성 SQL을 만들어줌 (Mount 상태)
② DB 정상종료
③ Control 생성 SQL 안에 내용을 수정(공백이 있으면 안됨)
④ Shutdown 상태에서 Control 생성 SQL을 실행
⑤ Database Open
④-1 : Redo Log는 손상이 없는 경우 : noresetlogs
④-2 : Redo Log는 손상이 있는 경우 : resetlogs
◎ Mount 상태에서 Open 방법 ★★
① norestlogs: Datafile, Redo log의 경로를 참조해서 만들어줌 (디폴트 설정)
② resetlogs: Redo log 까지 고장이난 경우, 전부 다시 만들어줌
[상황 backup 된 control File(오래된)을 전부 원래로 옮겨놓을때 ]
alter database backup controlfile to trace as '/home/oracle/test/re11.sql';
shutdown immediate;
vi re11.sql
1,58d
29,.d
@/home/oracle/test/re11.sql 컨트롤 파일을 다시 만들어 주고
alter database open;
[상황 backup 된 control File(오래된)을 전부 원래로 옮겨놓을때 + Redo log도 1파일 없음]
alter database backup controlfile to trace as '/home/oracle/test/re12.sql';
shutdown immediate;
@./test/re12.sql
alter database open resetlogs;
※ 결론은 무조건 mount는 올려야 하기 때문에 기존의 @re00.sql을 사용
예전에 control File을 사용하든지 할것
[연습 문제]
① mkdir /data/imsy
② cp /app/oracle/oradata/testdb/*.dbf /data/imsy
③ rm /app/oracle/oradata/testdb/*
/data/imsy 디렉토리 아레에 데이터 파일을 사용해서 DB를 OPEN 시키기
datafile, redo log File, control file 의 경로 모두 /data/imsy 로 바꾸기
현재 상태를 확인한다.
① nomunt 면 control 파일 확보 해서 mount로 올려야함 , pfile을 에 내용을 확인 경로대로 설정
② mount 상태면 alter 해서 sql 파일을 만들어 준다. , DB를 끈다
③ sql 파일을 변경(주석 공백 제거)해준다 그냥 resetlogs 로 하면 Redo log File 날라감
④ DB를 끈상태에서 @sql를 실행해준다
⑤ alter open 해준다.
'ORACLE > Back & Recovery' 카테고리의 다른 글
6장 Datafile 복구하기 (물리적 복구) (0) | 2015.04.16 |
---|---|
5장 Log Miner 확용 & Redo log 장애 (0) | 2015.04.15 |
3장 BackUP (0) | 2015.04.13 |
2장 Archive 모드 (0) | 2015.04.13 |
1장 Recover 원리 (0) | 2015.04.13 |