"장애 유형별 복구 절차"의 두 판 사이의 차이
DB CAFE
(→[Control File 장애 , 전체]) |
(→control file 손상,유실 - 일부분) |
||
65번째 줄: | 65번째 줄: | ||
# 정상 기동 확인 | # 정상 기동 확인 | ||
#:* 오류없이 정상 기동 확인 | #:* 오류없이 정상 기동 확인 | ||
+ | |||
+ | === [Control File 장애 , 일부 ] === | ||
+ | ==== [복구 절차] 장애 발생 ==== | ||
+ | # 3중화된 Control file 중 하나가 손상되어 DB기동 불가 확인 | ||
+ | ==== [복구 절차] DB기동(nomount) ==== | ||
+ | # DB를 nomount 상태로 기동한다. | ||
+ | #:<source lang=sql>startup nomount</source> | ||
+ | ==== [복구 절차] Control File 복제 ==== | ||
+ | # RMAN을 이용 정상 Control File을 신규 Control File 로 복제한다. | ||
+ | #:* asmcmd 명령을 이용하여 정상 Control File의 파일명을 찾는다. | ||
+ | # 복제시 output 파일명을 별도로 기록해 둔다. | ||
+ | #:<source lang=sql>RMAN> restore controlfile to '+ARCH' from '+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.123.123456789'</source> | ||
+ | ==== [복구 절차] DB기동==== | ||
+ | # 복제된 Control File을 파라미터 파일에 적용한다. | ||
+ | # 정상 Control File명과 별도로 기록한 Control File을 파라미터 파일에 적용한다. | ||
+ | #:<source lang=sql>SQL> alter system set control_files='+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.123.123456789','+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.456.123456789','+ARCH/<DB_UNIQUENAME>/CONTROLFILE/current.789.123456789' scope=spfile;</source> | ||
+ | # DB를 force option 으로 기동한다. | ||
+ | #:<source lang=sql>SQL> startup force;</source> | ||
=== control file 손상,유실 - 전체 === | === control file 손상,유실 - 전체 === |
2024년 1월 22일 (월) 13:41 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
- 1 장애 유형별 복구 절차
- 1.1 파라미터 파일 손상,유실 - 디비 기동중 일때
- 1.2 파라미터 파일 손상,유실 - 디비 중지 상태 일때
- 1.3 [파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )
- 1.4 control file 손상,유실 - 일부분
- 1.5 [Control File 장애 , 일부 ]
- 1.6 control file 손상,유실 - 전체
- 1.7 [Control File 장애 , 전체]
- 1.8 Redo log group 손상,유실 - ACTIVE 상태
- 1.9 [Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 )
- 1.10 Redo log group 손상,유실 - CURRENT 상태
- 1.11 [Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 )
- 1.12 UNDO Tablespace 손상,유실
- 1.13 데이터파일 손상,유실
- 1.14 사용자 실수에 의한 테이블 삭제 - Flashback
- 1.15 사용자 실수에 의한 테이블 삭제 - 복구 환경
1 장애 유형별 복구 절차[편집]
1.1 파라미터 파일 손상,유실 - 디비 기동중 일때[편집]
- 장애발생 확인
- 파라미터 파일이 손상되어 변경정보를 파라미터 파일에 저장 할수 없다.
- 파일 복구 실시
- 메모리 설정값을 이용하여 파라미터 파일을 재생서우한다
- 정상 확인
- 오류 없이 파라미터가 변경되는지 확인
1.2 파라미터 파일 손상,유실 - 디비 중지 상태 일때[편집]
- 장애발생 확인
- 파라미터 파일이 손상되어 DB를 기동 할수 없다.
- 파일 복구 실시
- 백업된 파일에서 파라미터 파일을 찾는다.
- 백업 piece로 부터 파라미터파일을 restore 한다.
- DB 기동
- DB를 OPEN(force) 한다
- 정상 확인
- 오류 없이 정상 기동 하는지 확인
1.3 [파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )[편집]
1.3.1 [복구절차] 장애발생[편집]
- 파라미터 파일이 손상되어 DB 기동 불가 확인.
1.3.2 [복구절차] spfile restore[편집]
- 백업 영역에서 파라미터파일을 임시영역에 restore 한다
RMAN> list backup of spfile
- Log directory 에서 Db ID를 검색 한다.
cat *.trc|grep 'Db ID='
cat *.log|grep 'DBID'
- 백업파일에서 Db ID 를 식별한다.
ls -al /ZFS/BACKUP/DATA_<DB_NAME>_01/DCH1
==> data_D-DB_TESTI-123456789_TS-TEST......
==> dbid는 123456789 이다
- DBID를 설정하고 db를 nomount 상태로 기동한다.
RMAN> set dbid 123456789
RMAN> startup force nomount
- 임시영역으로 spfile을 restore 한다
RMAN> restore spfile to '/oracle/app/product/19.3.0/dbs/spfile/<ORACLE_SID>.ora' from '/ZFS/BACKUP/DATA_<DB_NAME>_##/<channel#>/<BACKUPFILE>'
RMAN> shutdown immediate;
1.3.3 [복구절차] 파라미터 파일이용 DB기동 후 spfile 재생성[편집]
- 임시영역의 파라미터 파일을 이용하여 DB를 기동,spfile을 재생성한다.
SQL> startup
SQL> create spfile='+DATA' from memory;
SQL> shutdown immediate;
1.3.4 [복구절차] DB 정상 기동[편집]
- DB를 정상 기동한다.
srvctl start database -d <DB_NAME>
1.4 control file 손상,유실 - 일부분[편집]
- 장애 발생 확인
- 3중화된 control file 중 하나가 손상되 인스턴스가 비정상 상태임.
- DB 종료
- control file 복구를 위해 DB 종료
- Control file 복사
- 파라미터 파일에서 control file 이름 확인
- nomount 상태로 DB 기동
- rman 명령어로 정상 control file로 부터 새로운 control file을 복사한다.
- DB 파라미터 변경
- 신규 생성된 control file 이름을 파라미터 파일에 적용한다(ASM)
- DB 기동
- DB(force)를 오픈한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
1.5 [Control File 장애 , 일부 ][편집]
1.5.1 [복구 절차] 장애 발생[편집]
- 3중화된 Control file 중 하나가 손상되어 DB기동 불가 확인
1.5.2 [복구 절차] DB기동(nomount)[편집]
- DB를 nomount 상태로 기동한다.
startup nomount
1.5.3 [복구 절차] Control File 복제[편집]
- RMAN을 이용 정상 Control File을 신규 Control File 로 복제한다.
- asmcmd 명령을 이용하여 정상 Control File의 파일명을 찾는다.
- 복제시 output 파일명을 별도로 기록해 둔다.
RMAN> restore controlfile to '+ARCH' from '+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.123.123456789'
1.5.4 [복구 절차] DB기동[편집]
- 복제된 Control File을 파라미터 파일에 적용한다.
- 정상 Control File명과 별도로 기록한 Control File을 파라미터 파일에 적용한다.
SQL> alter system set control_files='+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.123.123456789','+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.456.123456789','+ARCH/<DB_UNIQUENAME>/CONTROLFILE/current.789.123456789' scope=spfile;
- DB를 force option 으로 기동한다.
SQL> startup force;
1.6 control file 손상,유실 - 전체[편집]
- 장애 발생 확인
- 3중화된 control file 전체가 손상되 인스턴스가 비정상 상태임.
- DB 종료
- control file 복구를 위해 DB 종료
- Control file 복사
- nomount 상태로 DB 기동
- 백업된 control file 을 확인.
- control file을 restore 한다.
- 블완전 복구 실시
- DB를 mount 한다
- 백업본으로 부터 데이터 파일을 restore 한다.
- control file을 이용하여 블완전 복구를 수행한다.
recover database using backup controlfile
- DB 기동
- DB를 OPEN(resetlogs) 한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
1.7 [Control File 장애 , 전체][편집]
1.7.1 [복구 절차] 장애 발생[편집]
- 3중화된 Control file 전체가 손상되어 DB기동 불가 확인
1.7.2 [복구 절차] DB기동(nomount)[편집]
- DB를 nomount 상태로 기동한다.
startup nomount
1.7.3 [복구 절차] Control Restore(임시)[편집]
- 백업 영역에서 Control File 을 임시로 restore 한다
RMAN> list copy of controlfile;
RMAN> restore controlfile from '/ZFS/BACKUP/DATA_<DB_NAME>_##/controlf_backup.ctl
1.7.4 [복구 절차] Control File 스크립트 추출[편집]
- 임시 Control File 로 부터 재생성 스크립트를 추출 한다.
SQL> startup mount;
SQL> alter database backup control file to trace as '/oracle/noreset_crctl.sql'
alter system set cluster_database=false scope=spfile;
shutdown immediate;
- Control File 생성 스크립트를 생성한다.
$ vi /oracle/noreset_ctctl.sql
- "Set #2. RESETLOGS case" 이하 line을 모두 지우고 파일을 저장한다.
1.7.5 [복구 절차] Control File 생성[편집]
- Control File 생성 스크립트를 실행한다.
SQL> @/oracle/noreset_ctcrl.sql
- Control File 생성되고 DB가 기동 된다
select name,open_mode from v$database;
1.7.6 [복구 절차] DB기동[편집]
- DB를 정상 기동한다.
SQL> alter system set cluster_database=true scope=spfile;
SQL> shutdown immediate;
$ srvctl start database -d <DB_NAME>
1.8 Redo log group 손상,유실 - ACTIVE 상태[편집]
- 장애발생
- Active 상태의 redo log group 멤버 전체 파일이 손상되어 log file switch 불가 , 아카이브 hang 발생후 비정상 종료 됨
- DB 마운트
- 복구를 위해 DB를 마운트 한다.
- 장애가 발생한 redo log group 번호를 alert로그 파일에서 확인 한다.
- redo log file 초기화
- 장애가 발생한 redo log group을 초기화 한다.
alter database clear unarchived logfile group #
- DB 기동
- DB를 OPEN 한다.
- 정상 확인
- log file 정상 switch 확인
1.9 [Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 )[편집]
1.9.1 [복구절차] 장애 발생[편집]
- Active 한 상태의 Redo Log 그룹 전체파일이 손상되어 , DB 기동 불가
1.9.2 [복구절차] DB 기동(Mount)[편집]
- DB를 mount 한다
SQL> startup mount
1.9.3 [복구절차] Redo Log 복구[편집]
- 장애가 발생한 Redo Group을 Drop 한다.
SQL> alter database drop logfile group #
- DB를 open 한다
SQL> alter database open;
- Drop된 Redo Group을 생성한다.
SQL> alter database add logfile thread # group # ('+DATA','+ARCH') size **MB;
1.10 Redo log group 손상,유실 - CURRENT 상태[편집]
- 장애발생
- CURRENT 상태의 redo log group 전체 파일이 손상되어 log file switch 불가 , 비정상 종료 됨
- DB 마운트/데이터파일 restore
- 복구를 위해 DB를 마운트 한다.
- 백업파일에서 데이터파일과 control file을 restore 한다.
- 블완전 복구
- 불완전 복구를 수행한다
- 손상된 redo log group 의 종료전 sequence 이전까지 블완전 복구를 수행한다.
recover database until cancel
- DB 기동
- DB를 OPEN (resetlogs)한다.
- 정상 확인
- log file 정상 switch 확인
1.11 [Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 )[편집]
1.11.1 [복구절차] 장애 발생[편집]
- Current 상태의 Redo Log 그룹 전체파일이 손상되ㅓ , DB 기동불가 확인
1.11.2 [복구절차] DB 기동(mount)[편집]
- DB를 mount 한다
SQL> startup mount
1.11.3 [복구절차] DATABASE Restore[편집]
- 백업된 DATABASE를 확인 한다.
RMAN> list copy of database;
- DATABASE를 restore 한다
RMAN> restore database;
1.11.4 [복구절차] Archivelog Restore[편집]
- 백업된 archivelog 및 Sequence를 확인한다.
RMAN> list backup of archivelog all by file;
- 백업된 모든 archivelog를 restore 한다
RMAN> restore archivelog from sequence <LOGSEQ> thread <THREAD#>;
- <THREAD#>는 db node 번호 , <LOG_SEQ>는 thread 별 “Seq”가 가장 낮은값
1.11.5 [복구절차] DATABASE Recover[편집]
- database를 복구 한다.(장애 발생 직전까지 불완전 복구 실시)
SQL> recover database until cancel;
- "AUTO" 입력
- database를 resetlog 모드로 OPEN 한다
SQL> alter database open resetlogs;
1.12 UNDO Tablespace 손상,유실[편집]
- 장애발생
- 롤백세그먼트 사용중인 UNDO Tablespace에 손상이 발생하여 UNDO Tablespace사용이 불가하고 신규 Tablespace 생성중 오류 발생
- 임시 파라미터 적용
- 복구를 위해 임시 파라미터를 적용
- UNDO Tablespace 강제로 offline 시킴
alter database datafile [...] offline drop
- UNDO Tablespace 삭제
- 기존 UNDO Tablespace를 drop 한다
drop tablespace [undotbs01] include contents and datafiles
- DB 정상 오픈
- 복구를 위해 임시 적용된 파라미터를 원복한다
- DB 정상 오픈 한다
1.13 데이터파일 손상,유실[편집]
- 장애발생
- 데이터파일 손상으로 데이타 읽기,쓰기 오류 발생
- 데이터파일 오프라인
- alert log에서 장애파일 확인
- 장애가 발생한 데이터파일 오프라인 처리
- 데이터파일 복구
- 백업본에서 장애가 발생한 데이터파일 restore
- 데이터파일 복구(media recovery)한다
- 정상 확인
- 읽기,쓰기가 정상인지 확인한다
1.14 사용자 실수에 의한 테이블 삭제 - Flashback[편집]
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 가능한 상태
- 테이블 복구
flashback table [테이블명] to before drop
- 정상확인
- 삭제된 테이블 정상 조회 확인
1.15 사용자 실수에 의한 테이블 삭제 - 복구 환경[편집]
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 불가능한 상태
- 복구DB 환경구성
- 백업서버등 임시환경에서 복구DB 구성
- 운영DB spfile,control file,아카이브파일을 복구DB로 전송한다
- 벡업본으로 데이터파일을 restore 한다
- 테이블 복구
- 테이블 삭제 이전 시점까지 복구 수행
recover database until time ...
- 복구된 테이블을 운영 DB로 이관한다
- 정상확인
- 삭제된 테이블 정상 조회 확인