오라클 10g 10.2.0.2 버젼에 옵티마이져 버그가 있더군요..
1. 현상
쿼리 구조는
select a, b
from emp, (select c,d
from e, (select f
from g ....)
where ...
처럼 인라인 뷰가 중첩되어서 나타나는 쿼리 입니다.
쿼리 결과 21건 이 나와야 하는데 도 불구하고
10.2.0.2 에서 이상하게도 72건의 데이터가 나오더군요..
2. 버젼별 select 결과는
10.1.0.2 에서는 21건이 select 출력되고 (이게 맞는 데이터 건수 입니다.)
10.2.0.2 에서는 72건이 select 되더군요..
3. 10.2.0.2. 에서 힌트를 다음과 같이 줬습니다.
select /*+ rule */
a, b
from emp, (select c,d
from e, (select f
from g ....)
where ...
21건의 데이타가 출력되더군요...
4. 결론적으로
10.2.0.2 에서 중첩된 인라인뷰를 사용시 잘못된 select 결과를 나타내는 걸로 판명되었습니다.
5. 해결방법
옵티마이저 버젼을 10.2.0 버전으로 낮추었더니 /*+ rule */ 힌트 없이도 올바른 결과가 나오더군요..
alter system set optimizer_features_enable='10.2.0' scope=both;
아니면
alter system set optimizer_features_enable='10.2.0.1' scope=both; 이었던가...
하여튼 10.2.0.2 이하 어떤 버젼이던지 올바르게 21건이 출력 되었습니다.
오라클에 문의하면 분명이 패치 하라고 할텐데.. 우선 임시적으로 해결하였습니다.
중첩된 인라인뷰를 사용하는 여러 쿼리에서 동시에 발생되는 현상이었구여..
'전산Tip > Oracle' 카테고리의 다른 글
오라클 사전정보 (0) | 2008.09.11 |
---|---|
오라클 constraint type (0) | 2008.09.11 |
오라클 객체 - SYNONYM(동의어) (0) | 2008.08.18 |