2010. 6. 30. 09:30 오라클
ORA-07445 _ignore_desc_in_index
index의 descending order에서 memory violation (sigsegv) 또는 wrong result를 야기하는 bug입니다
-------------------------------------------------------------
call stack
qkacol()+3148 PTR_CALL 00000000 B ? FFBE9C50 ? FFBE9998 ?
FFFFFFFF ? FFFFFFF8 ?
FFBEB0DE ?
qkadrv()+1420 CALL qkacol()+0 AA61C99C ? 0 ? D0 ? 800000 ?
0 ? 0 ?
qkadrv()+200 CALL qkadrv()+0 AA61D428 ? AA61C99C ? 0 ?
FFBEB198 ? AA61C6AC ? 0 ?
opitca()+3672 CALL qkadrv()+0 AA61D104 ? AA61D428 ?
AA61C6AC ? FFBEB260 ?
AA61C6AC ? 0 ?
kkssbt()+1336 CALL opitca()+0 AA61C6AC ? 8000 ? AA61C6AC ?
34 ? A874E7F8 ? A874E7D4 ?
kksscl()+4920 CALL kkssbt()+0 AFC1410C ? FFBEBA7C ?
18B2000 ? 18B2000 ? 18AF800 ?
AA61C6AC ?
kksfbc()+2460 CALL kksscl()+0 0 ? 1 ? 18ACDC4 ? 2 ? 0 ?
24 ?
opiexe()+1548 CALL kksfbc()+0 B72B848C ? FFBEBB18 ?
18ACDC4 ? 0 ? 0 ? 0 ?
opiall0()+5116 CALL opiexe()+0 49 ? 190C8A8 ? FFBED0F8 ?
18B0C00 ? 0 ? 190E584 ?
opial7()+324 CALL opiall0()+0 190C8A8 ? 15A16AC ? 190E584 ?
---------------------------------------------------------------
- workaround
1) 해당 index를 사용하지 않음
2) index를 사용하되, descending ordering 하지 않도록 아래와 같이 조치
Set _ignore_desc_in_index=true at instance level and ensure any
indexes containing a DESC keyword are re-created.
즉, _ignore_desc_in_index=true 를 oracle init parameter로 설정하고 db restart --> 이 상태에서, 해당 INDEX 재생성해서 사용 (이렇게 하시면, index는 asc order로 생성됩니다)
주의! 해당 index가 descending ordering이 아닐 경우, 해당 업무쿼리의 특성에 따라, performance가 떨어지는 상황이 될 수 있으므로 테스트/검증 필요
Bug:1190578 INSERTING INTO A TABLE BASED ON A QUERY USING A FUNCTION BASED INDEX FAILS
Details of Bug:1190578:
Fixed Version: 8.1.7.1+ and 9.0.1.0+
insert ..select using a functional index may crash in evaopn2()
while inserting a row. Other variations of this may occur.
Workaround:
For indexes with DESC clauses set
_ignore_desc_in_index=TRUE
in the init.ora file and rebuild the indexes.
Bug:1388458 ORA-7445 [EVAOPN2()+156] WHEN USING A VALUE COMPARISON VS A STRING