Microsoft Word - CNVZNGWAIYSE.docx

Similar documents
62

목 차

Tablespace On-Offline 테이블스페이스 온라인/오프라인

PowerPoint Presentation

Jerry Held

Oracle Database 10g: Self-Managing Database DB TSC

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

DBMS & SQL Server Installation Database Laboratory

Microsoft Word - CNVZNGWAIYSE.docx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

KEEP BUFFER 활용방안 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 Oracle 은유저가요청한작업을빠르게처리하기위해 Buffer Cache 라는것을사용한다. Buffer Cache 는 SGA 에위치하고있으며, 오라클인스턴스에접속하는모든프로세스에의해공유된다. 이 Bu

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Oracle Wait Interface Seminar

The Self-Managing Database : Automatic Health Monitoring and Alerting

<BED5BACEBCD32E696E6464>

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

歯sql_tuning2

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Microsoft PowerPoint - o8.pptx

C# Programming Guide - Types

Windows Server 2012

untitled

강의 개요

6주차.key

OCP PL/SQL

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Presentation

세미나(장애와복구-수강생용).ppt

Windows 8에서 BioStar 1 설치하기

JVM 메모리구조

Microsoft PowerPoint - dba1_Cover_Rev1_1.ppt

Simplify your Job Automatic Storage Management DB TSC

MS-SQL SERVER 대비 기능

슬라이드 1

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

最即時的Sybase ASE Server資料庫診斷工具

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

MySQL-.. 1

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

Contents Data Mart 1. 개요 실습방향 테스트위한사전설정 본격실습시작 ) 데이터파일 dd 명령어로 백업수행및유실시키기 ) 장애복구수행 결론...7 페이지 2 / 7

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

목차 1. Tibero RDBMS 소개 2. 데이터베이스로서의기본기능 3. 데이터베이스저장구조 (Database Storage Structure) 3.1. Logical Structure 3.2. Physical Storage Structure 4. 티베로프로세스 (T

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

Document Server Information Items Description Test Date 2011 / 05 / 31 CPU Intel(R) Xeon(R) CPU 2.40GHz X 8 Main Memory 1GB O/S version OEL 5.

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint 프레젠테이션

문서 템플릿

1217 WebTrafMon II

Microsoft PowerPoint - chap06-2pointer.ppt

리눅스 free 메모리의이해 엑셈컨설팅본부 /DB 컨설팅팀임경석 개요 리눅스환경에서메모리사용률을모니터링하기위해명령어를실행하다보면시스템을기동한지얼마되지않아 free 영역의지표가급격히줄어드는것을쉽게확인할수있다. 리눅스어드민경험이있는사람이라면이것이무엇을의미하는지알수있지만그렇

PowerPoint Template

Microsoft PowerPoint - chap01-C언어개요.pptx

쉽게 풀어쓴 C 프로그래밊

슬라이드 1

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Chapter 1

adfasdfasfdasfasfadf

Microsoft PowerPoint - 10Àå.ppt

PowerPoint 프레젠테이션

untitled

금오공대 컴퓨터공학전공 강의자료

슬라이드 1

PowerPoint Presentation

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

강의10

ISP and CodeVisionAVR C Compiler.hwp

PowerPoint Presentation

Adobe Flash 취약점 분석 (CVE )

PowerPoint 프레젠테이션

BMP 파일 처리

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

<49534F C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770>

초보자를 위한 분산 캐시 활용 전략

11장 포인터

PCServerMgmt7

Frama-C/JESSIS 사용법 소개

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint Presentation

유니티 변수-함수.key

Microsoft PowerPoint - Java7.pptx

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

10:00-11:30 Memory part I & II 11:30-13:00 13:00-14:00 Memory part III 14:10-15:00 I/O Part I 15:10-16:00 I/O Part II

결과보고서

Orcad Capture 9.x

APOGEE Insight_KR_Base_3P11

Install stm32cubemx and st-link utility

오라클 데이터베이스 10g 핵심 요약 노트

Observational Determinism for Concurrent Program Security

Oracle9i Real Application Clusters

MaxGauge( 맥스게이지 ) 를이용한 SQL 모니터링, 진단 / 분석및튜닝가이드 엑셈

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

Transcription:

Print Date: 2010-12-12 Oracle Memory DATE : 2010-12-12 06:07 Writer : 박상수 License : 개인자료 CALMMASS.TISTORY.COM - 본문서는모든사람에게열람및수정모두가능합니다 -

버전 수정일 작성자 변경내역 1.0 2010/12/04 박상수 Oracle Memory(PGA, SGA) 개념및관리 1.1 2010/12/06 박상수 Shared Pool 1.5 2010/12/07 박상수 Database Buffer Cache 1.8 2010/12/10 박상수 Redo Log Buffer, Java Pool, Large Pool 2.0 2010/12/12 박상수 최종문서정리 제목 : Oracle Memory... - 2 -

목차 1. 시스템구성... 5 1.1. 개요... 5 1.1.1. 정의... 5 1.1.2. 목적... 5 1.1.3. 환경... 5 2. Oracle Memory Structure... 6 2.1. Oracle Memory 종류... 6 3. PGA(Program Global Area)... 7 3.1. PGA 개념... 7 3.2. PGA 관리... 8 4. SGA(System Global Area)... 10 4.1. SGA 개념... 10 4.2. SGA 관리... 11 4.3. Shared Pool... 13 4.3.1. 라이브러리캐시 (Library cache)... 15 4.3.2. 딕셔너리캐시 (Dictionary cache)... 17 4.3.3. 예약영역 (Reserved Area)... 19 4.3.4. 시스템영역 (Permanent Area)... 19 4.3.5. 구성조회... 19 4.4. DB 버퍼캐시 (DB Buffer Cache)... 20 4.4.1. 블록단위 I/O... 20 4.4.2. 버퍼캐시구조... 20 4.5. 리두로그버퍼 (Redo Log Buffer)... 23 4.6. 대형풀 (Large Pool)... 24 4.7. 자바풀 (JAVA Pool)... 25 5. 참고자료... 26 제목 : Oracle Memory... - 3 -

표목차 표 1 ORACLE DATABASE 접속방법...7 표 2 PGA PARAMETER 설명...8 표 3 동적 / 정적 PARAMETER FILE... 12 표 4 SGA 메모리의크기설명... 12 표 5 SHARED POOL 동적영역... 13 표 6 GRANULE 단위... 14 표 7 예약영역 PARAMETER... 19 표 8 LRU, LRUW 리스트... 22 표 9 LARGE POOL 주요사용목적... 24 제목 : Oracle Memory... - 4 -

1. 시스템구성 1.1. 개요 1.1.1. 정의 - Oracle Database 10g를기준으로문서를작성합니다. - 데이터를조작하고조회할때논리적 / 물리적데이터를주기적으로발생시킨다면성능에큰문제가발생될수있습니다. 그래서메모리에저장해서사용했던문장은재활용할수있게해주는역할을해주는것이 Oracle Memory 입니다. 1.1.2. 목적 - PGA - SGA(Shared Pool, Data Buffer Cache, Redo Log Buffer, Large Pool, JAVA Pool 그외 ) - Memory관련 Parameter 정리 1.1.3. 환경 - OS : Windows 7 Home Premium K - Oracle : Red Hat Enterprise Linux 4 X86 + Oracle Database 10g R2 - 프로세서 : Intel core(tm)2 Duo CPU P8700 - 메모리 : 4G - 시스템종류 : 32비트 제목 : Oracle Memory... - 5 -

2. Oracle Memory Structure 2.1. Oracle Memory 종류 - Oracle 에서사용하는메모리는크게두가지가존재합니다. (PGA, SGA) 그림 1 Memory Structures. 제목 : Oracle Memory... - 6 -

3. PGA(Program Global Area) 3.1. PGA 개념 - PGA는서버프로세스에생성되며 Oracle에서사용하는메모리영역입니다. - 사용자가요청에의하여유저프로세스가생성되며해당유저프로세스는데이터베이스에접속하는순간모든정보를서버프로세스에게전달하게됩니다. 이때요청받은내용및기타정보를저장하기위해서버프로세스는자신만의메모리공간인 PGA를 Oracle에의해할당됩니다. - 각서버프로세스에하나만할당되는 PGA 메모리영역은 SGA 영역과달리다른프로세스와공유되지않는, 각프로세스가독립적으로사용하는 Non-shared 메모리영역입니다. - PGA 구체적인구조를설명하겠습니다. 정렬공간 (Soft Area) 구조 내용 Order By 또는 Group By 등의정렬을수행하기위한공간이며, 해당공간 에서만정렬이완료된다면이를메모리정렬이라고합니다. 하지만메모리 의공간부족으로정렬을해야할경우디스크 (Temp Tablespace) 를이용합 니다. 세션정보 (Session Information) 커서상태정보 서버프로세스에의해추출된결과값을전달하기위해필요한유저프로 세스의세션정보를저장합니다. 해당 SQL 의파싱 (Parsing) 정보가저장되어있는주소를저장합니다. (Curser State) 변수저장공간 (Stack Space) SQL 문장에바인드변수 (Bind Variable) 를사용했을경우바인드변수를저 장하는공간입니다. 예를들면 SQL 문에콜론 (:) 을의미합니다. Ex) SELECT * FROM EMP=:emp 표 1 Oracle Database 접속방법 제목 : Oracle Memory... - 7 -

3.2. PGA 관리 - 이전오라클버전에서는 SORT_AREA_SIZE를설정하여세션별로정해진크기의 PGA를할당하여작업을수행하였습니다. 그라나오라클 9i 및 10g 에서는세션별로정해진 PGA 크기가아닌 PGA_AGGREGATE_TARGET Parameter에정해진크기범위에서세션별로자동으로할당하여메모리를사용할수있게되었습니다. - PGA 크기를관리하는 Parameter를설명하겠습니다. PARAMETER 내용 WORKAREA_SIZE_POLICY Manual과 Auto로설정할수있습니다. Auto로설정했을경우에는 PGA_AGGREGATE_TARGET Parameter를이용하여 PGA의크기를설정하겠다는의미입니다. Manual로설정할경우 SORT_AREA_SIZE Parameter를이용하여정렬공간을설정하게됩니다. PGA_AGGREGATE_TARGET 모든세션의 PGA 크기의합을설정하는 Parameter이며, PGA_AGGREGATE_TARGET Parameter에서지정한크기까지오라클이 PGA를자동으로관리합니다. SORT_AREA_SIZE 정렬공간에대한크기를설정하는 Parameter 입니다. 표 2 PGA PARAMETER 설명 - 현재데이터베이스에하나의유저만접속했다고가정하고 40MB의데이터를정렬하려고한다면 SORT_AREA_SIZE가 40MB보다커야합니다. SORT_AREA_SIZE 10MB라면총 4번의 I/O를발생하게되어성능에문제를발생시킬수도있습니다. 그래서 WORKAREA_SIZE_POLICY Parameter를 AUTO 로설정하고 PGA_AGGREGATE_TARGET Parameter에 50MB로지정한다면 I/O를발생하지않고메모리에서정렬작업을수행하게됩니다. 이를자동 PGA 조정이라고합니다. - 다른유저가 50MB의공간을모두사용하고있을때다른유저가접속하여서버프로세스를생성하려고한다면세션을메모리에할당받지못하므로에러가발생됩니다. 자동으로조정했을경우에는반드시평소유저의접속하는세션수와각세션이사용하는 PGA의크기를정확히파악해서 PGA_AGGREGATE_TARGET Parameter에설정하셔야합니다. 제목 : Oracle Memory... - 8 -

- 평소사용되는 PGA 의크기를확인 그림 2 V$POCESS Parameter 제목 : Oracle Memory... - 9 -

4. SGA(System Global Area) 4.1. SGA 개념 - SGA란 instance의구성요소이며여러서버프로세스들이 Query를수행하기위해공유해서사용하는공간입니다. - SGA 필수요소 Shared Pool Database Buffer Cache Redo Log Buffer - SGA 선택적인요소 Large Pool JAVA Pool Streams Pool(10g용 ) 제목 : Oracle Memory... - 10 -

4.2. SGA 관리 - SGA 변경 (SGA 일부인 Database Buffer Cache 를테스트해보겠습니다.) - SGA 확인 그림 3 DB_CACHE_SIZE 변경 그림 4 SGA 관련 Parameter 제목 : Oracle Memory... - 11 -

- show sga, v$sga, v$sgastat, v$sga_dynamic_components - SGA 구조를변경하는 Parameter File 종류 PARAMETER FILE 내용 정적 Parameter File 데이터베이스가재시작하게되면 Parameter 파일 (PFILE : initsid.ora) 에설정된값을재적용하게됩니다. $ORACLE_HOME/dbs/init[SID].ora 파일은 TEXT 파일이므로 VI 편집기를이용하여 Parameter를변경값을수정합니다. 동적 Parameter File 동적환경파일 (SPFILE :spfilesid.ora) 을사용하는경우 ALTER SYSTEM SET parameter = value scope=spfile 변경할수있습니다. 변경된값이메모리와동적 Parameter 파일에동시에적용되므로데이터베이스재시작후에도변경된값을적용합니다. $ORACLE_HOME/dbs/spfile[SID].ora 파일을사용하며바이너리파일이므로 VI 편집기로수정해서는안됩니다. 표 3 동적 / 정적 PARAMETER FILE - show sga, v$sga 결과값에대한정리 이름 내용 Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SGA 총메모리합계 Shared Pool에서고정영역의크기 Shared Pool의일부, Large Pool, JAVA Pool 영역의크기 Database Buffer Cache 영역의크기 Redo Log Buffer 영역의크기 표 4 SGA 메모리의크기설명 제목 : Oracle Memory... - 12 -

4.3. Shared Pool - 고정영역은오라클이관리하는메커니즘및오라클파라미터정보가저장됩니다. 그리고 SQLPLUS 에서 show sga 명령어로부터추출되는값중에서 Fixed Size의값이고정영역의크기입니다. - 동적영역은 Parse 단계에서주로사용되는메모리구성요소입니다. 내부적으로 Library cache와 Dictionary cache(row cache라고도합니다.) 로나눠져있습니다. - 동적영역의메모리구성요소 이름 라이브러리캐시 (Library cache) 내용 Soft parse 할때사용되는공간으로이미수행되었던 SGL 문장이 나 PL/SQL 문장의 parse code 와해당 SQL / PLSQL 문장, 실행계 획 (Execution Plan) 등이저장되어있으며 LRU(Least Recently Used) 알고리즘을사용합니다. 딕셔너리캐시 (Dictionary cache) 구문분석이나 Optimizer 가실행계획을세울때사용되는주요 Dictionary들이저장되어있으며 LRU(Least Recently Used) 알고리즘을사용합니다. 표 5 Shared Pool 동적영역 - Shared Pool 의크기는 shared_pool_size 라는파라미터로설정할수있으며 library cache, Dictionary cache 의크기는각각따로관리하지않습니다. shared_pool_size 파마미터는 DB 를종료하지않아도아래와같이사이즈를변경할수있습니다. 제목 : Oracle Memory... - 13 -

그림 5 Shared Pool 크기변경 - [ 그림 5] SHARED_POOL_SIZE 파라미터의크기를변경하는방법입니다. 하지만자세히살펴보면 SHARED_POOL_SIZE 크기를 12m 으로변경했을경우에는정상적으로변경되지만 10M 로변경할경우크기가변경되지않는것을보실수있습니다. 그것은그래뉼 (granule) 이라는단위로메모리를할당하고해제해서그렇습니다. 예를들면 SGA 총크기는 SGA_MAX_SIZE 라는파라미터에의해제한되는데이파라미터의크기가 1G 보다작거나같으면 1Granule=4M 이고 1G 초과이면 1Granule=16M 가됩니다. 9i 에서는 SGA_MAX_SIZE 사이즈가 128M 를기준으로그래뉼크기가결정됩니다. 쉽게말해서조건에의해서 4 의배수또는 16 의배수로값을정의한다는말과같습니다. 아래와같이버전에따라그래뉼의크기가달라집니다. 버전 Oracle Database 9i 내용 SGA_MAX_SIZE <=128MB 1Granule= 4M SGA_MAX_SIZE > 128MB 1Granule= 16M Oracle Database 10g R1 이상 SGA_MAX_SIZE <=1GB 1Granule= 4M SGA_MAX_SIZE > 1GB 1Granule= 16M 표 6 Granule 단위 제목 : Oracle Memory... - 14 -

4.3.1. 라이브러리캐시 (Library cache) - 사용자가 SQL이라는명령어를통해결과집합을요청하면이를최적으로수행하기위한처리루틴이필요한데, 이를실행계획 (execution plan) 이라고합니다. 빠른쿼리수행을위해내부적으로생성한일종의프로시저와같은것이라고이해하면쉽습니다. - 쿼리구문을분석해서문법오류및실행권한등을체크하고, 최적화과정을거쳐실행계획을만들고 SQL 실행엔진이이해할수있는형태로포캣팅하는전과정을하드파싱 (hard Parsing) 이라고하며, 한번사용한쿼리구문을재사용하는것이소프트파싱 (Soft Parsing) 이라고합니다. 여기에서동일한 SQL로인식하기위해서는다음과같이동일해야합니다. 대, 소문자일치 띄어쓰기일치 오브젝트소유자일치 - SQL에대한반복적인하드파싱을최소화하기위한새로운캐시공간을두는것이라이브러리캐시라고할수있으며라이브러리캐시의최적화원리는캐싱된 SQL과그실행계획의재사용성을높이는데있습니다. - 라이브러리캐시에는실행가능오브젝트뿐아니라거기서참조하는테이블, 인덱스, 클러스터같은 데이터베이스오브젝트정보들도동등하게하나의오브젝트로서관리됩니다. 이를 LCO(Library Cache Object) 라고부르기도합니다. 아래는라이브러리캐시에어떤유형의오브젝트들이적재되는지보여줍니다. 그림 6 Library cache Objects 제목 : Oracle Memory... - 15 -

- Library cache dump 내용을 dump로직접확인가능합니다. $ORACLE_BASE/admin/SID/udump/*.trc 파일들을지우던지아니면다른곳으로옮긴후아래와같은작업을하겠습니다. 덤프파일은 $ORACLE_BASE/admin/SID/udump/ 디렉토리하위에 testdb_ora_4794.trc 파일이생성됩니다. Vi로열어서확인해보시기바랍니다. 그림 7 library_cache Dump file 제목 : Oracle Memory... - 16 -

4.3.2. 딕셔너리캐시 (Dictionary cache) - 테이블, 인덱스같은오브젝트는물론테이블스페이스, 데이터파일, 세그먼트, 익스텐트사용자, 제약, Sequence, DB Link 에관한정보를저장하게됩니다. - 예를들자면사용자가 Sequence 객체를하나만들면오라클딕셔너리에저장되고, 로우캐시를거쳐읽고쓰기가이루어집니다. 사용자가 Sequence 로부터새로운값을인출하기위해 nextval 을호출할때마다로우캐시를통해 update 가이루어집니다. - 딕셔너리캐시의활동성에대한통계를조회해볼수있는뷰가 v$rowcache 인데여기서히트율 (hit ratio) 를조사했을때수치가낮게나오면 Shared Pool 사이즈를늘리는것을고려해볼수있습니다. 그림 8 딕셔너리캐시히트율조사 - v$rowcache 에서 type 의값이 PARENT 인엔트리와 v$latch_children 에서이름이 row cache objects 인래치개수를조회해보면, 항상값이일치하는것을알수있습니다. 즉로우캐시에관리되는엔트리각각에대해하나의래치가할당돼있음을짐작할수있습니다. 그림 9 로우캐시엔트리래치개수확인 제목 : Oracle Memory... - 17 -

- Dictionary cache dump 내용을 dump로직접확인가능합니다. $ORACLE_BASE/admin/SID/udump/*.trc 파일들을지우던지아니면다른곳으로옮긴후아래와같은작업을하겠습니다. 덤프파일은 $ORACLE_BASE/admin/SID/udump/ 디렉토리하위에 testdb_ora_4794.trc 파일이생성됩니다. Vi로열어서확인해보시기바랍니다. 그림 10 Dictionary cache Dump file 제목 : Oracle Memory... - 18 -

4.3.3. 예약영역 (Reserved Area) - 공유풀예약은말그대로공유풀에대한미리공간을예약함으로써메모리조작부족으로인한 SQL 수행실패를방지하기위한방법입니다. - 실무에서많이사용되는아키텍처는아니지만보통기본값 (BIG OBJECT 를위한여분의메모리로기본값은 4400bytes) 으로설정된다. PARAMETER SHARED_POOL_RESERVED_SIZE 내용 공유풀예약공간을설정하지않았다면공유풀예약공간은공 유풀 (SHARED_POOL_SIZE) 크기의 5% 로설정합니다. 공유풀예약공간은공유풀 (SHARED_POOL_SIZE) 크기의 50% 이상설정할수없습니다. 표 7 예약영역 Parameter 4.3.4. 시스템영역 (Permanent Area) - Process, Session, Enqueue, Transaction 등의목록정보. 4.3.5. 구성조회 - Shared Pool 의상세한구성요소를확인하시려면아래와같은 SQL 로조회하시기바랍니다. select name, bytes from v$sgastat where pool='shared pool' order by bytes desc 제목 : Oracle Memory... - 19 -

4.4. DB 버퍼캐시 (DB Buffer Cache) - 오라클이데이터를읽고수정하기위해서디스크에존재하는데이터를읽어저장하는메모리공간입니다. - 기본데이터베이스크기는 DB_CACHE_SIZE 파라메터로결정하며 show sga 명령어로확인할수있습니다. 해당명령어를수행하여추출되는값중 Database Buffer가 DB Buffer Cache의크기입니다. 4.4.1. 블록단위 I/O - 오라클에서 I/O는블록단위로이루어집니다. 메모리버퍼캐시에서버퍼블록을액세스할때블록 I/O 데이터파일에저장된데이터블록을 DB 버퍼캐시로적재할때블록 I/O 캐시에서변경된블록을다시데이터파일에저장할때블록 I/O Single block I/O : 인덱스의경유해테이블액세스시. Multi block I/O : Full Table Scan 시 4.4.2. 버퍼캐시구조 - SGA 내에서는수없이많은자료구조가사용되고있으며그중가장많이사용되는것이해시테이블이고, DB 버퍼캐시도해시테이블구조로관리됩니다. 그림 11 DB Buffer Cache 구조 - Hasing 알고리즘을설명할때주로주소록에비유합니다. 이유는고객의주소와전화번호를관리하는주소록에서성씨가같고고객은같은페이지 ( 해시버킷 ) 에묶어서관리합니다. - DB 버퍼캐시내에서데이터블록을해싱하기위해사용되는키값은데이터블록주소 (Data Block Address) 입니다. 해시함수 ( 나눗셈범을예로키값을해시버킷개수로나누었을때의나머지값 ) 에데이터블록주소를입력해리턴받은해시값 (Hash Value) 이같은블록들을같이해시버킷 (Hash Bucket) 에연결리스트 (Linked List) 구조로연결합니다. 각각의연결리스트를해시체인 (Hash Chain) 이라고합니다. 제목 : Oracle Memory... - 20 -

- 버퍼블록이통째로해시구조에의해관리되는것처럼느낄수있으나실재로는버퍼헤더 (Buffer Header) 만해시체인에연결되며, 실제의데이터값이필요해지면버퍼헤더에있는포인터를이용 해다시버퍼블록을찾아가는구조입니다. 그림 12 해싱알고리즘을이용한버퍼블록찾는방법 - [ 그림 12] 설명을하자면 Hash Table -> Hash Bucket -> Buffer Header chain -> Buffer Header -> Buffer body -> block header -> block body 순으로찾게됩니다. - Working Set 오라클은버퍼캐시를효율적으로사용하기위해두종류의 LRU(Least Recently Used) 리스트를사용합니다. LRU 리스트는가장최근에사용되거나미사용된버퍼들의리스트로프리 (Free, 미사용 ) 버퍼, 사용중 (Pinned) 인버퍼, 사용된버퍼 (Clean) 또는곧 Age Out 될버퍼, 아직 LRUW(Dirty) 리스트로옮겨지지않은더티 (Dirty, 변경된 ) 버퍼등을포함합니다. LRUW(Dirty) 리스트는아직디스크 ( 데이터파일 ) 에기록되지않은변경된 (Dirty한) 버퍼들의리스트를관리합니다. DB 버퍼캐시의모든버퍼들은반드시 LRU 리스트또는 LRUW 리스트둘중에하나에속합니다. 이중에서오라클은리스트스캔의효율성을위해 LRU 리스트나 LRUW 리스트를다시메인리스트 (Main List) 와보조리스트 (Auxiliary List) 로나누어관리합니다. 아래와같이표를참조하세요. 제목 : Oracle Memory... - 21 -

종류 내용 메인리스트 : 사용된버퍼들의리스트, 핫영역과콜드영역으로 LRU 리스트 ( 대체리스트 ) 구분하여관리됩니다. 보조리스트 : 미사용된버퍼들이나, DBWR 에의해기록된버퍼 들의리스트를관리됩니다. LRUW 리스트 메인리스트 : 변경된버퍼들의리스트 보조리스트 : 현재 DBWR 에의해기록중인버퍼들의리스트 표 8 LRU, LRUW 리스트 - [ 표 8] 내용과같이오라클은프리버퍼를탐색시, 우선 LRU 리스트의보조리스트에서프리버퍼를찾습니다. 보조리스트의버퍼가모두사용된경우에는메인리스트의콜드영역에서프리버퍼를찾게됩니다. 인스턴스가최조로구동된때는모든버퍼들은보조리스트에서관리되며변경된버퍼들은 DBWR에의해기록된후에는다시프리버퍼로바뀌고 LRU 리스트의보조리스트에추가됩니다. - dump를수행하여확인해보도록하겠습니다. 그림 13 Buffers Dump 제목 : Oracle Memory... - 22 -

4.5. 리두로그버퍼 (Redo Log Buffer) - 오라클은오브젝트가변경되거나또는 DML 작업에의해데이터가변경되는경우변경에대한로그를리두로그버퍼에생성합니다. 해당로그들은서버프로세스에의해리두로그버퍼에기록된후백그라운드프로세스인 LGWR 프로세스에의해리두로그파일에저장하게됩니다. - Redo Log Buffer 크기는 ASMM(Automatic Shared Memory Management) 기능과달리 LOG_BUFFER 파라미터를이용해서수동으로지정해줘야합니다. 이유는 Redo Buffer, Keep Cache, Recycle Cache, 다중블록크기에의한 Cache 등의크기는 ASMM의영역에속하지않기때문입니다. - 리두로그버퍼의크기는 LOG_BUFFER Parameter로지정할수있으며 SHOW SGA 명령으로확인했을경우 Redo Buffers가리두로그버퍼의크기입니다. 오라클 10G R2 부터 Fixed SGA 영역과 Redo Buffer 영역이통합되었습니다. 이런이유로 Fixed SGA 영역에서사용하고남은일부메모리영역이 Redo Buffer에추가됩니다. SGA의메모리단위는 Granule인데, Granule에서쓰고남은메모리가 Redo Buffer 영역으로인식됩니다. 즉, Redo Buffer의크기가 LOG_BUFFER로지정한크기보다조금더커지는경우가발생합니다. 그림 14 Redo Log Buffer Size 제목 : Oracle Memory... - 23 -

4.6. 대형풀 (Large Pool) - Shared Pool, DB Buffer cache, Redo Log Buffer 는오라클에서필수 SGA(System Global Area) 영역이라고할수있으며, 반면대형풀은반드시지정해야할 SGA 영역이아닙니다. - Large Pool 사용하는주요목적은다음과같은네가지로구분할수있습니다. UGA 영역저장 주요목적 내용 UGA(User Global Area) 란세션정보및변수등을저장하고 있는세션별메모리영역을의미합니다.( 참고로 UGA 는 PGA 의부분집합입니다.) 데이터베이스생성시공유서버모드 로설정할경우 UGA 는 Shared Pool 을사용하게됩니다. RMAN(Recover Manager) 의 정보저장 RMAN 유틸리티를사용하게되면여러개의디스크 I/O 슬래 이브프로세스를기동하게되며파라미터중 DISK_IO=n, BACKUP_TAPE_IO_SLAVE=TRUE 로설정되어있다면 Large Pool 을사용하게됩니다. 병렬프로세스 (Parallel Processing) 의저장정보 대용량데이터를엑세스하기위해서병렬프로세스를이용합 니다. 즈, 여러개의프로세스를기동하여하나의 SQL 을수행 하게되는것입니다. 이때각프로세스들간에는여러메시지를주고받게되며이를병렬프로세스메시지 (PX MSG) 라고합니다. 만약 Large pool이설정되어있지않다면 Shared Pool의공간을낭비하게됩니다. I/O 슬래이브프로세스의 저장정보 DBWR Background Process 는해당프로세스아래슬래이브 프로세스 (Slave Process) 를기동하여더빠른디스크 I/O 작업 을수행할수있습니다. Lange Pool이설정하면사용할수있습니다. 표 9 Large Pool 주요사용목적 - show sga 명령을조회되는내용중 Variable Size의영역을 Shared Pool, Java Pool, Large Pool이통합하여사용합니다. - Large Pool의크기는 LARGE_POOL_SIZE 파라미터로확인가능합니다. 그림 15 Large Pool Parameter 및통계정보 제목 : Oracle Memory... - 24 -

4.7. 자바풀 (JAVA Pool) - 자바풀은자바명령을구문분석할경우사용하는메모리공간이므로자바를설치하고사용할경우지정해주어야합니다. - 역시 Large Pool과같이 SGA의필수영역은아닙니다. - 자바풀은 JAVA_POOL_SIZE 파라미터를지정이가능합니다. 그림 16 JAVA Pool Parameter 제목 : Oracle Memory... - 25 -

5. 참고자료 사이트 [ 교육 ] 서진수샘오라클취업반 [ 세미나 ] 김영조샘 [ 책 ] 초보자를위한 Oracle 10g(94P ~ 131P) 저자권순용, 김지한, 황오현 [ 책 ] 실전오라클백업과복구 (30P ~ 60P) 저자서진수 [ 구글머신 ] Program Global Area(PGA) [ 오라클클럽 ] Shared Pool [ 오라클클럽 ] DB 버퍼캐시 ( 오라클성능고도화 ) [ 오라클클럽 ] DB 버퍼캐시 ( 대용량데이터베이스 ) [ 엑셈 ] cache buffer chains [ 엑셈 ] 리두로그버퍼 제목 : Oracle Memory... - 26 -