2
Oracle 12c에서 실행되는 2 개의 동일한 데이터베이스가 있습니다. 그들은 2 개의 다른 서버에 앉아 있습니다.SQL 쿼리가 서로 다른 두 시스템의 동일한 Oracle 데이터베이스에서 다른 결과를 반환합니다.
두 데이터베이스에서 SQL Developer를 사용하여 다음 쿼리를 실행하고 있습니다.
select *
from sla
where objectname = 'INCIDENT' and
status in 'ACTIVE' and
(exists (select 1
from classancestor
where ancestor=sla.classstructureid and classancestor.classstructureid= '') or
classstructureid is null or
classstructureid = ''
) ;
데이터베이스 중 하나에는 260 개의 결과가, 다른 하나에는 0 개의 결과가 표시됩니다. 이 쿼리는 사용중인 ERP에 의해 생성되므로 SQL 자체를 수정할 수 없습니다.
내가 알아챈 한 가지는 존재 연산자를 둘러싼 괄호를 제거하면 동작이 변경된다는 것입니다.
누군가 도움을 줄 수 있습니까? OR을 사용할 때 우선 순위가 있습니까? SQL 문 처리 방법에 영향을주는 Oracle 패치가 있습니까?
덕분에 지금은 단순히 오라클 11g의 최적화에 복귀하고 내 문제를 해결하기위한
'동작이 변경됩니다'... 동작이 변경됩니까? 내 생각 엔 기본 테이블이 동일하지 않다는 것입니다. –
예. 죄송합니다. 두 데이터베이스에서 같은 결과가 나타납니다. 두 데이터베이스가 동일하며 SQL 문에있는 각 테이블을 철저하게 비교했습니다. – Pete
다음 질문 : 두 데이터베이스 모두 Oracle 버전이 동일합니까? –