다른 명령
DATABASE 장애 복구 절차
Spfile Restore
- 장애 유형별 복구 절차#[복구절차] spfile restore 참조
Control File Restore
- 임시 복구된 spfile을 이용하여 db를 nomount로 기동한다.
SQL> startup nomount
- 백업된 control file을 확인
RMAN> list copy of controlfile
- control file을 restore 한다
RMAN> restore controlfile from '/ZFS/BACkup/../control_backup.ctl
- db를 mount 한다.
SQL> alter database mount
Database Restore
- 백업된 database 확인
RMAN> list copy of database;
- database를 restore 한다
RMAN> restore database;
Archive Log Restore
- 백업된 archive log 및 sequence를 확인한다.
RMAN> list backup of archivelog all by file;
- 백업된 모든 archive log를 restore 한다.
RMAN> restore archivelog from sequence <LOG SEQ> thread <THREAD#>;
- <THREAD#>은 db node 번호 , <LOG SEQ>는 thread 별 “SEQ”가 가장 낮은값
Database Recover
- database 를 복구한다.(장애 발생 직전까지 불완전 복구)
SQL> recover database using backup controlfile until cancel;
- "AUTO" 입력
- database를 resetlog 모드로 OPEN 한다.
SQL> alter database open resetlogs;
- spfile을 재생성한다.
SQL> create spfile='+DATA' from memory
장애 유형별 복구 절차
파라미터 파일 손상,유실 - 디비 기동중 일때
- 장애발생 확인
- 파라미터 파일이 손상되어 변경정보를 파라미터 파일에 저장 할수 없다.
- 파일 복구 실시
- 메모리 설정값을 이용하여 파라미터 파일을 재생서우한다
- 정상 확인
- 오류 없이 파라미터가 변경되는지 확인
파라미터 파일 손상,유실 - 디비 중지 상태 일때
- 장애발생 확인
- 파라미터 파일이 손상되어 DB를 기동 할수 없다.
- 파일 복구 실시
- 백업된 파일에서 파라미터 파일을 찾는다.
- 백업 piece로 부터 파라미터파일을 restore 한다.
- DB 기동
- DB를 OPEN(force) 한다
- 정상 확인
- 오류 없이 정상 기동 하는지 확인
[파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )
[복구절차] 장애발생
- 파라미터 파일이 손상되어 DB 기동 불가 확인.
[복구절차] 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;
[복구절차] 파라미터 파일이용 DB기동 후 spfile 재생성
- 임시영역의 파라미터 파일을 이용하여 DB를 기동,spfile을 재생성한다.
SQL> startup
SQL> create spfile='+DATA' from memory;
SQL> shutdown immediate;
[복구절차] DB 정상 기동
- DB를 정상 기동한다.
$ srvctl start database -d <DB_NAME>
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)를 오픈한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
[Control File 장애 , 일부 ] 복구 절차
[복구 절차] 장애 발생
- 3중화된 Control file 중 하나가 손상되어 DB기동 불가 확인
[복구 절차] DB기동(nomount)
- DB를 nomount 상태로 기동한다.
SQL> startup nomount
[복구 절차] Control File 복제
- RMAN을 이용 정상 Control File을 신규 Control File 로 복제한다.
- asmcmd 명령을 이용하여 정상 Control File의 파일명을 찾는다.
- 복제시 output 파일명을 별도로 기록해 둔다.
RMAN> restore controlfile to '+ARCH' from '+DATA/<DB_UNIQUENAME>/CONTROLFILE/current.123.123456789'
[복구 절차] 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;
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) 한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
[Control File 장애 , 전체] 복구 절차
[복구 절차] 장애 발생
- 3중화된 Control file 전체가 손상되어 DB기동 불가 확인
[복구 절차] DB기동(nomount)
- DB를 nomount 상태로 기동한다.
startup nomount
[복구 절차] Control Restore(임시)
- 백업 영역에서 Control File 을 임시로 restore 한다
RMAN> list copy of controlfile;
RMAN> restore controlfile from '/ZFS/BACKUP/DATA_<DB_NAME>_##/controlf_backup.ctl
[복구 절차] 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을 모두 지우고 파일을 저장한다.
[복구 절차] Control File 생성
- Control File 생성 스크립트를 실행한다.
SQL> @/oracle/noreset_ctcrl.sql
- Control File 생성되고 DB가 기동 된다
select name,open_mode from v$database;
[복구 절차] DB기동
- DB를 정상 기동한다.
SQL> alter system set cluster_database=true scope=spfile;
SQL> shutdown immediate;
$ srvctl start database -d <DB_NAME>
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 확인
[Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 )
[복구절차] 장애 발생
- Active 한 상태의 Redo Log 그룹 전체파일이 손상되어 , DB 기동 불가
[복구절차] DB 기동(Mount)
- DB를 mount 한다
SQL> startup mount
[복구절차] 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;
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 확인
[Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 )
[복구절차] 장애 발생
- Current 상태의 Redo Log 그룹 전체파일이 손상되ㅓ , DB 기동불가 확인
[복구절차] DB 기동(mount)
- DB를 mount 한다
SQL> startup mount
[복구절차] DATABASE Restore
- 백업된 DATABASE를 확인 한다.
RMAN> list copy of database;
- DATABASE를 restore 한다
RMAN> restore database;
[복구절차] 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”가 가장 낮은값
[복구절차] DATABASE Recover
- database를 복구 한다.(장애 발생 직전까지 불완전 복구 실시)
SQL> recover database until cancel;
- "AUTO" 입력
- database를 resetlog 모드로 OPEN 한다
SQL> alter database open resetlogs;
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 정상 오픈 한다
데이터파일 손상,유실
- 장애발생
- 데이터파일 손상으로 데이타 읽기,쓰기 오류 발생
- 데이터파일 오프라인
- alert log에서 장애파일 확인
- 장애가 발생한 데이터파일 오프라인 처리
- 데이터파일 복구
- 백업본에서 장애가 발생한 데이터파일 restore
- 데이터파일 복구(media recovery)한다
- 정상 확인
- 읽기,쓰기가 정상인지 확인한다
[데이터파일 삭제,손상 ] 복구 절차
[복구절차] 장애 발생
- 특정 데이터 파일이 삭제되어 DATA 조회 불가 확인
[복구절차] DATA FILE Restore
- 장애가 발생한 데이터 파일의 file id를 식별한다.
- 오류 메시지 또는 alert log 에서 확인
RMAN> report schema
로 확인
- 장애가 발생한 datafile의 백업을 확인한다.
RMAN> list copy of datafile 111
- 백업 영역에서 DATA FILE을 restore 한다.
RMAN> restore datafile 111
[복구절차] Archive Log Restore
- DATA FILE 복구를 위한 Archive Log 를 확인한다.
RMAN> list copy of datafile 111
- 복구시점은 "Ckp Time"
- DATA FILE 복구를 위한 Archive Log 파일을 restore 한다.
RMAN> restore archivelog from time='yyyy-mm-dd hh24miss'
[복구절차] DATA FILE Recover
- DATA FILE 을 Recovery 한다.
SQL> recover datafile 111
[복구절차] DATA FILE ONLINE
- 복구된 DATA FILE을 ONLINE 한다.
SQL> alter database datafile 111 online;
사용자 실수에 의한 테이블 삭제 - Flashback
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 가능한 상태
- 테이블 복구
flashback table [테이블명] to before drop
- 정상확인
- 삭제된 테이블 정상 조회 확인
사용자 실수에 의한 테이블 삭제 - 복구 환경
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 불가능한 상태
- 복구DB 환경구성
- 백업서버등 임시환경에서 복구DB 구성
- 운영DB spfile,control file,아카이브파일을 복구DB로 전송한다
- 벡업본으로 데이터파일을 restore 한다
- 테이블 복구
- 테이블 삭제 이전 시점까지 복구 수행
recover database until time ...
- 복구된 테이블을 운영 DB로 이관한다
- 정상확인
- 삭제된 테이블 정상 조회 확인