Rollback segment corrupt error message 발생 했을 경우에 우선 rollback segment 대한 정보를 알아야 한다. , 어떤 rollback segment 문제가 발생 했는지를 알기 위해 아래의 event 사용한다.

  Init.ora

  event="10013 trace name context forever, level 10” 

  (Dumps the recovery of transactions during startup)

  event=”10015 trace name context forever, level 10” 

  (Dumps every rollback segment header, transaction table, during startup, before, after recovery)

위의 event init.ora 지정한 후에 다시 startup한다. 이때 나온 trace file 이용하여 해당 object 알아낸다.


                  Tx(#,#): transaction information

                  object#: object id


경우 1: corrupt object rollback segment 경우.(media recovery 하지 못할 경우)

해당 segment init.ora rollback_segments에서 제외하고 _corrunted_rollback_segment 지정한 다시 시도 한다.

이후에 이를 drop한다. 그리고, database backup받고, rebuild한다.

 

경우 2: 일반 data block corrupt되었을 경우.(media recovery 하지 못할 경우)

해당 object 관련한 rollback segment init.ora _offline_rollback_segment 지정한 startup하고 해당 object drop 한다. (object drop하면 undo discard된다.)

_offline없이 startup한다. 해당 object rebuild한다.

 

_offline_rollback_segments : 임의의 tx 대한 ITL rollback segment 연관되어 있을 경우에 rollback segment _offline 지정되어 있으면,  해당 segment transaction 상태를 찾는다. 이때 tx committed되었으면 delayed clean out 수행하고, 현재 active하면 ITL 해당하는 consistent read 수행한다. 만약 해당 tx active하고 ITL 변경하고자 경우에는 무한 루프에 빠져 들게 된다. 또한 segment drop하면 모든 tx commit된다.

 

_corrupted_rollback_segment : 만약 ITL open 이에 연관된 segment _corrupted 지정되어 있으면, 해당 ITL transaction 상태를 알기 위해서 segment read하지 않고, 해당 transaction commit되었다고 가정하고, delayed block clean out 수행한다. 그러므로 logical corruption 발생 있다. 그러므로 이러한 경우에는 logical corruption 발생 한다.

 

Case

  1  SQL> set transaction use rollback segment r01

      Transaction set.

     SQL> insert into emp (empno ) values (1111);

      1 row created.

2  다른 session에서 shutdown abort

3.         init.ora _offline_rollback_segment=(r01) 지정

4.         startup.

 

* 이때 만약 _offline으로 지정하면 empno rollback 되고 _corrupted 지정하면 새로 입력한 1111 된다. _offline _corrupted 차이는 분명하다.

또한 현재 active tx 있더라도 위의 _offline, _corrupted 사용하면 tx 대한 check없이 drop 있다.

 

사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

+ Recent posts