"장애 유형별 복구 절차"의 두 판 사이의 차이
DB CAFE
(→Redo log group 손상,유실 - ACTIVE 상태) |
(→Spfile Restore) |
||
(같은 사용자의 중간 판 21개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | == DATABASE 장애 복구 절차 == | ||
+ | ==== Spfile Restore ==== | ||
+ | # 장애 유형별 복구 절차#[복구절차] spfile restore 참조 | ||
+ | |||
+ | ==== Control File Restore ==== | ||
+ | # 임시 복구된 spfile을 이용하여 db를 nomount로 기동한다. | ||
+ | #:<source lang=sql>SQL> startup nomount </source> | ||
+ | # 백업된 control file을 확인 | ||
+ | #:<source lang=sql>RMAN> list copy of controlfile </source> | ||
+ | # control file을 restore 한다 | ||
+ | #:<source lang=sql>RMAN> restore controlfile from '/ZFS/BACkup/../control_backup.ctl </source> | ||
+ | # db를 mount 한다. | ||
+ | #:<source lang=sql>SQL> alter database mount </source> | ||
+ | ==== Database Restore ==== | ||
+ | # 백업된 database 확인 | ||
+ | #:<source lang=sql>RMAN> list copy of database; </source> | ||
+ | # database를 restore 한다 | ||
+ | #:<source lang=sql>RMAN> restore database;</source> | ||
+ | ==== Archive Log Restore ==== | ||
+ | # 백업된 archive log 및 sequence를 확인한다. | ||
+ | #:<source lang=sql>RMAN> list backup of archivelog all by file; </source> | ||
+ | # 백업된 모든 archive log를 restore 한다. | ||
+ | #:<source lang=sql>RMAN> restore archivelog from sequence <LOG SEQ> thread <THREAD#>;</source> | ||
+ | #:* <THREAD#>은 db node 번호 , <LOG SEQ>는 thread 별 “SEQ”가 가장 낮은값 | ||
+ | ==== Database Recover ==== | ||
+ | # database 를 복구한다.(장애 발생 직전까지 불완전 복구) | ||
+ | #:<source lang=sql>SQL> recover database using backup controlfile until cancel;</source> | ||
+ | #:* "AUTO" 입력 | ||
+ | # database를 resetlog 모드로 OPEN 한다. | ||
+ | #:<source lang=sql>SQL> alter database open resetlogs; </source> | ||
+ | # spfile을 재생성한다. | ||
+ | #:<source lang=sql>SQL> create spfile='+DATA' from memory </source> | ||
+ | ---- | ||
+ | |||
== 장애 유형별 복구 절차 == | == 장애 유형별 복구 절차 == | ||
=== 파라미터 파일 손상,유실 - 디비 기동중 일때 === | === 파라미터 파일 손상,유실 - 디비 기동중 일때 === | ||
19번째 줄: | 53번째 줄: | ||
#:* 오류 없이 정상 기동 하는지 확인 | #:* 오류 없이 정상 기동 하는지 확인 | ||
− | === 파라미터 파일 장애 복구 절차 (RAC + ASM 환경 )=== | + | === [파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )=== |
− | ==== 장애발생 ==== | + | ==== [복구절차] 장애발생 ==== |
# 파라미터 파일이 손상되어 DB 기동 불가 확인. | # 파라미터 파일이 손상되어 DB 기동 불가 확인. | ||
− | ==== spfile restore ==== | + | ==== [복구절차] spfile restore ==== |
# 백업 영역에서 파라미터파일을 임시영역에 restore 한다 | # 백업 영역에서 파라미터파일을 임시영역에 restore 한다 | ||
#: <source lang=sql> RMAN> list backup of spfile </source> | #: <source lang=sql> RMAN> list backup of spfile </source> | ||
39번째 줄: | 73번째 줄: | ||
#: <source lang=sql>RMAN> shutdown immediate; </source> | #: <source lang=sql>RMAN> shutdown immediate; </source> | ||
− | ==== | + | ==== [복구절차] 파라미터 파일이용 DB기동 후 spfile 재생성 ==== |
− | # 임시영역의 | + | # 임시영역의 파라미터 파일을 이용하여 DB를 기동,spfile을 재생성한다. |
#:<source lang=sql>SQL> startup </source> | #:<source lang=sql>SQL> startup </source> | ||
#:<source lang=sql>SQL> create spfile='+DATA' from memory; </source> | #:<source lang=sql>SQL> create spfile='+DATA' from memory; </source> | ||
#:<source lang=sql>SQL> shutdown immediate; </source> | #:<source lang=sql>SQL> shutdown immediate; </source> | ||
− | ==== DB 기동 ==== | + | ==== [복구절차] DB 정상 기동 ==== |
# DB를 정상 기동한다. | # DB를 정상 기동한다. | ||
− | #:<source lang= | + | #:<source lang=bash>$ srvctl start database -d <DB_NAME> </source> |
---- | ---- | ||
+ | |||
=== control file 손상,유실 - 일부분 === | === control file 손상,유실 - 일부분 === | ||
# 장애 발생 확인 | # 장애 발생 확인 | ||
64번째 줄: | 99번째 줄: | ||
# 정상 기동 확인 | # 정상 기동 확인 | ||
#:* 오류없이 정상 기동 확인 | #:* 오류없이 정상 기동 확인 | ||
+ | |||
+ | === [Control File 장애 , 일부 ] 복구 절차 === | ||
+ | ==== [복구 절차] 장애 발생 ==== | ||
+ | # 3중화된 Control file 중 하나가 손상되어 DB기동 불가 확인 | ||
+ | |||
+ | ==== [복구 절차] DB기동(nomount) ==== | ||
+ | # DB를 nomount 상태로 기동한다. | ||
+ | #:<source lang=sql>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 손상,유실 - 전체 === | ||
84번째 줄: | 140번째 줄: | ||
#:* 오류없이 정상 기동 확인 | #:* 오류없이 정상 기동 확인 | ||
+ | === [Control File 장애 , 전체] 복구 절차 === | ||
+ | ==== [복구 절차] 장애 발생 ==== | ||
+ | # 3중화된 Control file 전체가 손상되어 DB기동 불가 확인 | ||
+ | ==== [복구 절차] DB기동(nomount) ==== | ||
+ | # DB를 nomount 상태로 기동한다. | ||
+ | #:<source lang=sql>startup nomount</source> | ||
+ | ==== [복구 절차] Control Restore(임시) ==== | ||
+ | # 백업 영역에서 Control File 을 임시로 restore 한다 | ||
+ | #:<source lang=sql>RMAN> list copy of controlfile;</source> | ||
+ | #:<source lang=sql>RMAN> restore controlfile from '/ZFS/BACKUP/DATA_<DB_NAME>_##/controlf_backup.ctl</source> | ||
+ | ==== [복구 절차] Control File 스크립트 추출 ==== | ||
+ | # 임시 Control File 로 부터 재생성 스크립트를 추출 한다. | ||
+ | #:<source lang=sql>SQL> startup mount;</source> | ||
+ | #:<source lang=sql>SQL> alter database backup control file to trace as '/oracle/noreset_crctl.sql'</source> | ||
+ | #:<source lang=sql>alter system set cluster_database=false scope=spfile;</source> | ||
+ | #:<source lang=sql>shutdown immediate;</source> | ||
+ | # Control File 생성 스크립트를 생성한다. | ||
+ | #:<source lang=sql>$ vi /oracle/noreset_ctctl.sql</source> | ||
+ | #:* "Set #2. RESETLOGS case" 이하 line을 모두 지우고 파일을 저장한다. | ||
+ | ==== [복구 절차] Control File 생성 ==== | ||
+ | # Control File 생성 스크립트를 실행한다. | ||
+ | #:<source lang=sql>SQL> @/oracle/noreset_ctcrl.sql</source> | ||
+ | # Control File 생성되고 DB가 기동 된다 | ||
+ | #:<source lang=sql>select name,open_mode from v$database;</source> | ||
+ | ==== [복구 절차] DB기동==== | ||
+ | # DB를 정상 기동한다. | ||
+ | #:<source lang=sql>SQL> alter system set cluster_database=true scope=spfile;</source> | ||
+ | #:<source lang=sql>SQL> shutdown immediate;</source> | ||
+ | #:<source lang=sql>$ srvctl start database -d <DB_NAME> </source> | ||
---- | ---- | ||
+ | |||
=== Redo log group 손상,유실 - ACTIVE 상태 === | === Redo log group 손상,유실 - ACTIVE 상태 === | ||
# 장애발생 | # 장애발생 | ||
98번째 줄: | 184번째 줄: | ||
# 정상 확인 | # 정상 확인 | ||
#:* log file 정상 switch 확인 | #:* log file 정상 switch 확인 | ||
+ | === [Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 ) === | ||
+ | ==== [복구절차] 장애 발생 ==== | ||
+ | # Active 한 상태의 Redo Log 그룹 전체파일이 손상되어 , DB 기동 불가 | ||
+ | ==== [복구절차] DB 기동(Mount) ==== | ||
+ | # DB를 mount 한다 | ||
+ | #: <source lang=sql>SQL> startup mount </source> | ||
+ | ==== [복구절차] Redo Log 복구 ==== | ||
+ | # 장애가 발생한 Redo Group을 Drop 한다. | ||
+ | #:<source lang=sql>SQL> alter database drop logfile group # </source> | ||
+ | # DB를 open 한다 | ||
+ | #: <source lang=sql>SQL> alter database open;</source> | ||
+ | # Drop된 Redo Group을 생성한다. | ||
+ | #: <source lang=sql>SQL> alter database add logfile thread # group # ('+DATA','+ARCH') size **MB;</source> | ||
=== Redo log group 손상,유실 - CURRENT 상태 === | === Redo log group 손상,유실 - CURRENT 상태 === | ||
113번째 줄: | 212번째 줄: | ||
# 정상 확인 | # 정상 확인 | ||
#:* log file 정상 switch 확인 | #:* log file 정상 switch 확인 | ||
+ | |||
+ | === [Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 ) === | ||
+ | ==== [복구절차] 장애 발생 ==== | ||
+ | # Current 상태의 Redo Log 그룹 전체파일이 손상되ㅓ , DB 기동불가 확인 | ||
+ | ==== [복구절차] DB 기동(mount) ==== | ||
+ | # DB를 mount 한다 | ||
+ | #: <source lang=sql> SQL> startup mount </source> | ||
+ | ==== [복구절차] DATABASE Restore ==== | ||
+ | # 백업된 DATABASE를 확인 한다. | ||
+ | #: <source lang=sql>RMAN> list copy of database;</source> | ||
+ | # DATABASE를 restore 한다 | ||
+ | #: <source lang=sql>RMAN> restore database;</source> | ||
+ | ==== [복구절차] Archivelog Restore ==== | ||
+ | # 백업된 archivelog 및 Sequence를 확인한다. | ||
+ | #: <source lang=sql>RMAN> list backup of archivelog all by file;</source> | ||
+ | # 백업된 모든 archivelog를 restore 한다 | ||
+ | #: <source lang=sql>RMAN> restore archivelog from sequence <LOGSEQ> thread <THREAD#>;</source> | ||
+ | #:* <THREAD#>는 db node 번호 , <LOG_SEQ>는 thread 별 “Seq”가 가장 낮은값 | ||
+ | ==== [복구절차] DATABASE Recover ==== | ||
+ | # database를 복구 한다.(장애 발생 직전까지 불완전 복구 실시) | ||
+ | #: <source lang=sql>SQL> recover database until cancel;</source> | ||
+ | #:* "AUTO" 입력 | ||
+ | # database를 resetlog 모드로 OPEN 한다 | ||
+ | #: <source lang=sql>SQL> alter database open resetlogs;</source> | ||
+ | ---- | ||
=== UNDO Tablespace 손상,유실 === | === UNDO Tablespace 손상,유실 === | ||
139번째 줄: | 263번째 줄: | ||
# 정상 확인 | # 정상 확인 | ||
#:* 읽기,쓰기가 정상인지 확인한다 | #:* 읽기,쓰기가 정상인지 확인한다 | ||
+ | |||
+ | === [데이터파일 삭제,손상 ] 복구 절차 === | ||
+ | ==== [복구절차] 장애 발생 ==== | ||
+ | # 특정 데이터 파일이 삭제되어 DATA 조회 불가 확인 | ||
+ | ==== [복구절차] DATA FILE Restore ==== | ||
+ | # 장애가 발생한 데이터 파일의 file id를 식별한다. | ||
+ | ## 오류 메시지 또는 alert log 에서 확인 | ||
+ | ## <code>RMAN> report schema</code> 로 확인 | ||
+ | # 장애가 발생한 datafile의 백업을 확인한다. | ||
+ | #:<source lang=sql>RMAN> list copy of datafile 111</source> | ||
+ | # 백업 영역에서 DATA FILE을 restore 한다. | ||
+ | #:<source lang=sql>RMAN> restore datafile 111</source> | ||
+ | ==== [복구절차] Archive Log Restore ==== | ||
+ | # DATA FILE 복구를 위한 Archive Log 를 확인한다. | ||
+ | #:<source lang=sql>RMAN> list copy of datafile 111</source> | ||
+ | #:* 복구시점은 "Ckp Time" | ||
+ | # DATA FILE 복구를 위한 Archive Log 파일을 restore 한다. | ||
+ | #:<source lang=sql>RMAN> restore archivelog from time='yyyy-mm-dd hh24miss'</source> | ||
+ | ==== [복구절차] DATA FILE Recover ==== | ||
+ | # DATA FILE 을 Recovery 한다. | ||
+ | #:<source lang=sql>SQL> recover datafile 111</source> | ||
+ | ==== [복구절차] DATA FILE ONLINE ==== | ||
+ | # 복구된 DATA FILE을 ONLINE 한다. | ||
+ | #:<source lang=sql>SQL> alter database datafile 111 online;</source> | ||
=== 사용자 실수에 의한 테이블 삭제 - Flashback === | === 사용자 실수에 의한 테이블 삭제 - Flashback === |
2024년 1월 22일 (월) 14:38 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
- 1 DATABASE 장애 복구 절차
- 2 장애 유형별 복구 절차
- 2.1 파라미터 파일 손상,유실 - 디비 기동중 일때
- 2.2 파라미터 파일 손상,유실 - 디비 중지 상태 일때
- 2.3 [파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )
- 2.4 control file 손상,유실 - 일부분
- 2.5 [Control File 장애 , 일부 ] 복구 절차
- 2.6 control file 손상,유실 - 전체
- 2.7 [Control File 장애 , 전체] 복구 절차
- 2.8 Redo log group 손상,유실 - ACTIVE 상태
- 2.9 [Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 )
- 2.10 Redo log group 손상,유실 - CURRENT 상태
- 2.11 [Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 )
- 2.12 UNDO Tablespace 손상,유실
- 2.13 데이터파일 손상,유실
- 2.14 [데이터파일 삭제,손상 ] 복구 절차
- 2.15 사용자 실수에 의한 테이블 삭제 - Flashback
- 2.16 사용자 실수에 의한 테이블 삭제 - 복구 환경
1 DATABASE 장애 복구 절차[편집]
1.1 Spfile Restore[편집]
- 장애 유형별 복구 절차#[복구절차] spfile restore 참조
1.2 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
1.3 Database Restore[편집]
- 백업된 database 확인
RMAN> list copy of database;
- database를 restore 한다
RMAN> restore database;
1.4 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”가 가장 낮은값
1.5 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
2 장애 유형별 복구 절차[편집]
2.1 파라미터 파일 손상,유실 - 디비 기동중 일때[편집]
- 장애발생 확인
- 파라미터 파일이 손상되어 변경정보를 파라미터 파일에 저장 할수 없다.
- 파일 복구 실시
- 메모리 설정값을 이용하여 파라미터 파일을 재생서우한다
- 정상 확인
- 오류 없이 파라미터가 변경되는지 확인
2.2 파라미터 파일 손상,유실 - 디비 중지 상태 일때[편집]
- 장애발생 확인
- 파라미터 파일이 손상되어 DB를 기동 할수 없다.
- 파일 복구 실시
- 백업된 파일에서 파라미터 파일을 찾는다.
- 백업 piece로 부터 파라미터파일을 restore 한다.
- DB 기동
- DB를 OPEN(force) 한다
- 정상 확인
- 오류 없이 정상 기동 하는지 확인
2.3 [파라미터 파일 장애 - 복구 절차] (19C + RAC + ASM 환경 )[편집]
2.3.1 [복구절차] 장애발생[편집]
- 파라미터 파일이 손상되어 DB 기동 불가 확인.
2.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;
2.3.3 [복구절차] 파라미터 파일이용 DB기동 후 spfile 재생성[편집]
- 임시영역의 파라미터 파일을 이용하여 DB를 기동,spfile을 재생성한다.
SQL> startup
SQL> create spfile='+DATA' from memory;
SQL> shutdown immediate;
2.3.4 [복구절차] DB 정상 기동[편집]
- DB를 정상 기동한다.
$ srvctl start database -d <DB_NAME>
2.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)를 오픈한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
2.5 [Control File 장애 , 일부 ] 복구 절차[편집]
2.5.1 [복구 절차] 장애 발생[편집]
- 3중화된 Control file 중 하나가 손상되어 DB기동 불가 확인
2.5.2 [복구 절차] DB기동(nomount)[편집]
- DB를 nomount 상태로 기동한다.
SQL> startup nomount
2.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'
2.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;
2.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) 한다.
- 정상 기동 확인
- 오류없이 정상 기동 확인
2.7 [Control File 장애 , 전체] 복구 절차[편집]
2.7.1 [복구 절차] 장애 발생[편집]
- 3중화된 Control file 전체가 손상되어 DB기동 불가 확인
2.7.2 [복구 절차] DB기동(nomount)[편집]
- DB를 nomount 상태로 기동한다.
startup nomount
2.7.3 [복구 절차] Control Restore(임시)[편집]
- 백업 영역에서 Control File 을 임시로 restore 한다
RMAN> list copy of controlfile;
RMAN> restore controlfile from '/ZFS/BACKUP/DATA_<DB_NAME>_##/controlf_backup.ctl
2.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을 모두 지우고 파일을 저장한다.
2.7.5 [복구 절차] Control File 생성[편집]
- Control File 생성 스크립트를 실행한다.
SQL> @/oracle/noreset_ctcrl.sql
- Control File 생성되고 DB가 기동 된다
select name,open_mode from v$database;
2.7.6 [복구 절차] DB기동[편집]
- DB를 정상 기동한다.
SQL> alter system set cluster_database=true scope=spfile;
SQL> shutdown immediate;
$ srvctl start database -d <DB_NAME>
2.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 확인
2.9 [Redo Log 파일 장애 ,Active 상태 - 복구 절차 ] (19C + RAC + ASM 환경 )[편집]
2.9.1 [복구절차] 장애 발생[편집]
- Active 한 상태의 Redo Log 그룹 전체파일이 손상되어 , DB 기동 불가
2.9.2 [복구절차] DB 기동(Mount)[편집]
- DB를 mount 한다
SQL> startup mount
2.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;
2.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 확인
2.11 [Redo log 파일 장애 , CURRENT 상태 - 복구절차] (19C + RAC + ASM 환경 )[편집]
2.11.1 [복구절차] 장애 발생[편집]
- Current 상태의 Redo Log 그룹 전체파일이 손상되ㅓ , DB 기동불가 확인
2.11.2 [복구절차] DB 기동(mount)[편집]
- DB를 mount 한다
SQL> startup mount
2.11.3 [복구절차] DATABASE Restore[편집]
- 백업된 DATABASE를 확인 한다.
RMAN> list copy of database;
- DATABASE를 restore 한다
RMAN> restore database;
2.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”가 가장 낮은값
2.11.5 [복구절차] DATABASE Recover[편집]
- database를 복구 한다.(장애 발생 직전까지 불완전 복구 실시)
SQL> recover database until cancel;
- "AUTO" 입력
- database를 resetlog 모드로 OPEN 한다
SQL> alter database open resetlogs;
2.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 정상 오픈 한다
2.13 데이터파일 손상,유실[편집]
- 장애발생
- 데이터파일 손상으로 데이타 읽기,쓰기 오류 발생
- 데이터파일 오프라인
- alert log에서 장애파일 확인
- 장애가 발생한 데이터파일 오프라인 처리
- 데이터파일 복구
- 백업본에서 장애가 발생한 데이터파일 restore
- 데이터파일 복구(media recovery)한다
- 정상 확인
- 읽기,쓰기가 정상인지 확인한다
2.14 [데이터파일 삭제,손상 ] 복구 절차[편집]
2.14.1 [복구절차] 장애 발생[편집]
- 특정 데이터 파일이 삭제되어 DATA 조회 불가 확인
2.14.2 [복구절차] DATA FILE Restore[편집]
- 장애가 발생한 데이터 파일의 file id를 식별한다.
- 오류 메시지 또는 alert log 에서 확인
RMAN> report schema
로 확인
- 장애가 발생한 datafile의 백업을 확인한다.
RMAN> list copy of datafile 111
- 백업 영역에서 DATA FILE을 restore 한다.
RMAN> restore datafile 111
2.14.3 [복구절차] 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'
2.14.4 [복구절차] DATA FILE Recover[편집]
- DATA FILE 을 Recovery 한다.
SQL> recover datafile 111
2.14.5 [복구절차] DATA FILE ONLINE[편집]
- 복구된 DATA FILE을 ONLINE 한다.
SQL> alter database datafile 111 online;
2.15 사용자 실수에 의한 테이블 삭제 - Flashback[편집]
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 가능한 상태
- 테이블 복구
flashback table [테이블명] to before drop
- 정상확인
- 삭제된 테이블 정상 조회 확인
2.16 사용자 실수에 의한 테이블 삭제 - 복구 환경[편집]
- 장애발생
- 사용자 실수로 테이블 삭제, 테이블 조회 불가한 상태, flashback은 불가능한 상태
- 복구DB 환경구성
- 백업서버등 임시환경에서 복구DB 구성
- 운영DB spfile,control file,아카이브파일을 복구DB로 전송한다
- 벡업본으로 데이터파일을 restore 한다
- 테이블 복구
- 테이블 삭제 이전 시점까지 복구 수행
recover database until time ...
- 복구된 테이블을 운영 DB로 이관한다
- 정상확인
- 삭제된 테이블 정상 조회 확인