장애 1 : 대기중인 멤버 1개만 장애 발생
장애발생 ----------->>>>>>>>>>>>>>>>>>
1. 멤버파일 1개 지워짐
SYS> !rm -f /home/oracle/oradata/testdb/redo01_a.log
SYS> !ls /home/oracle/oradata/testdb/redo01_a.log
SYS> alter system switch logfile;
로그스위치 일으켜도 이상 없음
SYS> /
SYS> /
SYS> /
SYS> /
SYS> @redo
set line 200
col group# for 999
col member for a50
col sequence# for 999
select a.group#, a.member, b.bytes/1024/1024 MB, b.archived, b.sequence# "SEQ#", b.status
from v$logfile a, v$log b
where a.group# = b.group#
order by 1;
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 NO 44 CURRENT
1 redo01_b.log 5 NO 44 CURRENT
2 redo02_a.log 5 YES 42 INACTIVE
2 redo02_b.log 5 YES 42 INACTIVE
3 redo03_a.log 5 YES 43 INACTIVE
3 redo03_b.log 5 YES 43 INACTIVE
2. 에러 확인
$ vi /home/oracle/admin/testdb/budmp/alert_testdb.log
지워진 멤버파일 redo01_a.log에 에러메시지 출력됨.
운영에는 문제가 없지만(ORACLE 기본 그룹최소2개, 멤버최소1개), 이후 나머지 멤버마저 지워지면 문제가 된다.
수시로 alert log 파일을 확인하여 해당 문제가 있을 시 해결해 줘야 한다.
에러를 발생시키는 주체 : archiver process
: log switch 가 발생해서 archive 를 해야 하는데 해당 redo log file 이 없기에 archive를 못해서 발생하는 에러
해결 --------------->>>>>>>>>>>>>>>>>>>>
3. 장애 멤버 삭제 후 재생성
SYS> alter database drop logfile member '/home/oracle/oradata/testdb/redo01_a.log';
SYS> alter database add logfile member '/home/oracle/oradata/testdb/redo01_a.log';
4. 정상 작동 확인
SYS> @redo
$ vi /home/oracle/admin/testdb/budmp/alert_testdb.log
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애1 끝
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애2 시작
장애 2 : 대기중인 그룹 중 archive 가 완료된 그룹이 지워진 경우
: Current 아닌 하나의 그룹이 삭제, 삭제되기전에 다른 곳에 내용이 복사되었기 때문에(archive) 별 문제 없음
Redo log file의 목적이 장애가 발생하였을때 복구하기 위함=이미 안전하게 내용을 다른곳에 복사했기때문에 큰 문제 없음
장애발생 ----------->>>>>>>>>>>>>>>>>>
1. 현재 상태 확인
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 NO 44 CURRENT
1 redo01_b.log 5 NO 44 CURRENT
2 redo02_a.log 5 YES 42 INACTIVE
2 redo02_b.log 5 YES 42 INACTIVE
3 redo03_a.log 5 NO 43 ACTIVE
3 redo03_b.log 5 NO 43 ACTIVE
2. archive 완료 된 그룹 전체 삭제
SYS> !rm -fr /home/oracle/oradata/testdb/redo02*.log
SYS> !ls /home/oracle/oradata/testdb/redo02*.log
SYS> shutdown abort;
SYS> startup
MOUNT까지 올라오고 에러발생
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1:'/dir/redo02_a.log'
ORA-00312: online log 2 thread 1:'/dir/redo02_b.log'
에러원인 : control file 안에는 redo log group 2번 정보가 있는데 실제 redo log group 2 파일들이 삭제되어 없기 때문
해결 --------------->>>>>>>>>>>>>>>>>>>>
3. 장애 생긴 그룹 삭제 후 재 생성하고 다시 open
SYS> alter database drop logfile group 2;
→ 그룹2번이 아카이브 되었기 때문에 삭제가능. NO아카이브 상태는 삭제불가.
SYS> alter database add logfile group 2
2 ('/home/oracle/oradata/testdb/redo02_a.log',
3 '/home/oracle/oradata/testdb/redo02_b.log') size 5M;
SYS> @redo
2번그룹 UNUSED로 새로 생성됨
SYS> alter database open;
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애2 끝
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애3 시작
장애 3 : 대기중인 그룹중 archive 가 완료 안된 그룹이 지어진 경우 - DB Open 상태
: 운영중인 서버의 redo log중 특정 그룹이 지워지고 계속 log switch가 발생하게되면
DB 가 Hang현상이 발생하여 중단이 되다가 급기야 비정상 종료.
: 평소 alert log 를 잘 확인하고, 이러한 장애 발생시 신속히 대처
장애발생 ----------->>>>>>>>>>>>>>>>>>
1. 현재 상태 확인
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 YES 44 INACTIVE
1 redo01_b.log 5 YES 44 INACTIVE
2 redo02_a.log 5 NO 45 CURRENT
2 redo02_b.log 5 NO 45 CURRENT
3 redo03_a.log 5 YES 43 INACTIVE
3 redo03_b.log 5 YES 43 INACTIVE
2. 그룹 삭제 - 현재 archive 완료된 1번 그룹 삭제
SYS> !rm -f /home/oracle/oradata/testdb/redo01*
SYS> !ls /home/oracle/oradata/testdb/redo01*
3. 장애확인
SYS> alter ystem switch logfile;
SYS> /
SYS> /
SYS> /
SYS> /
Hang 발생
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 NO 44 INACTIVE
1 redo01_b.log 5 NO 44 INACTIVE
2 redo02_a.log 5 NO 45 INACTIVE
2 redo02_b.log 5 NO 45 INACTIVE
3 redo03_a.log 5 NO 43 CURRENT
3 redo03_b.log 5 NO 43 CURRENT
※ ARC 부분이 전부 NO
- 이유 : 아카이브 프로세스는 순차적으로 발생하기 때문
(1번이 완료되어야 2번,3번그룹이 아카이빙 되는데 1번그룹이 삭제되어 아카이빙이 완료 안 되었기 때문)
Alert log 확인
$ vi /home/oracle/admin/testdb/budmp/alert_testdb.log
해결 --------------->>>>>>>>>>>>>>>>>>>>
4. 장애해결
SYS> alter database clear unarchived logfile group 1;
: 이 명령어를 치면 컨트롤 파일의 정보를 보고 해당 그룹으 ㅣ멤버를 자동으로 삭제 후 재 생성
: 이 명령어로 redo log group 을 재생성 하게 되면 반드시 DB전체를 Full backup 받아야 한다.
Archive log file 이 중간에 비어버리기 때문에 그냥 넘어갔다가는 향후에 장애가 발생시켜 복구가 안됨
SYS> alter system switch logfile;
SYS> /
SYS> /
SYS> /
다시 Hang 걸림
$ vi /home/oracle/admin/testdb/budmp/alert_testdb.log
또 다른 에러가 발생함
- 위 명령으로 새로 생성된 그룹의 멤버 파일은 사용할 수 없다
- 문제가 되는 그룹을 수동으로 삭제하고 재 생성 해주면 해결된다.
SYS> alter database clear unarchived logfile group 1;
SYS> alter database drop logfile group 1;
문제가 되는 그룹 삭제
SYS> !rm -fr /home/oracle/oradata/testdb/redo01*
SYS> !ls /home/oracle/oradata/testdb/redo01*
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
2 redo02_a.log 5 NO 53 CURRENT
2 redo02_b.log 5 NO 53 CURRENT
3 redo03_a.log 5 NO 52 INACTIVE
3 redo03_b.log 5 NO 52 INACTIVE
SYS> alter database add logfile group 1
2 ('/home/oracle/oradata/testdb/redo01_a.log',
3 '/home/oracle/oradata/testdb/redo01_b.log') size 5M;
SYS> @redo
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 NO 0 UNUSED
1 redo01_b.log 5 NO 0 UNUSED
2 redo02_a.log 5 NO 53 CURRENT
2 redo02_b.log 5 NO 53 CURRENT
3 redo03_a.log 5 NO 52 INACTIVE
3 redo03_b.log 5 NO 52 INACTIVE
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애3 끝
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애4 시작
장애 4 : 대기중인 그룹 중 archive 가 완료 안된 그룹이 지워진 경우 - DB Close
: 그룹 하나가 지워진 후 DB가 종료된 경우.
정상 or 비정상 종료 상관없이 DB가 종료된 후 open을 시도하게되면 open되지 않고 장애 발생함.
Archive가 완료 되었다면 그냥 drop 하고 open 하면 되지만, archive가 안되어서 drop명령어로 삭제되지 않는다.
장애발생 ----------->>>>>>>>>>>>>>>>>>
1. 현재 상태 확인
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 YES 54 ACTIVE
1 redo01_b.log 5 YES 54 ACTIVE
2 redo02_a.log 5 NO 56 CURRENT
2 redo02_b.log 5 NO 56 CURRENT
3 redo03_a.log 5 YES 55 ACTIVE
3 redo03_b.log 5 YES 55 ACTIVE
2. 장애발생 시키기
SYS> !rm -fr /home/oracle/oradata/testdb/redo01_a.log /home/oracle/oradata/testdb/redo01_b.log
SYS> !ls /home/oracle/oradata/testdb/redo01*
SYS> alter system switch logfile;
SYS> /
SYS> /
SYS> /
Hang 발생
※ Hang이 발생한 상태. 다른 터미널에서 일반 계정이 접속을 시도한다면?
$ sqlplus scott/tiger
에러
ORA-00257 : archiver error. Connect internal only, until freed.
의미 : archiver error가 발생하여 일반계정은 접속불가. 관리자 계정으로 접속해서 장애 해결 GOGO~
해결 --------------->>>>>>>>>>>>>>>>>>>>
Hang 발생터미널 Ctrl + C 로 취소
SYS> shutdown abort;
3. DB재시작시키면 에러 발생하며 중단됨
SYS> startup
MOUNT 까지 올라옴
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1:'/home/oracle/oradata/testdb/redo01_a.log'
ORA-00312: online log 1 thread 1:'/home/oracle/oradata/testdb/redo01_b.log'
SYS> @redo
GROUP# MEMBER MB ARC SEQ# STATUS
------ -------------- ---- ---- ----- --------
1 redo01_a.log 5 NO 73 INACTIVE
1 redo01_b.log 5 NO 73 INACTIVE
2 redo02_a.log 5 NO 74 INACTIVE
2 redo02_b.log 5 NO 74 INACTIVE
3 redo03_a.log 5 NO 75 CURRENT
3 redo03_b.log 5 NO 75 CURRENT
그룹1의 SEQ# 번호가 가장작다. 즉, 1번그룹에서 아카이빙이 안되어 나머지도 다 안됨.
SYS> alter database drop logfile group 1;
에러
ORA-00350: log 1 of instance testdb (thread 1) needs to be archived
ORA-00312: online log 1 thread 1:'/home/oracle/oradata/testdb/redo01_a.log'
ORA-00312: online log 1 thread 1:'/home/oracle/oradata/testdb/redo01_b.log'
삭제되지 않는다 : archive log mode 인 DB는 redo가 archive 완료 되기 전에는 절대로 삭제 or 덮어쓰지 않기 때문.
SYS> alter database clear unarchived logfile group 1;
삭제후 자동생성 명령
SYS> @redo
1번그룹 UNUSED로 새로 생성됨
SYS> alter database open;
4. log switch 를 발생시켜 문제 여부 확인 - 정상작동
SYS> alter system switch logfile;
SYS> /
SYS> /
SYS> /
SYS> /
※ DB open 상태에서 hang이 발생할때 사용했던 alter database clear unarchived logfile group N; 명령어 사용은 동일
- DB open 상태일때 : 재생성된 redo log file 수동으로 삭제후 다시 만들어 주기
- DB close 상태일때 : 재생성된 redo log file 그냥 사용 가능
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 장애4 끝
'Oracle > Oracle - 백업&복구' 카테고리의 다른 글
백업&복구 16 - export / import (1) | 2012.02.13 |
---|---|
백업&복구 15.3 - Redo log file 장애 유형5~11 : Current 인경우 (0) | 2012.02.10 |
백업&복구 15.1 - Redo log file 장애 - 순서도 (0) | 2012.02.09 |
백업&복구 14 - Supplemental logging / log miner - log 분석해서 장애 시간 알아내기 (0) | 2012.02.09 |
백업&복구 13 - Redo log의 생성 및 기록 원리 (0) | 2012.02.08 |