백업&복구 10 - 불완전 복구 실습 - drop tablespace로 잘못 삭제된 tablespace 복구
Oracle/Oracle - 백업&복구 2012. 2. 5. 01:03Cf) drop table 의 경우 복구원리
[recover → control file → data file → redo / archive log file]
의 순서로 읽어들여서 복구
: recover가 시작되면 컨트롤파일에서 checkpoint 정보를 확인 한 후
DATAFILE을 찾아가서그 정보가 동일한지 확인하게 되는데,
DATAFILE의 위치는 컨트롤파일에서 읽고간다.
상황 : 3일에 drop tablespace TS_A 명령으로 테이블스페이스를 삭제하여 4일에는 존재하지 않는 상황.
○ drop tablespace의 경우
: drop tablespace 명령의 경우, 컨트롤파일안에 있는 해당 테이블스페이스의 정보를 삭제해 버린다.
(컨트롤파일에 등록되지 않은 테이블스페이스는 복구대상이 아님.
- 파일은 있어도, 컨트롤파일안에 테이블스페이스 정보가 없기때문에 고치지 않는다.)
그 결과 drop tablespace명령 이후의 컨트롤 파일에는 해당 테이블스페이스 정보가 없어서 복구할수 없다.
해결 : drop tablespace로 삭제된 테이블스페이스를 복구해 내려면 컨트롤파일에 해당 테이블스페이스의 정보가 있어야 한다.
① 백업된 컨트롤 파일을 이용해서 복구
- 문제점 : DATAFILE, 컨트롤파일의 SCN은 백업시점으로 동일하나, Redo log의 SCN은 최신이기 때문에 recover가 안된다.
using backup controlfile 옵션사용해서 컨트롤파일의 SCN을 무시하고 복구한다.
- drop tablespace의 삭제시간 찾기
: alert_testdb.log에 drop tablespace 정보(시간)가 기록된다.
Ex) /home/oracle/admin/testdb/bdump/alert_testdb.log 내용
Fri Jan 22 08:30:15 2010
drop tablespace test including contents and datafiles
Fri Jan 22 08:30:19 2010
Deleted file /home/oracle/oradata/testdb/test01.dbf
Completed: drop tablespace test including contents and datafiles
② (뒷장에서살펴볼) 테이블스페이스 정보를 redo / archive log 파일을 이용하여 강제로 컨트롤파일에 등록
실습
① 백업된 컨트롤 파일을 이용해서 복구
- DATAFILE (백업본)
- Control file (백업본)
- redo log (현재 사용본)
1. 백업받기 (기존 test 테이블스페이스 존재해야함. 파일:test01.dbf)
2. 장애발생
SYS> create table scott.test06 (no number) tablespace test;
SYS> inset into scott.test06 values (6);
SYS> commit;
SYS> select * from scott.test06;
SYS> select to_char(sysdate, 'YYYY-MM-DD:HH24:MI:SS') from dual;
복구에 사용될 시간
SYS> drop tablespace test including contents anddatafiles;
SYS> select * from scott.test06;
에러
3. 복구사전 작업
임시경로 : /home/oracle/temp/
# 백업 DATAFILE 복사 (필요한 system01.dbf, sysaux01.dbf, undotbs01.dbf, test01.dbf 파일만 복원)
# 백업 컨트롤파일 복사
# 최근 사용 redo log 복사
- DB mount에서 파일경로 변경, 복구안할 테이블스페이스 offline drop
4. 복구하기
SYS> recover database until time '시간' using backup controlfile;
SYS> alter database open resetlogs;
SYS> select a.name TS_NAME, b.name FILE_NAME, b.bytes/1024/1024 MB, b.status
2 from v$tablespace a, b$datafile b
3 where a.ts#=b.ts#;
SYS> select * from scott.test06;
복구완료
'Oracle > Oracle - 백업&복구' 카테고리의 다른 글
백업&복구 11 - drop tablespace 복구 / log miner 간단 사용 (0) | 2012.02.07 |
---|---|
백업&복구 Extra - 스크립트 : datafile rename 작업 편하게 하기 / 로그마이너 (0) | 2012.02.07 |
백업&복구 9.2 - 불완전복구 시간기반 실습추가 - Archive log mode 장애복구 (0) | 2012.02.04 |
백업&복구 9 - 불완전복구 시간기반 - Archive log mode 장애복구 (4) | 2012.02.02 |
백업&복구 8 - Archive log mode 장애복구 - 완전복구 (0) | 2012.02.02 |