현재 재직중인 직장에서 TmaxData의 Tibero4로 DBMS를 migration 및 신규 서비스 구축을 한다는 말씀을 드렸었나요? 음... 암튼 지금 그런 일이 진행되고 있습니다. 나름 대규모 작업이 진행중인데요.
국내 기업이다보니 버그나 기능 개선이 요구되면 그때그때 패치가 되고 있습니다. 이건 뭐 긍정적이라고 생각합니다. 아직 개선할 점이 많은게 문제이긴하지만 대응이 빠른 편이라고 생각합니다. 좋게좋게 생각해야죠.

 이번에 말씀드리려는건 현재 패치가 진행중이라고 알고있는데요. PSM(Oracle의 PL/SQL에 해당함)을 이용해서 함수(Function)를 만들어서 쓸때 생기는 문제입니다.

문제점 : select문장에서 만들어 놓은 함수를 실행시켰는데, 널(null) 값이 반환된다.

원인 : 함수안에서 실행되는 Query 문장이 인덱스를 타게되면 널(null) 값이 반환된다.

해결책 : 현재 패치 진행중이라고 한다. 일단 Full table scan하도록 힌트를 주면 됨.

 뭐... 패치 중이니까요... 곧 해결되겠죠.
정보문화사에서 출판된 "Perfect! 오라클 실전 튜닝"이라는 책의 16장에 소개된 내용이며, 오라클 DW Guide문서에도 소개된 내용입니다. 물론 DW Guide는 영문입니다. 그래서 "Perfect! 오라클 실전 튜닝"을 구매하려 했으나 절판되었네요. 아직까지 재고가 있는 곳이 있는지 알아봐야 겠습니다.

오라클 실전 튜닝 상세보기
권순용 지음 | 정보문화사 펴냄
데이터베이스 성능 데이터 수집부터 튜닝까지, 데이터베이스 튜닝을 위한 지침서. 이 책은 데이터베이스의 원리를 파헤치고 실무 중심의 예제를 수록해 데이터베이스의 모든 작업을 최적화하는 방법을 수록하고 있다. 이 책은 튜닝 관련 항목을 체계적으로 기록하였다. 특히 Join, Partition, Cluster Factor, Index 선정 및 튜닝, Application 분석 및 튜닝 등은 독창적이며 시스템의 성능 향상에 많은 효과를 기대할 수 있는 튜



Analytic Function
 Analytic Function은 오라클 8i 버전부터 본격적으로 제공되었다.

 특징
 - 주기적인 데이터 분석 작업에 이용
 - SQL 양의 감소로 인한 운영의 용이
 - 성능 향상
 - Group By 사용 감소
 SQL> SELECT DEPTNO, 이름, SAL COUNT(DEPTNO) OVER (PARTITION BY DEPTNO ORDER BY SAL) FROM 사원;

 10 김희진 250 3
 10 선애란 300 3

 Syntax ~ 함수명 OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명) 함수

 LAG(컬럼명, 숫자, NULL일때 값) OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명)
 LAG(컬럼명, 숫자) OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명)
 숫자에 해당하는 만큼 이전 ROW의 값
 10 김희진 250
 20 선애란 300 250
 30 홍길동 400 300

 LEAD(컬럼명, 숫자) OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명)
해당하는 값 만큼 다음 ROW의 값을 가져온다.
 10 김희진 250 300
 20 선애란 300 500
 30 홍길동 500 400
 40 이산 400 340

 AVG COUNT MIN MAX RANK FIRST_VALUE LAST_VALUE ROW_NUMBER ~ ROW_NUMBER() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명)

+ Recent posts