Oracle

ora-600[kdsgrp1](index/table corrupt/crash) , ora-600[6006](check corrupt and smon kill db)

민이단 2023. 7. 4. 15:57

예전에 index corrupt 났을때 처리했던 부분인데, 대충 기록해놨던것같다.. 아마 2-3년전쯤인거같다.

 

이 이후 다른 사이트에서 여러 block에대해 corrupt이 났던적이 있는데 백업본도없고.. 테이블 조회자체가 안돼었던적이 있어  dbms_repair로 block skip한 적도 있다 (이부분은 곧 정리해서 올려야겠다.. 사실 이것도 좀 오래돼서 기억이 잘..) 

 

===========================================================
ora-600[kdsgrp1](index/table corrupt/crash) , ora-600[6006](check corrupt and smon kill db)
===========================================================
해당 block 조회 (해당 trace file 의 file_id / block_id 로 조회)
SELECT segment_type, owner, segment_name
FROM dba_extents
WHERE file_id =6
AND 3527454 BETWEEN block_id and block_id+blocks-1;

OR 

select object_id, data_object_id, owner, object_name from dba_objects where object_id = 69342 or data_object_id=69342 ;   
해당 trace file -16진수 -> 10진수로 계산한 값으로 object 조회
-- https://ko.calcuworld.com/수학/16진법-계산기/

select INDEX_NAME,tablespace_name from dba_indexes where table_name='테이블명' order by INDEX_NAME;
해당 인덱스 체크

ANALYZE TABLE  테이블명 VALIDATE STRUCTURE ONLINE;  해당 테이블에 대한 분석
ANALYZE INDEX 인덱스명 VALIDATE STRUCTURE ONLINE; 해당 테이블에 대한 인덱스 분석 
-- ora 600 떨어질 시 

해당 인덱스 리빌드 (SE online rebuild 기능 x) 

OR 

SELECT DBMS_METADATA.GET_DDL('INDEX','인덱스명','소유자명') from dual; -해당 모든 인덱스 ddl 추출
Drop index
Recreate index


===================================
tip. 해당 테이블 analyze 나 인덱스에 대한 작업 이후 지속적인 에러 ora-600[kdsgrp1] ora-600[6006](smon kill db)
가 나타날 시 해당 disk 에 해당 slot 의 corrupt / crash 의 가능성이 있으므로
해당 테이블의 소속 tbs 가아닌 다른 tbs생성 후 Recreate 하는 방법이 있음
===================================