내용중 같은 색의 글이나 그림은 같은 내용을 설명 하는 것이라고 생각하시면 이해가 쉽습니다.
※ 사전지식 - Redo log file이 돌아가는 과정 참고
2012/01/17 - [Study/Oracle - Admin] - admin 10 - redo log file
1. Archive log mode
① 고장이 나서 data file 지워짐 → DB정지
② 사전에 [{1} A] 있는 상태에서 백업을 받아놓음.
③ 백업된 data file을 원래 data file위치에 가져다 놓음.
④ 오라클에게 '고쳐라(Restore)' 명령 → 서버프로세스가 명령받고 고침
⑤ 서버프로세스 : 정상상태를 알고 있어야 한다 → 컨트롤파일 찾아감(제일 마지막 SCN확인_컨트롤파일의 위치=파라미터파일참고)
→ 컨트롤파일에서 5번까지 작업을 한것을 확인(헤더부분 checkpoint SCN 참고)하고 data file로 찾아감
→ data file 1번(SCN) 과 컨트롤파일 5번(SCN) 이 다르다. → redo log 찾아감 (2,3,4,5번 찾으러)
→ 찾아보니 : 5번=E작업함, 4번 = D작업함, 3번 = C작업함, 2번 = ? 이렇게 찾아놓고,
→ 고치는순서 : data file기준(1번(→ A))부터 순서대로 고쳐나감
※ 2번이 없기 때문에 3번 이후로는 고치지 못함 (있는것만 못고침!!! - 강제수동으로 살리는방법 나중에 배움)
오라클의 원리 : 중간 비워지면 못고친다!!
Ex) 백업파일 = 1,2,3 : log file = 6,7,8, ~ ,2000
→ 4,5번이 없어서 못고침
→ 2번은어디에? A-1,B-2는 InActive 상태여서 D-4,E-5가 덮어썼다.
※ Archive redo log mode 설명
오라클 기능중, Redo log file을 덮어쓰기 전에 복사해 놓고 덮어쓴다.
Archive redo log : 복사해놓는 redo log → log switch 가 일어나면 즉시 복사한다(아카이버archiver가 수행함)
Archive redo log mode : Archiving 하는 모드
NoArchive redo log mode : Archiving 안 하는 모드
- 장점
ⓐ 데이터 복구시 매우 안정적이다
- 단점
ⓐ 별도의 저장 공간이 추가로 필요하다. → Archive redo log용량 = redo log file용량
ⓑ Archive hang 이 발생할 수 있다.(Archive의특징 : Archiving 되기 전에 InActive를 절대 덮어쓰지 않는다.)
※ Archive hang: Archive redo log file 을 저장하는 공간이 가득 찰 경우 archive를 중단하게 된다.→ DB전체 중단됨
ⓒ 관리가 까다롭다.(Archive hang 안걸리게 관리 잘해야 함)
DB설치하면 기본모드 : NoArchive mode
해야할일 : Archive mode, NoArchive mode 이해
Archive mode의 장단점 알기
DB깔때 담당에게 물어보기 → 담당에게 설명하고 결제 받아두기
Archive hang 발생 안하도록 관리 해주기
!! 참고 !!
문제점1 : 그림으로 보면 이해가 쉽지만, 실제 파일은 내용은 열어서 확인 할 수 없다.
해결책1 : 파일을 날짜로 관리한다.
문제점2 : Archive redo log의 파일을 지워야 하는 상황이라면?
상황 = 백업받은 data file의 헤더에 [{SCN:4} ] 상황. Archive redo log file 1~100번까지 있다.
해결책2 : 지금 백업받는다. 백업받은 data file의 헤더 [{SCN:100} ] 상황이 된다.
▶ 백업파일 이전번호의 Archive redo log file은 지울 수 있다.
보통 : 3개월간의 백업파일은 보관한다.(백업테이프이용)
실습1 : archive redo log mode 로 변경하기
① DB종료 → ② 파라미터파일 수정 → ③ DB mount → ④ archive log mode 확인 및 변경 → ⑤ DB open
① DB종료
SQL> shutdown immediate;
② 파라미터파일 수정
$ vi inittestdb.ora
log_archive_dest_1='location=/data/arc1'
log_archive_dest_2='location=/data/arc2'
log_archive_format='%s_%t_%r.arc'
log_archive_start=true →
9i에서 무조건 추가(10g 무조건 쓰지말기)
※ 참고 : 파라미터파일에 아카이브 로그파일 이름 지정할때 옵션
%s : 로그 시퀀스 번호
%t : 쓰레드(thread) 번호, RAC일 경우 제외하고전부 1
%r : incarnation 번호
★ 중요
: archive log file 이 저장되는 경로지정을 안해주게 되면, db_recovery_file_dest에 지정된 위치로 설정이 된다.
이 디렉토리에는 1)flashback log와 2)rman backup file 이 저장되는데 추가로 3)archive redo log 가 저장되는 상황이 벌어진다.
오라클을 처음 설치하면 db_recovery_file_dest_size라는 파라미터로 기본 2G로 디렉토리용량이 잡히게 된다.
그 결과 얼마 안가서 archive hang이 발생하게 된다.
그러므로 꼭 파라미터파일 수정을 통해 archive log file이 저장되는 경로를 설정해 주어야 한다.
③ DB mount
SQL> startup mount
④ archive log mode 확인 및 변경
SQL> archive log list;
SQL> alter database archivelog;
⑤ DB open
SQL> alter database open;
------ 실습 할때 참고 해 보기 ------
= log switch 들어오면 arc파일 잘 생성되나 확인해보기 =
archive파일의 형태
/data/arc1/
98_1_762273838.arc
98_1_762358843.arc
~~~
~~~
9_1_762273838.arc
9_1_762358843.arc
○ archive log file 생성 잘 되나 확인 실습방법
[창1] [창2]
$ watch -n 1 'ls /data/arc1' $ watch -n 1 'ls /data/arc2'
띄워두고
※ 참고 : 각창별로 상황모니터링명령
$ watch -n 1 'ls /data/arc1' → 1초에 한번씩 ' '안의 명령어 시행해라.
[창3]
로그스위치 발생시켜보기
SQL> alter system switch logfile;
※ 스위치 발생 전에
SQL> archive log list; 로 상황 확인 해 보기
문제 : noarchive mode로 변경하라
답 :
파라미터파일에 경로 지정해 준건 따로 건드릴 필요없이
SQL> alter database noarchivelog;
실습2 : archive hang 발생 시 해결 방법
-발생-
① Archive hang 발생 (아카이브경로 /data/arc1, /data/arc2)
ⓐ방법 - 1 : Log switch 를 발생시켜 disk를 채운다.
ⓑ방법 - 2 : /data 디렉토리의 권한을 일시적으로 root.root로 바꾸어 사용자(oracle.dba) 권한으로는 쓰지 못하게 한다.
(=디스크가 가득 차서 더이상 못쓰는효과)
# chown -R root.root /data
② 로그 스위치 띄워서 archive hang 발생시키기
SQL> alter system switch logfile;
< Hang 발생 - 아무반응없는 상태 = DB 멈춤 >
-해결-
③ 여유공간 확보 후 확인
ⓐ방법 - 1 의 경우 :
$ df -h → 용량 상황 보기
$ vi /home/oracle/admin/testdb/bdump/alert_testdb.log → 제일 아래쪽으로 가기
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance testdb - Archival Error
ORA-16014: log 3 sequence# 18 not archived, no available destinations → 에러 확인
$ cd /data/arc1
$ rm -fr [1-3]* → 파일을 지워 여유공간 확보
$ df -h
SQL> alter system switch logfile; → 다시 로그스위치 발생 시켜보기
< 계속 Hang 이 걸려있다 >
ⓑ방법 - 2 의 경우
# chown -R oracle.dba /data → 권한 다시 oracle.dba에게 주기
SQL> alter system switch logfile; → 다시 로그스위치 발생 시켜보기
< 계속 Hang 이 걸려있다 >
④ DB 안끄고 archive hang 해결하기
: 파라미터 변경 후 archiver 재 시작
SQL> alter system set log_archive_dest_state_1=defer;
SQL> alter system set log_archive_dest_state_1=enable;
SQL> alter system set log_archive_dest_state_2=defer;
SQL> alter system set log_archive_dest_state_2=enable;
SQL> alter system archive log stop;
SQL> alter system archive log start;
SQL> alter system switch logfile; → 다시 로그스위치 발생 시켜보기
< 정상 작동 한다 - 시간 약간 소요 >
'Oracle > Oracle - 백업&복구' 카테고리의 다른 글
백업&복구 5 - parameter file 관련 장애 복구 (0) | 2012.01.31 |
---|---|
백업&복구 4 - Recovery 원리 (0) | 2012.01.31 |
백업&복구 Extra - 파일 경로 재배치 (Admin복습) (0) | 2012.01.31 |
백업&복구 3 - 닫힌백업 / 열린백업 (=begin backup) (0) | 2012.01.31 |
백업&복구 2 - sys 계정 암호 묻도록 설정하기 / Orapw 파일 삭제시 조치법 (0) | 2012.01.31 |