본문 바로가기

DB/Oracle

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; 더보기
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을 검사할 문자가.. 더보기
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은 컨트롤 파일에 지정된 .. 더보기
01. ORACLE BASIC QUERY (NULL, ALIAS, CONCATENATION, WHERE, PLAN, INDEX_VIEW, ORDER BY) 1. Temp 테이블 생성 CREATE TABLE TEMP ( EMP_ID NUMBER NOT NULL PRIMARY KEY, EMP_NAME VARCHAR2(10) NOT NULL, BIRTH_DATE DATE, DEPT_CODE VARCHAR2(06) NOT NULL, EMP_TYPE VARCHAR2(04), USE_YN VARCHAR2(01) NOT NULL, TEL VARCHAR2(15), HOBBY VARCHAR2(30), SALARY NUMBER, LEV VARCHAR2(04) ); 2. TDEPT 테이블 생성 CREATE TABLE TDEPT ( DEPT_CODE VARCHAR2(06) NOT NULL PRIMARY KEY, DEPT_NAME VARCHAR2(20) NOT NULL, PARE.. 더보기
START WITH and CONNECT BY in Oracle SQL START WITH and CONNECT BY in Oracle SQL select ... start with initial-condition connect by nocycle recurse-condition select ... connect by recurse-condition select ... start with initial-condition connect by nocycle recurse-condition select ... connect by recurse-condition start with .. connect by문장은 계층적 관계를 가진 데이터베이스를 select할때 사용되는 문장이다. (보통 parent -> child나 boss->employee나 thing->parts의 관계에 주로.. 더보기