본문 바로가기

Oracle

Oracle 1 12/14

 

select sal

from emp

where empno = 7788;    

                    :b_id (bind)

1) parse 단계  - > soft parse or hard parse 결정   -> hash (...) function 에 집어넣어서 판단. ==> 8자리의 hash value 나옴  

soft parse - 동일한 sql문 : 대문자, 공백, object 들이 일치해야 soft parse 

              shared pool에 저장된 실행 계획 , p-code를 재사용 - 없으면 hard parse 진행 

 

hard parse - 

 

잘못된 SQL?

과도한 구문분석 시간

과도한 I/O

과도한 CPU 시간 

과도한 대기

 

 

 

Active Session History - 현재 사용되는 .. 메모리를 가장 많이 사용하는 것들 보고

ADDM 보고서 - 현재 상태의 통계를 저장 - 시간별로 사진을 찍어서 변화를 비교하여 보고, 문제잇으면 보고 .

SQL Tuning Advisor - 튜닝 계획 , 누락된 인덱스 추가 

 

OLAP -구문분석시간은 중요하지않음. 

 

2) bind 

 

3)execute 

 

4) fetch

 

 

 

애플리케이션 Trace 사용을 위해 환경 설정 

 

잘실행 되는지?

 

안되면 . (안되는 이유: 프로그램 깔앗던 곳에서 로그인 안했기 떄문에 insufficient 뜸 )

 

해결방법

 

alter user system identified by oracle;

 

-> cmd창 열기 

> cd \

> cd labs

>sqlplus system/oracle

>@setup_win.sql

 

--여기서 또안되면  setup_win.sql 파일에들어가서 수정 -> conn conn / as sysdba 를 지우면 됨.

--다시확인 >@setup_win.sql

 

test 유저가 생성되었으니 test 로 '새접속' 해보자 (오른쪽위 가 현재 사용중인 데이터베이스이다 )

우선 구조 확인해보자

select * from emp;

select * from dept;

select * from employees;


select count(*) from sales;

select count(*) from customers;

select count(*) from custs;

Trace 사용 해보기전, 확인

 

TKPROF- trace file 은 binary로 되어있어 읽을수 없지만, 읽을수있게 바꿔준다.

cpu룰 가장많이쓰는 것들 실행을 제일 많이하는 것들 먼저 튜닝하고 싶다하면 조건에 따라 sql문장에서 실행되도록

 

TRCSESS - 그룹핑을 하여 분석하고 싶을때.. 필요함

 

 

SQL Trace 

ALTER session set tracefile_identifier ='case1';

trace 파일의 이름: <SID>_ora_PID_case1.trc 이렇게 identify 하기 쉽게 이름을 바꿔줌

 

세션 활성화 시켜라

alter session set sql_trace=true;

트레이스 세션 비활성화 시켜보자

alter session set sql_trace =false;

경로에 진짜있다! 

복사해서 c:\ labs 에 붙여넣기 해보자 

그러고 cmd에서 확인

있네~

sql 실행 단계별로 통계 보여줌

논리적읽기 query + current -disk

 

물리적 읽기 query

 

 

 

 

11g: v$diag_info

2)10046

alter session set events '10046 trace name context forever, level 8'; --키는 명령어

 

(level : 1 : 기본

         4 : 기본 정보 + bindin 정보

         8 : 기본 정보 + waiting 정보

         12 : 기본 정보 + binding 정보 + waiting 정보)

 

alter session set events  '10046 trace name context off'; --끄는 명령어 

 

 

3) trcsess output = min.trc service=EDU*.trc

 

 

Optimizer

더좋은 인덱스를 사용하기위해 추론

 

옵티마이저 - query transformer

옵티마이저 -cost estimator

 

select *

from emp

where deptno=10;

 

1)selectivity : 행의 비율 0~1 사이의값 num_distinct 1/10 => 0.1 

선택성 = 조건을 충족하는 행 수 / 총 행 수

 

2)cardinality : 행의 건수  Cardinality = 총 행 수 * 선택성

           0.1 * num_rows

 

3) cost : (i/o time + CPU time ) / SBI  time 

i/o time = Single Block io time + Multi block io time 

 

실행 계획 생성

 

실행계획 확인하는 방법(도구)

1)explain plan 

 

plan_table : temporary 테이블임. global temporary table

영구플랜테이블로 저장하고 싶으면   $ORACLE_HOME/rdbms/admin/utlcplan.sql 을 실행해서 plan_table 

2)autotrace

 

3)v$sql_plan

'Oracle' 카테고리의 다른 글

12/21  (0) 2019.12.21
Oracle 12/18  (0) 2019.12.19
Oracle 12/15  (0) 2019.12.15