본문 바로가기

DB

SQL trace, TKPROF 분석하기 : Tracing SQL statement execution 세션 수행을 트레이싱 하는것은 애플리케이션 튜닝 방법중 가장 강력한 방법이다. 오라클의 SQL tracing 기능은 세션이나 세션그룹으로 부터 수행된 모든 활동을 캡쳐하도록 지원하고 있고, 튜닝 시점의 확인 및 보틀넥 지점을 식별할수 있도록 해준다. 이러한 기능은 당연히 TOAD DBA 슈트에 포함되어 있다. 오라클의 트레이싱 기능은 다음 2가지 컴포넌트로 구성되어 있다. 현재 작업하고 있는 세션 혹은 다른 세션상에서 초기 트레이싱 작업 수행 가능하도록 설정 tkprof 툴 : 트레이싱된 파일을 의미있는 방법으로 읽기 할 수 있도록 포매팅 생성 SQL 트레이스 기능과 tkprof 기능은 강력한 튜닝 조합이다. 그러나 미숙하게 사용하거나, 해석을 하는데 어려움을 겪는 이가 있다. 그래서 아마도 이 툴을 널.. 더보기
GROUP BY 와 ORDER BY 최적화 (오라클 10.2 이후버젼) Optimizing GROUP and ORDER BY Wednesday, August 5, 2009 at 02:51AM 오라클 10.2를 시작할때, Group by와 Order by를 동일한 칼럼에 결합하여 사용할때, 성능과 관련하여 괄목할 만한 성능 절감을 발견하게 될 것이다. 오라클 10.2에서는 Hash 기반의 Group By에 대해서 소개했다. 이전 Group by를 수행하면 연관된 칼럼의 소팅을 포함해서 처리했었고, 이러한 수행결과를 모아서 결과로 반환했다. Hash Group By 메소드는 소팅 없이 이러한 결과를 생성한다. 즉, 이 처리방식은 Sort-Based Group by보다 항상 낳은 성능을 발휘한다. 불행하게도 Order By 절을 동일 칼럼에 Group By절과 함께 사용한다면 S.. 더보기
테이블 데이터세트 업데이트 수행 UPDATE KETD13MT A SET(SALSTATCD, DISPFL)=( SELECT ( CASE NVL(PRDSTATCD, '05') WHEN '01' THEN 'PS02' --// 준비중 상품 WHEN '02' THEN 'PS01' --// 신상품 WHEN '03' THEN 'PS01' --// 정상판매상품 WHEN '04' THEN 'PS03' --// 일시품절 상품 ELSE 'PS04' --// 05=> 폐종상품 END ) AS PRDSTATCD , DECODE(PRDSTATCD, '05', 'N', PRDDISPFL) PRDDISPFL FROM WETH01MT B WHERE B.PRDFORMCD IN ('01', '03') AND A.ORDPRDID=B.PRDCD ) WHERE EXISTS .. 더보기
Oracle 랜덤하게 Row 뽑기 select * from( select * from 테이블명 order by DBMS_RANDOM.RANDOM ) where rownum < 10; 1. DBMS_RANDOM.RANDOM : 정렬한 필드를 랜덤하게 설정한다. 2. 외부 쿼리를 둘러싸서 가져올 로 개수를 지정한다. -- 이렇게 간단한것을.. # 히트 카운트로 정렬해서 가져오기 select A.*, RANK() OVER(ORDER BY A.HITCNT DESC) from ( select * from 테이블명 order by DBMS_RANDOM.RANDOM ) A where rownum < 10; 더보기
iBatis 사용방법 정리 1.1. web site HomePage : http://ibatis.apache.org/ 1.2. manual 1.3. log4j 설정 log4j.logger.com.ibatis=ERROR log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR log4j.logger.java.sql.Connection=ERROR log4j.logger.java.sql.Statement=ERROR log4j.logger.java.sql.Prepared.. 더보기
ORACLE > TRANSLATE Oracle/PLSQL에서 translate 함수는 입력된 스트링을 다른 문자집합으로 변경해주는 함수이다. 이것은 한번에 한자씩 변경하는 것으로, 예를 들어 string_to_replace의 첫번째 문자를 replacement_string으로 변경해주는 작업을 해주게 된다. 이것은 역시 string_to_replace의 2번째 문자를 replacement_string의 두번째 문자로 변경을 수행한다. 이러한 작업을 반복적으로 수행하게 된다. 다음은 translate 함수의 문법이다. translate( string1, string_to_replace, replacement_string ) stirng1은 바꾸고자 하는 대상 문자 순열이다. string_to_replace 은 string1을 검사할 문자가.. 더보기
IBATIS > Dynamic SQL 3.9. Dynamic SQL ADO에서 작업을 수행할때 발생되는 문제는 동적 SQL 이었다. 이것은 보통 SQL 문장과 함께 작업할때 파라미터의 값을 변경하는 작업으로 어려울때 이용을 하게 된다. 일반적인 방법은 if-else를 이용하거나, 끔찍한 스트링 조합으로 이를 해결하고 있다. 바라던 결과는 종종 각 예에 따른 쿼리를 작성하는 것이다. iBATIS DataMapper API는 어떠한 매핑되는 문장의 엘리먼트에도 적용할 수 있도록 좀더 좋은 코드를 만들 수 있도록 지원해준다. 간단한 예를 보면 다음과 같다. Example 3.56. A simple dynamic select sttatement, with two possible outcomes select * from ACCOUNT where AC.. 더보기
SQL Loader SQL Loader SQL LOADER은 오라클 유틸리티로 주어진 데이터 파일을 특정 테이블에 필요한 데이터 레코드를 로드할때 이용하는 목적으로 만들어 진 것이다. SQL*LOADER는 데이터 파일과 컨트롤 파일을 이용하여 테이블에 데이터를 입력한다. 컨트롤 파일은 수행될때 다음 3개의 파일을 만들어 낸다. log file, bad file or reject file, discard file. LOG FILE 은 테이블의 상태와 인덱스 그리고 입력된 데이터파일에서 읽어들인 논리적 레코드의 수를 알려준다. 이것은 로드가 수행되고 난뒤에 만들어 지게 된다. BAD FILE과 REJECT 파일은 포맷 에러 혹은 오라클 에러로 인해 리젝트가 발생한 경우 생성된다. DISCARD FILE은 컨트롤 파일에 지정된 .. 더보기