TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | DBMS_UTILITY, DBMS_DDL을 이용하여 ANALYZE하는 방법 | ||
---|---|---|---|
DBMS_UTILITY, DBMS_DDL을 이용하여 ANALYZE하는 방법
================================================= PURPOSE ------- CBO(Cost Based Optimizer)에 대한 통계 정보를 수집하는 방법에 대하여 알아보기로 한다. Explanation ----------- 보통, DB 내의 table, index 등에 대한 통계 정보를 관리하기 위해서는 analyze command를 이용하게 된다. analyze 작업은 이러한 'analyze' command 이외에 Oracle에서 기본으로 제공하는 procedure에 의해서도 가능하다. 이들 procedure를 이용하면, . 전체 DB 내의 모든 object들에 대해서, . 특정 schema 내의 모든 object들에 대해서, . 하나의 특정 object에 대해서 analyze 작업이 가능하다. 또한, 한번 analyze된 object들은 지속적인 변경 사항들을 반영하기 위하여 자주 re-analyze 해야 할 필요성이 생기는데, dbms_job을 이용하여 여기서 소개하는 procedure들을 job으로 등록할 경우 특정 시점에 또는 특정 시간 간격으로 analyze를 자동으로 수행하는 것이 가능해진다. (DBMS_JOB에 관련된 내용은 Bulletin 10707, Oracle7 Server Administrator's Guide 등을 참조한다.) Package 생성 script ================== $ORACLE_HOME/rdbms/admin/dbmsutil.sql, prvtutil.plb 를 SYS user로 수행한다. Example ------- DBMS_UTILITY.ANALYZE_DATABASE(method varchar2, estimate_rows number default null, estimate_percent number default null, method_opt varchar2 default null); Database 내의 모든 object(table, cluster, index)들을 analyze한다. 예) SQL> exec dbms_utility.analyze_database('COMPUTE') ; DBMS_UTILITY.ANALYZE_SCHEMA(schema varchar2, method varchar2, estimate_rows number default null, estimate_percent number default null, method_opt varchar2 default null); 특정 schema 내의 모든 object(table, cluster, index)들을 analyze한다. 예) SQL> exec dbms_utility.analyze_schema('SCOTT','ESTIMATE',NULL,15); DBMS_DDL.ANALYZE_OBJECT(type varchar2, schema varchar2, name varchar2, method varchar2, estimate_rows number default null, estimate_percent number default null, method_opt varchar2 default null); analyze command처럼 특정 object를 analyze한다. 예) SQL> exec dbms_ddl.analyze_object('TABLE','SCOTT','EMP','COMPUTE'); 각 argument들의 의미 ==================== type : 'TABLE', 'CLUSTER', 'INDEX' 중의 하나로서 analyze 대상 object의 type. 만약 위의 세 가지가 아닌 다른 type를 입력하면 procedure는 return된다. schema : 대상 object의 schema로서, null일 경우는 current schema를 의미 name : 대상 object의 이름 method : 'COMPUTE', 'ESTIMATE', 'DELETE' 중의 하나. 만약 'ESTIMATE'를 사용한다면 estimate_rows, estimate_percent 중의 하나는 값을 입력해야 한다. estimate_rows : estimate하는 row의 갯수 estimate_percent : estimate하는 row의 percentage로서 estimate_rows가 함께 입력되면 이 argument는 무시됨. method_opt : method options으로 다음의 값들을 가질 수 있다. [ FOR TABLE ] [ FOR ALL [INDEXED] COLUMNS] [SIZE n] [ FOR ALL INDEXES ] |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |