"오라클 튜닝 autotrace"의 두 판 사이의 차이
DB CAFE
(→PLAN_TABLE is older version 메시지) |
(→PLAN_TABLE is older version 메시지) |
||
48번째 줄: | 48번째 줄: | ||
SQL>drop table plan_table; | SQL>drop table plan_table; | ||
</source> | </source> | ||
− | + | Oracle 9i 에서 이런오류를 만났다면 8i이전 버전의 테이블이 생성된 것이므로 테이블 DROP 후 재생성해 주면된다. | |
− | |||
− | Oracle 9i | ||
Oracle 10g 제품 부터는 사용자가 plan_table을 생성할 필요가 없다. | Oracle 10g 제품 부터는 사용자가 plan_table을 생성할 필요가 없다. | ||
56번째 줄: | 54번째 줄: | ||
SYS 스키마에 모든 유저가 사용할 수 있는 임시 테이블 PLAN_TABLE$과 PUBLIC SYNONYM PLAN_TABLE 존재. | SYS 스키마에 모든 유저가 사용할 수 있는 임시 테이블 PLAN_TABLE$과 PUBLIC SYNONYM PLAN_TABLE 존재. | ||
− | + | 사용자 스키마에 plan_table이 존재 할 경우 동의어보다 테이블을 우선 탐색하기 때문에 오류 메시가 발생. | |
10g와 11g 모두 36개 칼럼을 가지고 있다. | 10g와 11g 모두 36개 칼럼을 가지고 있다. |
2020년 11월 20일 (금) 13:59 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 AUTOTRACE[편집]
SQL 플랜 정보 조회
1.1 AUTOTRACE 권한[편집]
- PLAN_TABLE 필요 (10G 이상은 SYS.PLAN_TABLE$ 존재함, => 즉, 생성할 필요없음 , 없으면 시노님 생성 하면됨.)
- 실행통계 확인시 V_$SESSSTAT,V_$STATNAME,V_$MYSTAT 읽기권한 필요
- 롤을 생성하여 부여 가능
SQL> @?/sqlplus/admin/plustrce.sql
SQL> grant plustrace to scott;
1.2 AUTOTRACE 옵션[편집]
- set autotrace on
- SQL실행
- 실행 결과 집합
- 예상 실행 계획 출력
- 예상 실행 통계 출력
- set autotrace on explain
- SQL실행
- 실행 결과 집합
- 예상 실행 계획 출력
- set autotrace on statistics
- SQL실행
- 실행 결과 집합
- 실행 통계 출력
- set autotrace traceonly
- SQL실행
- 실행 결과 출력 하지 않음
- 예상 실행 계획 출력
- 실행 통계 출력
- set autotrace traceonly explain
- SQL실행 하지 않음
- 예상 실행 계획 출력
- set autotrace traceonly statistics
- SQL실행
- 실행 결과 출력 하지 않음
- 실행 통계 출력
1.3 PLAN_TABLE is older version 메시지[편집]
Note: PLAN_TABLE is older version: Using simple plan output.
PLAN_TABLE의 버전이 오래 되어서 없는 칼럼이 존재 하기 때문이다.
plan_table을 다시 생성해 주면 된다.
SQL>drop table plan_table;
Oracle 9i 에서 이런오류를 만났다면 8i이전 버전의 테이블이 생성된 것이므로 테이블 DROP 후 재생성해 주면된다.
Oracle 10g 제품 부터는 사용자가 plan_table을 생성할 필요가 없다.
SYS 스키마에 모든 유저가 사용할 수 있는 임시 테이블 PLAN_TABLE$과 PUBLIC SYNONYM PLAN_TABLE 존재.
사용자 스키마에 plan_table이 존재 할 경우 동의어보다 테이블을 우선 탐색하기 때문에 오류 메시가 발생.
10g와 11g 모두 36개 칼럼을 가지고 있다.
- PLAN_TABLE 확인
- desc PLAN_TABLE;
- PLAN TABLE 오너.테이블명
- desc sys.PLAN_TABLE$;
- PLAN TABLE 확인
select owner, table_name, tablespace_name
from dba_tables
where table_name = 'PLAN_TABLE';
select owner, object_type, object_name
from dba_objects
where object_name like 'PLAN_TABLE%';
- 생성 SQL
create table PLAN_TABLE (
statement_id varchar2(30), -- 사용자지정 식별자
plan_id number, -- 플랜의 고유번호
timestamp date, -- 실행계획이 수립된 날짜와 시간
remarks varchar2(4000), -- 사용자가 부여한 주석(comments)
operation varchar2(30), -- AND-EQUAL,INDEX, SORT 등과 같은 실행 연산자
options varchar2(255),
object_node varchar2(128), -- 사용한 데이타베이스 링크
object_owner varchar2(30), -- 객체를 생성한 소유자
object_name varchar2(30), -- 테이블, 인덱스, 클러스터 등 객체의 이름
object_alias varchar2(65),
object_instance numeric, -- FROM절에 기술된 객체에 좌에서우로 부여한 번호
object_type varchar2(30), -- TABLE, INDEX 등 객체의 종류
optimizer varchar2(255), -- CHOOSE, FIRST_ROW 등의 현재의 옵티마이져 모드
search_columns number,
id numeric, -- 실행계획의 단계별 일련번호
parent_id numeric, -- 트리구조상 부모노드 일련번호
depth numeric,
position numeric, -- 부모노드기준 처리순서
cost numeric, -- CBO에 의해서 추정된 현재의 연산비용
cardinality numeric, -- 실행단계에서 처리될 Rows
bytes numeric, -- 실행단계에서 처리될 바이트
other_tag varchar2(255),
partition_start varchar2(255), -- 파티션범위 검색시 시작 파티션
partition_stop varchar2(255),
partition_id numeric,
other long, -- 다른 필요한 텍스트 저장을 위한 칼럼
distribution varchar2(30),
cpu_cost numeric,
io_cost numeric,
temp_space numeric,
access_predicates varchar2(4000),
filter_predicates varchar2(4000),
projection varchar2(4000),
time numeric,
qblock_name varchar2(30),
other_xml clob
);