이 방법은 백업으로 복구가 불가능 할경우 최대한 마지막 방법 입니다. 오라클 권고 사항은 절대 아닙니다.
Data block이나 Index block이 corruption으로 인해 startup이 되지 않거나 어떤 object를 select못할 경우에 다음과 같은 event를 사용 합니다.
10210 : Check Data block integrity 이 event를 지정하면 kernel이 강제적으로 data block에 대한 integrity check를 하도록 한다. 이 event를 지정하면 data block이 Disk에서 Cache로 읽혀질 때 check를 한다. 만약 corrupt가 발생 했다면, ORA-600 error를 발생 시키고, 해당 block에 corrupted block이라는 mark를 한다(sequence number를 0). 이 event를 지정하면 performance의 5~10%가 감소 된다. 10211 : Check Index block integrity 이 event는 index block에 대한 integrity check를 하도록 한다. 10231 : Skip corrupted block on << table scan >> 이 event를 지정하면 scan시 corrupted block을 skip한다. 그리고 trace file을 생성한다. 10232 : Dump corrupted blocks symbolically gotten by <<kcbget>> Corrupted Block에 대한 정보를 Dump한다.
|
Block corrupt의 대표적인 error는 ORA-00600[3398], ORA-00600[4519], ORA-00600[3339]이다. 만약 ORA-00600[3398]이 발생 했다고 가정하면
우선 init.ora에 아래의 event를 지정합니다.
event="10210 trace name context forever, level 10"
event="10211 trace name context forever, level 10"
이후 database를 startup한 후에 trace가 발생하면 어떤 object가 error인지를 파악할 수 있습니다. 만약 table이 error일 경우에는
event="10231 trace name context forever, level 10"
을 지정하고 해당 table을 export받은 후에 drop을 하고 다시 import하면 됩니다.
만약 index일 경우에는 해당 index를 drop한 후에 재생성 하면 됩니다.
'DB - ORACLE > Oracle Trouble Shooting' 카테고리의 다른 글
ORACLE RAC 환경 interconnect 에 gigabit switch 사용권고 (0) | 2015.09.07 |
---|---|
ORACLE CONTEXT SIZE & CURSORS (0) | 2015.09.07 |
Rollback segment corrupt error message가 발생 했을 경우에 (0) | 2015.09.03 |
Oracle Dump 뜨기 스크립트 (0) | 2015.09.02 |
오라클 DB 서버의 CPU 소모 (1) | 2015.08.31 |