본문 바로가기
스터디북

<11/19> 서른즈음에

by 파이어볼러 2015. 11. 19.

v$sysmetric_history;


최근 1시간의 Database에서 사용할 수 있는 모든 시스템 Metric을 표시한다.


v$filemetric_history;


최근의 파일의 read / write time 및 물리적 블록 읽기의 시간이 기록된 metric 정보


dba_hist_sessmetric_history;


여러 중요 세션 Metrics에 대한 기록 표시 및 v$sysmetric_history 뷰에 대한 샘플(스냅샷)을 포함합니다.


SGA 가 작으면


1) 메모리 경합

2) I/O

3) CPU


1. Shared pool


1) Library cache

커서 보유량 감소

하드 파스 증가 -> CPU 사용량 증가

Latch : shared pool 사용량 증가


2) dictionary cache 

dictionary row 보유량 감소

디스크 I/O 증가


2. Buffer cache

free buffer 적음


ckpt 빈도 높아짐 I/O 증가

cache hit 감소 I/O 증가


3. redo log buffer


latch redo allocation

latch redo copy

latch redo write


allocation해서 없으면 write잡고 내려씀

이것 역시 메모리 경합


CBC


CBLC LRU    main 모든 buffer

       LRU    aux free

       LRUW main dirty

       LRUW  aux 내려쓰는중인 dirty


parse

1) hash value

2) library cache

3s check row cache 

latch : row cache object

miss? latch: shared pool -> row cache lock

공간 없으면 ? LRU 기준 덮어씀 

I/O


3) miss?

latch : shared pool

가장 적절한 크기의 free chunk search

없으면 free chunk를 쪼개서 사용

없으면 LRU 기준 덮어씀

없으면? SGA가 작은것, 재사용을 못함 중복된 SQL


4) cursor 만들고 optimizing row source generation

plan genarator를 오라클이 사용할 수 없기에 row source generation해서 

실행파일 형태도 만들어야 한다 hard parse -> CPU


buffer cache 프리 버퍼 찾고 데이터 블록 찾고 LRU 리스트 관리하고 더퍼 버퍼 클리닝하고


버킷 번호를 찾을때 파일넘버 블록넘버를 가지고 찾음 1+437 mod 4 =2 넣는다


desc x$bh


hash latch address HLADDR


해시에서 블록을 찾고 버킷 래치하고 헤더 찾고 찾으면 블록 읽고 못찾으면 디스크에서 가져온다


emp table 한 블록에 있으면 멀 하던 그 블록에 집중됨 그거를 그쪽에 많이 발생하니까

메모리 좀 더 쓰고 그거를 나눈다음에 올려라 핫블록 현상 감소


X$BH.TCH 터치 카운트 컬럼


async 기능 dbwr


orcl@SYSTEM> create table tab1 (

  2  key varchar2(10),

  3  fld1 varchar2(10),

  4  fld2 number(10) );


Table created.


orcl@SYSTEM> insert into tab1 values('A','AAB',111);


1 row created.


Elapsed: 00:00:00.04

orcl@SYSTEM> insert into tab1 values('B','AAC',123);


1 row created.


Elapsed: 00:00:00.00

orcl@SYSTEM> insert into tab1 values('C','ABA',222);


1 row created.


Elapsed: 00:00:00.00

orcl@SYSTEM> insert into tab1 values('D','ABB',233);


1 row created.


Elapsed: 00:00:00.00

orcl@SYSTEM> insert into tab1 values('E','ABC',143);


1 row created.



orcl@SYSTEM> create table tab2 (

  2  key varchar2(10),

  3  col1 number(10),

  4  col2 varchar2(10) );


Table created.


orcl@SYSTEM> insert into tab2 values('A',10,'AA');


1 row created.


Elapsed: 00:00:00.04

orcl@SYSTEM> insert into tab2 values('B',10,'AB');


1 row created.


Elapsed: 00:00:00.00

orcl@SYSTEM> insert into tab2 values('C',10,'AC');


1 row created.


SELECT  X.KEY, X.FLD1, X.FLD2, Y.KEY, Y.COL1, Y.COL2

FROM    TAB1 X,  TAB2  Y

WHERE   X.KEY = Y.KEY(+)

  AND   X.FLD1 > 'AAA'

  5    AND   Y.COL1 = 10 ;


KEY        FLD1             FLD2 KEY              COL1 COL2

---------- ---------- ---------- ---------- ---------- ----------

A          AAB               111 A                  10 AA

B          AAC               123 B                  10 AB

C          ABA               222 C                  10 AC


SELECT  X.KEY, X.FLD1, X.FLD2, Y.KEY, Y.COL1, Y.COL2

FROM    TAB1 X,  TAB2  Y

WHERE   X.KEY = Y.KEY(+)

  AND   X.FLD1 > 'AAA'

  5    AND   (Y.COL1 = 10  OR  Y.COL1 IS NULL) ;


KEY        FLD1             FLD2 KEY              COL1 COL2

---------- ---------- ---------- ---------- ---------- ----------

A          AAB               111 A                  10 AA

B          AAC               123 B                  10 AB

C          ABA               222 C                  10 AC

E          ABC               143

D          ABB               233



'스터디북' 카테고리의 다른 글

<11/22> 상심  (0) 2015.11.22
<11/20> Blind Love  (0) 2015.11.20
[11/18] DB Downgrade  (0) 2015.11.18
<11/18> Luv  (0) 2015.11.18
<11/17> Remember  (0) 2015.11.17