2016년 12월 11일 일요일

ORA-600 [4097] [25027] [kcfrdb_3] 해결하기

** ORA-600 [4097] [25027] [kcfrdb_3] 해결하기

1. RAC 환경에서 Voting Disk Access 불가로 Undo Block Corruption 발생
   RAC환경, Node당 약 3,000개 세션 접속중.
   Voting Disk Access 불가로 CRS & DB 재기동되면서 ORA-600 [4097] Error !!
   <== 1번 Undo block 문제이므로, 아래와 같이 조치.
   undo_management = manual
   _offline_rollback_segments=(...)
   Drop & Re-create Undo TBS !!

 . 재기동후 (Undo 재생성후) ORA-600 [4097] [25027] [kcfrdb_3] Error 발생
 . undo$ 및 기타 Object 확인,
 . PK, Index Rebuild Online으로 일부 해결됨.

 . 모든 Index Rebuild 작업하다 CPU 100%로 Kill...
 . 이후 Table 생성도 안됨
   <==10046 trace 결과 obj$, seg$ 정상 insert, tab$ insert시 ORA-600 [4097]

 . 모든 trace는 Undo 관련 Invalid Undo Header.... error 발생
 . 각 Instance 별 Undo를 각각을 사용해야 하는데 1번 Instance가 2번 Undo segment를,
   2번 Instance 1번 Undo Segment를 사용하고 있음.

2. 이후 복구시 생각할 것 들...
 . Active Tx가 많은 상황에서 Undo Corrupt 복구시...
 . system dbf backup
 . SMON startup시 Active Tx Recovery 및 undo clean-up 하지 않도록
   10511, 10513 Event를 함께 사용하여 했으면 ??

3. 해결방법 (ORA-600 [4097] [25027] [kcfrdb_3] ...
 . _smu_debug_mode = 4
 . _offline_rollback_segments=(...) <== 총 141개

 . starup restrict;  <== 142번 Undo가 생성됨, 기존은 _SYSSMU1$가 생성되어 꼬임...
 . drop rollback segment ...;
 . Drop TBS & Re-Create

4. undo_management = manual & _smu_debug_mode=4 차이 ??

## 참고자료
_smu_debug_mode 의미.

_smu_debug_mode=1024 and SMON event 10513, disable SMON tx recovery


## 2pc_pending Error 발생시 사용
rollback force '7.12.102';
Commit;
alter system set "_smu_debug_mode" = 4;
begin
dbms_transaction.purge_lost_db_entry('local_tran_id');
end;

## Undo 관련 자료
http://www.exemwiki.com/?p=2723

## 관련 event
10511, 00000, "turn off SMON check to cleanup undo dictionary"
// *Cause:
// *Action:
10512, 00000, "turn off SMON check to shrink rollback segments"
// *Cause:
// *Action
10513, 00000, "turn off SMON Parallel recovery"
// *Cause:
// *Action

댓글 없음:

댓글 쓰기