'ORA-00600 [kkocxj : pjpCtx]'에 해당되는 글 1건

  1. 2009.01.24 ORA-00600 [kkocxj : pjpCtx]


alertlog에 이런메세지가 남습니다.
=======================================
Getting ORA-00600 [kkocxj : pjpCtx] error on a complex query

Metalink 741627.1
찾아보면 Bug 7014646 문제라고 하고 패치하거나 임시적으로 hidden을 적용하라고 합니다.
alter system set "_optimizer_push_pred_cost_based"=false;

우선 11.1.0.7에선 나지 않고 bug는 11g R2에서 없어질 것이라고 합니다.
===============================================

- 해당 parameter에 대한 설명입니다.
PUSH_JOIN_PREDIATE 파라미터는 Join Predicate를 View의 텍스트안으로 Push하는 기능을 결정한다. Oracle은 View를 사용하는 쿼리에 대해 우선적으로 Complex View Merging을 시도하고 이것이 불가능한 뷰에 대해서는 Join Predicate Pushing을 시도한다.

View Merging이 불가능한 뷰(Nonmergeable View)는 다음과 같은 기능을 사용하는 View를 의미한다.

Set operators (UNION, UNION ALL, INTERSECT, MINUS)
A CONNECT BY clause
A ROWNUM pseudocolumn
Aggregate functions (AVG, COUNT, MAX, MIN, SUM) in the select list
Oracle은 항상 Join Predicate Pushing을 시도하지만 View의 속성에 따라 불가능한 경우도 있음에 주의해야 한다. 가령 일반적으로 View가 UNION ALL 절이나 OUTER JOIN 절을 사용하면 Join Predicate Pushing이 이루어지지 않는다. Join Predicate Pushing이 작동하는 방식은 Oracle Version마다 다르기 때문에 반드시 Version별로 확인해 보아야 한다.

Oracle 10g에서는 Cost에 기반하여 Join Predicate Pushing기능을 제어하는 기능이 추가되었으며, _OPTIMIZER_PUSH_PRED_COST_BASED 파라미터로 사용 여부를 지정한다. 이 파라미터의 값은 기본값 True이다. 만일 9i 버전에서는 Join Predicate Pushing이 동작하여 Query의 성능이 좋았음에도 불구하고 10g로 업그레이드후 Join Predicate Pushing이 동작하지 않는다면 해당 파라미터의 값을 False로 변경함으로써 해결할 수 있다.

Join Predicate Pushing은 대단히 바람직한 기능이며, 일반적으로 성능을 개선시키는 효과가 있다. 하지만 특정 쿼리에서, 특히 복잡한 쿼리에서는 오히려 잘못된 실행 계획을 만드는 역효과를 가지고 있다. 이 경우에는 Join Predicate Pushing을 비활성화함으로써 문제를 해결할 수 있다.
Posted by pat98
이전버튼 1 이전버튼

05-09 04:31
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 달린 댓글