본문 바로가기

Oracle242

Join Factorization Oracle에서 or 조건을 처리하는 연산으로 OR-EXPANSION이라고 불리우는 동작이 있습니다. UNION ALL 로 풀어서 작업을 수행하는 CONCATENATION.or-expansion이라고 합니다. 힌트는 /*+ USE_CONCAT */를 사용합니다. UNION ALL로 풀지말고 수행하는 CONCAT을 방지하는 힌트는 /*+ NO_EXPAND */ 가 있습니다. 두 힌트에 대한 내용은 아래 사이트에서 설명한 내용을 해석하였습니다. USE_CONCAT USE_CONCAT 힌트는 UNION ALL 집합 연산자를 사용하여 쿼리의 WHERE 절에 있는 결합된 OR 조건을 복합 쿼리로 변환하도록 강제합니다. 일반적으로 이러한 변환은 연결을 사용하는 쿼리의 비용이 연결을 사용하지 않는 비용보다 저렴한 경.. 2022. 10. 28.
UNION 과 UNION ALL 개념 수학의 집합에서 합집합과 비슷한 개념입니다. 두개이상의 쿼리 결과값을 합하여 보여줍니다. UNION : 중복값이 있다면 한번만 보여주고, 정렬해서 보여줍니다. UNION ALL : 중복값이 있어도 그대로 보여주고, 정렬없이 그대로 보여줍니다. 이 외에도 교집합의 INTERSECT , 차집합의 MINUS가 있습니다. 실제로 UNION 이 정렬까지 포함인지, ORDER BY 를 사용하여도 동일한지 확인해보겠습니다. 테스트 테스트 테이블(EMP) SQL> select * from EMP; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ------ -------------------------- --------- -.. 2022. 10. 26.
[12c 이상] 재기동 없이 패치정보가 alert log에 뜨는 경우? 모니터링을 하다가 ora error가 발견되어 로그 확인 중 재기동을 하지 않았는데 패치정보가 로그에 찍혀있는 경우를 발경하였습니다. 결론적으로 패치정보중 특정 ORA error 를 위한 크리티컬 패치가 포함되어 있었고, 그것 때문에 모니터링 로그에 ora 정보가 남아있었습니다. Patch Id: 27163928 Patch Description: ORA-4031 ERROR DUE TO LEAKAGE OF GC INDEX SPLIT TRANSACTION PERMANACT CHUNKS 근데 보통 패치정보는 재기동 후에 로그에 찍혀있는데, 재기동 없이 패치정보가 찍혀있는 건 왜그럴까 찾아보게 되었고, 정리를 하게 되었습니다. 원인 : 12c 이상부터 적용되며, log.xml 파일이 10MB가 넘어갈때 log_.. 2022. 10. 24.
Full Table Scan 시 Direct Path Read ? 운영 중 쿼리 튜닝 요청이 와서 실행계획을 보는 중 특이한 부분이 보여서 찾아보다가 정리를 하게 되었습니다. 제가 확인한 실행계획인데요, 해당 쿼리는 Parallel Query도 아니었고, 일반 SELECT 였는데 Table Full Scan이 발생하던 시기에 direct path read가 발생한것을 확인하였습니다. SQL Plan Monitoring Details (Plan Hash Value=839247681) ===================================================================================================================================================================.. 2022. 10. 17.