관련 파라미터 값들
undo_management: 언두 관리 방식
- auto
오라클이 자동으로 관리, STARTUP 할 때 undo datafile의 무결성을 확인해,
장애가 있을 경우는 DB OPEN 실패
- manual
DBA가 수동으로 관리, STARTUP 할 때 undo datafile의 무결성을 확인하지 않음,
그래서 undo datafile이 없어도 OPEN 가능하다
undo에 장애가 발생했을 때 manual로 값을 수정한 후 복구 작업.
undo_tablespace: undo의 테이블 스페이스 지정
undo tablespace 변경을 원할 때는
> alter system set undo_tablespace='새언두테이블스페이스이름' ;
영구적으로 계속 사용하고 싶다면 parameter file 에서 수정을 해줘야 한다. (실습참고)
undo_retention: undo 에서의 데이터 보유시간 설정
undo 정보 조회
> show parameter undo ;
사용중인 Rollback Segment 확인하는 방법
SELECT s.sid, s.serial#, s.username, r.name "ROLLBACK SEG"
FROM v$session s, v$transaction t, v$rollname r
WHERE s.taddr = t.addr
AND t.xidusn = r.usn ;
commit 안된 데이터가 있다면 이 쿼리로 조회 가능
Rollback Segment 정보 조회 (상태도 조회가능)
SELECT segment_name, owner, tablespace_name, status
FROM dba_rollback_segs ;
1. 운영중인 undo tablespace 장애 복구하기
사용중이던 rollback segment로 인해 undo tablespace 가 삭제 되지 않는다.
새로 만든 undo로 undo tablespace를 바꿔서 쓰고 있지 않은 기존의 undo tablespace는 쓰고있다면서 drop 이 안된다.
그래서 강제로 해당 undo tablespace를 오프라인 시키고 drop 시켜야함
방법은
Parameter File를 수정
undo_tablespace='새언두TS이름'
undo_management=manual
_offline_rollback_segments=(사용중이던롤백세그먼트)
management를 우선 manual로 바꾸고
_offline_rollback_segments 파라미터를 사용해 사용중이던 Rollback Segment를 강.제.로 오프라인 시킨 후
나중에 STARTUP 했을 때 MOUNT->OPEN 과정에서 에러가 발생하는데
그때
> alter database datafile '언두데이터파일' offline drop ;
으로 드랍시킨 후 DB OPEN 하면 된다.
[실습]
2. No archive log mode 에서 undo tablespace 장애 복구
우선 Parameter File 에서
undo_management=manual
#undo_tablespace= <- 주석처리
_offline_rollback_segments=(현재사용중인rollback_segment들)
> startup mount ;
> alter database datafile '언두데이터파일' offline drop ;
> alter database open ;
신규 undo tablespace 생성
> create undo tablespace 이름 datafile '경로' size *M ;
> shutdown immediate ;
다시 Parameter File 수정
undo_management=auto
undo_tablespace=새로생성된언두TS
#_offline_rollback_segments=(현재사용중인rollback_segment들)
-> 이거 주석처리 안하면 바로 ▶ 여기로 넘어갈 수 있음, 에러없이 바로 drop 가능.
> startup ;
> drop tablespace 쓰고있던undo including contents and datafiles ;
했을 때 에러가 남! 사용중인 롤백 세그먼트 에러!
> SELECT segment_name, owner, tablespace_name, status FROM dba_rollback_segs ; 로 조회하고
Status 가 "NEEDS RECOVERY" 인 세그먼트를 강제로 오프라인 시켜야 함
> shutdown immediate ;
Parameter File 수정
_offline_rollback_segments=(복구필요한세그먼트입력)
> startup ;
▶ 이제 drop 가능해짐
> drop tablespace 쓰고있던undo including contents and datafiles ;
[실습]
'오라클 백업/복구' 카테고리의 다른 글
Redo Log File 장애 복구 (0) | 2013.02.04 |
---|---|
Log Miner (0) | 2013.01.31 |
Data File 장애 복구 2 - Archive Log Mode 복구 (0) | 2013.01.27 |
Data File 장애 복구 1 - No Archive Log Mode 복구 (0) | 2013.01.27 |
Parameter File 장애 복구 (0) | 2013.01.27 |