기금넷 공식사이트 - 경제 뉴스 - 오라클]백업이 없는 상태에서 실행 취소가 손상된 경우 어떻게 해야 하나요?

오라클]백업이 없는 상태에서 실행 취소가 손상된 경우 어떻게 해야 하나요?

안타깝게도 오라클은 작업 중 undo 손상이 발생합니다. 물론 가장 좋은 방법은 완전히 복원하는 것이지만, 백업하지 않고 undo 손상이 발생한다면 어떻게 될까요? 다음은 이러한 상황에 대한 해결 방법을 소개합니다. Oracle이 작업 중 불행하게도 undo 손상을 겪는 경우 가장 좋은 방법은 완전히 복원하는 것이지만 백업이 없는 경우

아쉽게도 오라클은 작업 중에 undo 손상이 발생합니다. 물론 가장 좋은 방법은 완전히 복원하는 것이지만, 백업하지 않고 undo가 손상되면 어떻게 될까요? 다음은 이 상황에 대한 해결 방법을 소개합니다. 필요한 친구는 참고할 수 있습니다

오라클이 작업 중 undo 손상을 겪은 경우 물론 가장 좋은 방법은 완전히 복원하는 것입니다. 백업이 없으면 기존의 방법을 사용할 수 없습니다(Oracle의 숨겨진 매개변수 사용). 이때 실행 취소에 커밋되지 않은 트랜잭션이 포함되어 있으면 약간의 데이터 손실이 발생합니다(일반적으로 허용 가능). 데이터 손실. 주요 단계는 다음과 같습니다.

1. 실행 취소 테이블 공간 관리를 수동으로 수정합니다.

2. Oracle이 해당 롤백 세그먼트를 무시하도록 숨겨진 매개변수(_offline_rollback_segments 또는 _corrupted_rollback_segments)를 설정합니다.

3. 영향을 받은 롤백 세그먼트와 실행 취소 테이블 공간을 수동으로 삭제한 다음 새 실행 취소 테이블 공간을 재구축합니다.

4. 실행 취소 테이블 공간 관리는 다음과 같습니다. 오토매틱.

실험은 다음과 같습니다.

1단계.

Undo 데이터 파일이 손상된 경우 데이터베이스는 마운트 상태에만 도달할 수 있으며 다음과 같습니다. 열 때 오류가 발생합니다:

ORA-01157: 데이터 파일 14를 식별/잠금할 수 없습니다 - DBWR 추적 파일을 참조하세요.

ORA-01110: 데이터 파일 14: 'I:INTEL_DATAO06DMS0UNDO1.O06DMS0 '

설명 실행 취소 파일이 손상되었거나 손실되었습니다. 파일을 오프라인으로 전환한 후 데이터베이스를 열 수 있습니다.

SQL> 데이터베이스 데이터 파일 변경 'I:INTEL_DATAO06DMS0UNDO1.O06DMS0' 오프라인 삭제 ;

SQL > alter Database open;

데이터베이스를 여는 목적은 영향을 받은 롤백 세그먼트를 찾는 것입니다:

SQL> select Segment_name, status from dba_rollback_segs;

SEGMENT_NAME 상태

-------------------------------- - ----------- -----

시스템 온라인

_SYSSMU10_1201331463$ 오프라인

_SYSSMU9_2926456744$ 오프라인

_syssmu7_3984293596 $ 오프라인

_syssmu6_3694658906 $ 오프라인

_syssmu5_3475919656 U4_168502732 $ 오프라인

_SYSSMU3_1987193959$ OFFLINE

_SYSSMU2_3908286755$ OFFLINE

_SYSSMU1_3281912951$ OFFLINE

SQL> 매개변수 표시 취소

이름 유형 값

p>

------ ------------- ---------- --- ------- ---

undo_management string AUTO

undo_retention 정수 900

undo_tablespace string undo1

데이터베이스 닫기 :

SQL> shutdown 즉시;

2단계.

임시 pfile 생성:

SQL> create pfile='H: initO06DMS0.ora' from spfile;

pfile을 다음과 같이 수정합니다:

*.undo_management='manual' -- 실행 취소 테이블 공간 관리 방법을 수동으로 변경합니다.

*.undo_tablespace='undo2' - -새 실행 취소 테이블 공간 지정

*._offline_rollback_segments=('_SYSSMU10_1201331463$','_SYSSMU9_2926456744$','_SYSS

MU8_640224757$','_SYSSMU7_3984293596$','_SYSSMU6_3694658906$','_SYSSMU5_3475919656$','_SYSSMU4_168502732$','_SYSSMU3_1987193959$','_SYSSMU2_ 3908286755$','_SYSSMU1_3281912951$') --여기에 나열된 영향을 받는 모든 롤백 세그먼트를 교체합니다.

변경된 pfile로 데이터베이스를 다시 시작합니다.

SQL> start pfile='H:initO06DMS0.ora'

3단계.

영향을 받은 롤백 세그먼트를 수동으로 삭제:

SQL>롤백 세그먼트 삭제 "_SYSSMU10_1201331463$";

SQL>롤백 세그먼트 삭제 "_SYSSMU9_2926456744$";

SQL >롤백 세그먼트 삭제 "_SYSSMU8_640224757$";

SQL>롤백 세그먼트 삭제 "_SYSSMU7_3984293596$";

SQL>롤백 세그먼트 삭제 "_SYSSMU6_3694658906$";

p>

SQL>롤백 세그먼트 삭제 "_SYSSMU5_3475919656$";

SQL>롤백 세그먼트 삭제 "_SYSSMU4_168502732$";

SQL>롤백 세그먼트 삭제 "_SYSSMU3_1987193959$";

SQL>롤백 세그먼트 삭제 "_SYSSMU2_3908286755$";

SQL>롤백 세그먼트 삭제 "_SYSSMU1_3281912951$";

이전 실행 취소 테이블 공간을 수동으로 삭제:

p >

SQL> 내용을 포함한 undo1 테이블스페이스 삭제;

새 실행 취소 테이블스페이스 재구축:

SQL> 실행 취소 테이블스페이스 생성 undo2 데이터 파일 'I:INTEL_DATAO06DMS0UNDO2.O06DMS0' 크기 100m ;

새 spfile을 생성하고 이전 spfile을 덮어씁니다:

SQL> create spfile from pfile='H:initO06DMS0.ora';

데이터베이스 닫기:

SQL> 즉시 종료