오라클/Tuning 14

다른 User로 Oracle 통계정보 옮기기.

오라클의 통계정보는 다른 DB나 계정으로 옮겨질 수 있습니다. 개발장비에서 수집된 통계정보를 옮긴다거나, 기존의 운영장비의 통계정보를 migration 할 대상으로 옮겨 동일한 SQL 수행을 유도할 수 있습니다. 다음은 현재 SCOTT 계정의 통계정보를 다른 Database의 SCOTT 계정으로 옮기는 예제입니다. * statistic 정보 수집 table 생성 SQL> exec dbms_stats.create_stat_table('SCOTT','STATS'); * scott.emp table의 통계정보를 statistic 정보수집 테이블인 STATS로 export exec dbms_stats.export_table_stats('SCOTT','EMP',NULL,'STATS',NULL,TRUE); * ST..

오라클/Tuning 2010.10.18

DBMS_STATS 정리

DBMS_STATS.EXPORT_* 사용법 1) DBMS_STATS.EXPORT_TABLE_STATS ‘SYS’, ‘employees’, ’stat_at_5pc’, 1, 'STATS', 'EMP', 'BIG_TABLE', CASCADE => TRUE, METHOD_OPT => 'FOR ALL COLUMNS SIZE 1'); 2) SCOTT의 BIG_TABLE의 15% ROW를 가지고, 테이블, 칼럼, 연관인덱스의 통계정보를 생성한다.( SAMPLE 15 PERCENT ) EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'SCOTT', TABNAME => 'BIG_TABLE', CASCADE => TRUE, ESTIMATE_PERCENT => 15); 3) SCOTT의 B..

오라클/Tuning 2010.10.18

Cardinality 예측 실습

1. Histogram 없는 경우 : -> Density = 1/NDV -- 1) 동등질의 + 상수 = 1/NDV * Base Cardinality where c1 = 1 -- 2) 동등질의 + bind 변수 = 1/NDV * Base Cardinality where c1 = :b1 -- 3) 범위질의 + bind 변수 = 개당 5% * Base Cardinality where c1 > :b1 -- 4) 존재하지 않는 값 = Max와 Min값을 기준으로 벗어나는 where c1 = 6 비율로 일정 비율 감소하다가 일정 한계를 벗어나면 1 (p.423 and p.428) density * 전체 row수 ----------------------- = 구간별 감소 갯수 최대값 - 최소값 2. Histogram..

오라클/Tuning 2010.08.20

Histogram 이란?

Histogram 이란 Table 형태의 빈도(개수)를 Graphical 하게 표현한 것이다. Skewed(빈도가 특정 값에 편향되어있는 것) 한 컬럼과 관련된 히스토그램이 없을 경우 CBO는 selectivity 계산에서 오류를 범하게 된다. 그것은 곧바로 cardinality 계산의 오류로 이어지고, 잘못된 실행계획을 선택하는 결과로 나타난다. 이런경우에 Histogram을 활용하면 보다 정확한 optimizer의 판단을 유도할 수 있다. 히스토그램 생성 1) 모든 column에 대해서 Histogram을 수집하지 않는다. exec dbms_stats.gather_table_stats(user, 't1', method_opt=>'for all columns size 1'); 2) Oracle이 Dat..

오라클/Tuning 2010.08.20

[Oracle Virus] DBMS_XPLAN 패키지에 대한 이해

dbms_xplan 패키지는 Oracle이 제공하는 모든 패키지들 중 가장 중요한 것이다. 왕 중의 왕이다. 적어도 Query를 튜닝하는 사람들에게는 이 명제가 진실일 것이다. dbms_xplan 패키지는 실행 계획을 분석하는 기능을 제공하기 때문이다. 이 패키지가 없이는 Query 튜닝은 불가능하다. Oracle이 버전업되면서 실행 계획이라는 말의 범위가 점점 넓어지고 있다. 최신 버전인 11g 기준으로, 총 5 가지 종류의 실행 계획이 존재한다. 이제는 실행 계획이라는 말을 들으면 "어떤 실행 계획 말하는거야"라고 물어봐야 할 지경이다. 아래 Oracle Virus 동영상에 이것이 잘 설명되어 있다. 출처 : http://ukja.tistory.com/202

오라클/Tuning 2010.08.18

SQL*Plus의 Autotrace 활용

Autotrace 란? SQL*Plus 툴이 제공하는 기능이다. 실행계획은 예상 계획을 뿐 실제 적용이 보장되는 것은 아니다. 실행계획에서 확인되는 rows, bytes, cost 등은 optimizer의 예측에 불과하기 때문에 실제 결과와 다를 수 있다. Autotrace 활성화 SQL> conn / as sysdba SQL> @?/sqlplus/admin/plustrce.sql SQL> grant plustrace to public; Oracle 9i 이하 버전에서 추가 (10g 이상에서는 할 필요 없음) SQL> @?/rdbms/admin/utlxplan.sql Autotrace 옵션 질의결과 실행계획 통계 set autotrace on O O O set autotrace on statistics ..

오라클/Tuning 2010.08.13

ASMM (Automatic Shared Memory Management)

Oracle 10g 부터는 자동화된 SGA 관리 기능을 제공한다. 이러한 기능을 ASMM(Automatic Shared Memory Management)이라고 부른다. 11g에서는 더 업그래드 되어 PGA까지 관리가 가능하다. 오라클 설치시 default로 사용되도록 설정되어 있다. ASMM 기능을 사용하면 사용 가능한 메모리를 보다 효과적으로 사용하여 하드웨어 메모리 리소스를 추가하는 데 드는 비용을 줄일 수 있을 뿐만 아니라 보다 동적이고 유연하며 적응력 있는 메모리 관리 방식을 도입하여 간단하게 Oracle database를 관리 할 수 있다. 작업 부하로 구성이 변경될 때 Oracle Database 10g는 해당 풀의 크기를 확대하고 자동으로 크기가 조정된 다른 풀의 크기를 그에 맞게 줄인다. ..

오라클/Tuning 2010.06.05

Driving Table 이란?

Driving Table 이란? TABLE에 대한 JOIN시 먼저 ACCESS되서 ACCESS PATH를 주도하는 TABLE을 DRIVING TABLE이라 한다. DRIVING TABLE로 결정되는 것은 INDEX의 존재 및 우선순위 혹은 FROM절에서의 TABLE지정순서에 영향을 받으며 어느 TABLE이 먼저 ACCESS되느냐에 따라 속도의 차이가 크게 날 수 있으므로 매우 중요하다. 기본적으로 대상 TABLE의 행 중 작업대상이 되는 행의 수 가 적은 쪽이 먼저 ACCESS되어야 전체 일 양이 줄어든다. Driving table의 결정 규칙은 다음과 같다. JOIN 되는 컬럼의 한쪽에만 INDEX가 있는 경우는 INDEX가 지정된 TABLE이 DRIVING TABLE이 된다. WHERE emp.dep..

오라클/Tuning 2010.05.16

select * from t1 sort ? ㅋ

강사님께서 어제 급 질문을 던지셨다. 테이블을 생성한 후 select * from t1 sort 해서 출력되는 값이 정렬이 되지 않는데 index를 생성해도 정렬이 되지 않았다. 그런데 primary key를 생성하니 정렬이 된다. 어떤 이유에서 그럴까? 이게 질문이었는데.. sort ?? sort라는 키워드는 처음 들어본다. order by도 아니고 sort가 머지??..ㅋ 예문은 다음과 같다. SCOTT@192.168.0.10:1521/orcl> drop table t1 purge; 테이블이 삭제되었습니다. SCOTT@192.168.0.10:1521/orcl> create table t1 (no number); 테이블이 생성되었습니다. SCOTT@192.168.0.10:1521/orcl> insert..

오라클/Tuning 2010.05.09