기본적인 대처 순서
1. Current 파일 / Current 아닌 파일 지웠는지 확인
2. 아카이브 파일 / 노 아카이브 파일을 지웠는지 확인
case1. Current 가 아닌 1개의 member 가 삭제되는 장애
얼럿로그 확인
-> 지워진 목록 drop
SYS> alter database drop logfile member '/data/backup/close/redo01_a.log';
-> 지워진 멤버 생성
SYS> alter database add logfile member '/data/backup/close/redo01_a.log' to group 1;
끝.
case2. Current 가 아닌 1개의 group 이 삭제되는 장애
얼럿로그 확인
-> 지워진 그룹 drop
SYS> alter database drop logfile group 1;
-> DB 오픈
SYS> alter database open;
-> 지워진 그룹과 멤버 생성
SYS> alter database add logfile group 1('/data/backup/close/redo01_a.log','/data/backup/close/redo01_b.log') size 50M;
끝.
(중요) case3. Current 가 아닌 그룹 중 archive 안 된 그룹이 삭제되었고 DB 상태는 Open
얼럿로그 확인
-> 장애가 발생하는 그룹 확인
-> Redo Log 초기화 및 신규생성
SYS> alter database clear unarchived logfile group 1;
끝.
※ 서버 운영 중 특정 그룹이 지워진 후 계속 log switch 가 발생하게 되면 Archive Hang 현상이 발생하여 중단되다가 강제로 비정상 종료됨. 그리고 오라클에서는 Archiving 을 순서대로 하기 때문에 한개의 그룹에서 아카이빙이 완료되지 않으면 그 다음 그룹의 로그파일 모두 아카이빙 되지 않는다. 계속 없는 그룹에 아카이빙을 시도하다보니 Hang 이 발생하게 되는 것이다. SEQ# 가장 작은 번호부터 정체가 시작.
case4. Current 가 아닌 그룹 중 archive 안 된 그룹이 삭제되었고 DB 상태는 Close
재시작시키면 에러 발생하면서 중단됨. ORA-03113 : end-of-file on communication channel
-> 얼럿로그 확인
-> 지워진 그룹 drop
SYS> alter database drop logfile group 1;
Archive 안 된 그룹은 삭제를 할 수 없다고 에러 메시지 나옴.
-> 초기화 및 재생성
SYS> alter database clear unarchived logfile group 1;
끝.
case5. Current 그룹이 삭제된 후 DB Open 상태
얼럿로그 메시지 확인해본다.
-> 삭제된 리두 로그 그룹 멤버를 찾을 수 없다는 에러 확인.
SYS> alter database clear unarchived logfile group 1;
끝.
case6. Current 그룹이 삭제된 경우 - Shutdown immediate 로 종료
Current 그룹이 삭제된 후 DB가 종료되었다면 정상 종료인지 비정상 종료인지에 따라 향후 재시작 시 심각한 문제가 될 수 있다. 먼저 shutdown immediate; 로 종료 한 경우.
-> 얼럿 로그 확인
->삭제된 그룹의 멤버를 찾을 수 없다는 에러 확인
-> 불완전 복구 후 리셋로그 옵션으로 오픈
SYS> recover database until cancel;
Media recovery complete.
SYS> alter database open resetlogs;
Database altered.
끝.
※ 원리를 아는 것이 매우 중요하다.
현재 상황은 Current 상태의 Redo log group 이 삭제된 후 shutdown immediate; 로 종료된 것이다. shutdown immediate; 란 DB 버퍼캐시에 있는 내용 중 commit 완료 된 내용은 데이터 파일로 전부 저장하고 commit 안 된 내용은 rollback 한 후 종료하는 것이다.
테스트용 테이블에 인서트 후 커밋 했기 때문에 shutdown immediate 한 순간 해당 내용은 데이터 파일에 저장 완료되었다. 그래서 사실 복구할 필요가 없다. 그런데 Current 상태의 Redo log file 이 없기때문에 Open 되지 않는다.
이럴 때 Control File 에는 명단이 있으나 실제 파일이 없는 Redo log 를 재생성시키는 resetlogs 옵션을 사용하는 것이다. 문제는 resetlogs 옵션은 불완전 복구를 수행했을 경우만 쓸 수 있다는 점.
'Oracle > admin' 카테고리의 다른 글
Oracle 11gR2 RAC 기동,중지 (0) | 2016.04.19 |
---|---|
SET SQLBLANKLINES ON (0) | 2016.04.07 |
Oracle 11gR2 NF: Auditing Enhancements (DBMS_AUDIT_MGMT) (0) | 2016.04.05 |
ORACLE11g alert.log 와 trace file 확인 (0) | 2016.04.05 |
테이블 삭제후 휴지통 관리 및 테이블 복원 (0) | 2015.09.14 |