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

Similar documents
목 차

62

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

Oracle Database 10g: Self-Managing Database DB TSC

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

Jerry Held

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

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

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

데이터베이스-4부0816

PowerPoint 프레젠테이션

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

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

The Self-Managing Database : Automatic Health Monitoring and Alerting

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Simplify your Job Automatic Storage Management DB TSC

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

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

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

MS-SQL SERVER 대비 기능

PowerPoint Presentation

MySQL-Ch10

ORACLE EXADATA HCC 압축방식이해하기 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 시간이지나면서데이터는급속하게증가하고있다. 데이터가증가함에따라 DBMS 에서관리되어지는정보도급속하게증가하고있다. 이로인해저장공간의부족으로하드웨어비용의증가와데이터처리성능에많은문제점들

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

<BED5BACEBCD32E696E6464>

<4D F736F F D203033C6C4C6BCBCC72DB8AEBFC0B1D7B9E6B9FD2E646F63>

Microsoft PowerPoint - o8.pptx

Oracle Wait Interface Seminar

결과보고서

Microsoft Word - 10g RAC on Win2k.doc

SQL PLAN MANAGEMENT 활용 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 오라클은비롯한많은관계형 DBMS 에서는사용자의 SQL 질의를효율적으로처리하기위해옵티마이저를사용하고있다. 옵티마이저는유저가수행하는 SQL 을받아실행계획을생성하고, 실제 SQL 은이실행계획을

*2009데이터_3부

Microsoft Word - CNVZNGWAIYSE.docx

11g - Serial direct read 동작원리 엑셈컨설팅본부 /DB 컨설팅팀임경석 개요 오라클 11g 에서처음소개된 Serial direct read 는대량의데이터를처리하는엑사데이타에서매우중요한기능이다. 스마트스캔을하기위해서는반드시테이블 full scan 과 d

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

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

歯sql_tuning2

PowerPoint 프레젠테이션

untitled

untitled

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

강의 개요

PowerPoint Presentation

Tina Admin

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

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

제목을 입력하세요.

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

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

빅데이터시대 Self-BI 전략 이혁재이사 비아이씨엔에스

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

2002 Game White paper 2002 Game White paper

제목 레이아웃

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

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

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담

NLJ BATCH 과부분범위처리 엑셈컨설팅본부 / DB 컨설팅팀오수영 개요 오라클은새로운버전이출시될때마다한층업그레이드된기능들이추가된다. 이기능들은사용자에게편리함을제공함은물론이고, 기존의기능들이성능적으로업그레이드되어보다강력해지기도한다. 그러나때로는새롭게추가된기능으로인해,

PRO1_04E [읽기 전용]

13주-14주proc.PDF

PowerPoint 프레젠테이션

슬라이드 1

Oracle9i Real Application Clusters

PowerPoint Template

PRO1_02E [읽기 전용]

Chap06(Interprocess Communication).PDF

6주차.key

R50_51_kor_ch1


[ 그림 1] Perfmon 실행 [ 그림 2] 모니터링카운터추가 기술백서 White Paper

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

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

6.24-9년 6월

untitled

슬라이드 1

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

Slide 1

DBMS & SQL Server Installation Database Laboratory

Ç¥Áö

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

Intra_DW_Ch4.PDF

ARMBOOT 1

PowerPoint Presentation

Index

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

음악부속물

음악부속물

음악부속물

Runtime Data Areas 엑셈컨설팅본부 /APM 팀임대호 Runtime Data Area 구조 Runtime Data Area 는 JVM 이프로그램을수행하기위해할당받는메모리영역이라고할수있다. 실제 WAS 성능문제에직면했을때, 대부분의문제점은 Runtime Da

NoSQL

Microsoft PowerPoint - Tech-iSeminar_Flashback.ppt

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

*캐릭부속물

歯815설치1.PDF

Microsoft Word - Oracle Wait 분석 테크닉.doc

10.ppt

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

Transcription:

KEEP BUFFER 활용방안 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 Oracle 은유저가요청한작업을빠르게처리하기위해 Buffer Cache 라는것을사용한다. Buffer Cache 는 SGA 에위치하고있으며, 오라클인스턴스에접속하는모든프로세스에의해공유된다. 이 Buffer Cache 는오라클 I/O 관리의핵심으로자주사용하는데이터파일의블록들을메모리에상주시킴으로써물리적인 I/O Operation 을줄이는역할을한다. Buffer Cache 를효과적으로사용하면물리적 I/O 가줄어들고자연스럽게 I/O 성능문제를해결할수있다. 오라클의버전이올라감에따라 Buffer Cache 를처리하는알고리즘은끊임없이개선되었고, 더불어새로운관리방법들이제공되었다. Oracle 7 까지의 Buffer Cache 는하나의틀로서운영되었고, 각 Object 의특성에따른차별적인 Buffer Cache 이용이어려웠다. 이런면을해결하기위해 Oracle 8 부터 Multiple buffer pool 이라는기능을지원하게되었는데, 이로인해각 Object 의특성이나엑세스빈도등차별성을고려하여 Buffer Cache 를보다세밀하게관리할수있게되었다. Keep Buffer 는이 Multiple Buffer Pool 을구성하는여러영역중의하나이다. KEEP Buffer 사용목적및특성 Keep Buffer 의사용목적은본래의 Buffer Cache 의목적과마찬가지로, Object 를메모리에 상주시킴으로써물리적인 I/O 를피하는데있다. Keep Buffer Pool 과 Default Buffer Pool 이데이터블록을 Cache 하거나 Flush 할때서로다 른알고리즘을사용하지는않는다. 그럼에도불구하고하나였던 Buffer Cache 영역을 Multiple Buffer Pool 로나누게된이유는 Object 의특성을고려한 Buffer Cache 이용을위함이다. Part 1 ORACLE 161

KEEP Buffer 의메모리공간은 Sequential 하게관리된다. 한번 KEEP 된세그먼트는 KEEP Buffer 의메모리공간을모두할당하기전까지메모리에유지되다가 KEEP Buffer 공간을모두할당하게되면, 가장오래된블록부터 default pool 로밀려난다. 때문에 KEEP 대상이되는세그먼트들의사이즈를정확히계산하여 KEEP Buffer 크기를적절히할당해야한다. KEEP Buffer 사용순서 Keep Buffer 의사용은다음과같은순서로진행한다. 1. KEEP 대상선정하기 2. OS Memory & SGA 공간확인 3. KEEP Buffer 설정 4. 테이블 / 인덱스속성변경 5. 테이블 / 인덱스 Keeping 6. KEEP 효율성체크 7. KEEP 대상선정기준 KEEP 대상선정하기 KEEP 대상선정에있어서명확한기준점은없다. 실제업무를고려하여각 DB 의운영환경에맞는대상을선정해야한다. 만약 KEEP 하는대상이아주빈번하게사용되는블록이라면, 기본적인 Default Buffer 를사용해도 Cache 돼있을가능성이높은데, 이런경우에는 Keep Buffer 사용이성능상의이점을가져오지못한다. 반대로자주사용되지않는블록을 Keep Buffer 에상주시킨다면, 사용하지않는메모리를가지고있는것이기때문에전반적인성능을저하시키는요인이될수도있다. 때문에 Keep 대상을선정하는데있어서는실제업무의고려가필수적이다. 예를들어하루에 1 번만수행되는프로그램인데어떻게해서든수행시간을단축시켜야하는경우나, 많은업무를처리하는시간대에꼭수행되야하는데많은 I/O 때문에병목현상을일으켜서시스템에전반적으로악영향을끼치는프로그램등이있을수있다. 이런프로그램들이사용하는 Object 들이 162 2013 기술백서 White Paper

Keep 대상이될수있다. 그러나위와같은업무프로그램에사용되는모든세그먼트를 KEEP Buffer 에상주시킬수는없다. 그러므로 KEEP Buffer 에상주시킬대상은각 DB 운영환경을고려하여선정해야한다. 이외에도크기, DML 빈도, 데이터엑세스빈도에따라 Keep 하기에적절한세그먼트들이존재한다. 선정기준 [1]. 프로그램중요도 Keep 대상선정에있어서가장중요한부분이바로해당세그먼트를조회하는업무프로그램의중요도이다. 해당프로그램이중요하지않다면굳이 Keep Buffer 를사용해야할필요가없다. 반대로해당세그먼트를조회하는프로그램이중요도가아주높고어떻게든수행시간을단축해야한다면프로그램수행빈도와상관없이 KEEP 대상으로의선정을고려할수있다. 선정기준 [2]. 세그먼트크기 세그먼트크기가일정하지않고, 과다하게커지는세그먼트는 Keep Buffer 의효율성을떨어뜨릴수있다. Keep 된세그먼트는 Keep Buffer 의용량이부족하면오래된블록부터 Default Buffer 로밀려나게되는데, 크기가계속커지는세그먼트가 Keep Buffer 에존재한다면타세그먼트를조회하는프로그램의성능저하를가져올수있기때문이다. 따라서일정한사이즈또는변동량이심하지않으면서최대크기가일정수준이하인경우의세그먼트를선정하는것이바람직하다. 예를들면 최대크기가 10 만블록이하인세그먼트 같은기준을정할수있다. 선정기준 [3]. Full Table Scan & Index Full Scan & Index Fast Full Scan KEEP Buffer 에 KEEP 된세그먼트를조회할때효율성을극대화하기위해서는다소많은량을 처리해야하는경우이다. Scan 범위가넓은비효율 Index Scan 이나 Full Table Scan, Index Fast Full Scan 으로처리되는세그먼트가대상이될수있다. Part 1 ORACLE 163

KEEP 대상선정 SQLScript SELECT owner, table_name, index_name, partition_name, SUM( blocks ) AS t_blocks FROM ( SELECT sg.owner, decode( SUBSTR( s.ob_type, 1, 5 ), 'TABLE', s.ob_name, 'INDEX', ( SELECT table_name FROM dba_indexes WHERE index_name = s.ob_name ) ) AS table_name, decode( SUBSTR( s.ob_type, 1, 5 ), 'INDEX', s.ob_name ) AS index_name, sg.partition_name, sg.blocks FROM ( SELECT DISTINCT object_name AS ob_name, object_type AS ob_type FROM v$sql_plan WHERE ( operation = 'TABLE ACCESS' AND options = 'FULL' ) OR ( operation = 'INDEX' AND options = 'FULL SCAN' ) OR ( operation = 'INDEX' AND options = 'FAST FULL SCAN' ) --> 선정기준 [3] ) s, dba_segments sg WHERE s.ob_name = sg.segment_name ) GROUP BY owner, table_name, index_name, partition_name HAVING SUM( blocks ) > 100000 --> 선정기준 [2]SELECT * FROM DUAL 164 2013 기술백서 White Paper

OS Memory & SGA 공간확인 OS Memory SGA 공간확인 SQLScript $ cat /proc/meminfo MemTotal: 4055152 kb MemFree: 1390308 kb Buffers: 166768 kb Cached: 2019992 kb SwapCached: 0 kb Active: 1118484 kb Inactive: 1277864 kb SGA 공간확인 SQLScript SGA 전체 size 확인 SELECT name, FROM ROUND( bytes/1024/1024 ) "size(mb)" V$SGAINFO; size(mb) ------------------------------- ---------- Fixed SGA Size 2 Redo Buffers 5 Buffer Cache Size 48 Shared Pool Size 128 Large Pool Size 0 Java Pool Size 24 Streams Pool Size 0 Shared IO Pool Size 0 Granule Size 4 Maximum SGA Size 207 Startup overhead in Shared Pool 72 Free SGA Memory Available 0 Data Buffer size 확인 Part 1 ORACLE 165

SELECT name, current_size FROM v$buffer_pool; CURRENT_SIZE -------------------- ------------ DEFAULT 48 KEEP BUFFER 설정 KEEP Buffer 설정은 KEEP Buffer 크기와 SGA 여유공간에따라, Online 작업또는 Offline 작업으로수행한다. 이문서의스크립트는 SGA 영역의메모리관리를수동으로하는경우를바탕으로작성하였다. KEEP Buffer 설정 Script @sga size(mb) -------------------------------- ---------- Buffer Cache Size 500 Maximum SGA Size 1019 Free SGA Memory Available 228 @bc CURRENT_SIZE -------------------- ------------ DEFAULT 500 KEEP Buffer 의크기가 SGA 의 Free 공간보다작은경우 Online ( KEEP Buffer 100M ) SQL> alter system set db_keep_cache_size = 100M scope = both; System altered. SQL> @sga 166 2013 기술백서 White Paper

size(mb) -------------------------------- ---------- Buffer Cache Size 600 Maximum SGA Size 1019 Free SGA Memory Available 128 SQL> @bc CURRENT_SIZE -------------------- ------------ KEEP 100 DEFAULT 500 KEEP Buffer 의크기가 SGA 의 Free 공간보다큰경우 ( KEEP Buffer 300M ) 1. SGA 전체크기늘린후 KEEP Buffer 할당 Offline 작업필요 SQL> alter system set sga_max_size = 1100M scope = spfile; System altered. SQL> alter system set db_keep_cache_size = 300M scope = spfile; System altered. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. Database opened. 1169227776 bytes 2212696 bytes 301993128 bytes 855638016 bytes 9383936 bytes SQL> @sga Part 1 ORACLE 167

size(mb) -------------------------------- ---------- Buffer Cache Size 816 Maximum SGA Size 1115 Free SGA Memory Available 0 SQL> @bc CURRENT_SIZE -------------------- ------------ KEEP 304 DEFAULT 512 => SGA 전체크기가 1G 를초과하면서 Granule 크기가 16Mb 로늘어났다 이때지정한값보다큰 16 의배수중가장작은크기의값이할당된다. 2. SGA 의다른영역의크기를줄인후 KEEP Buffer 할당할경우 Online 작업가능 Online 상태에서변경가능 Parameter 추출 Script SELECT name, issys_modifiable FROM v$parameter WHERE name LIKE '%size%' AND issys_modifiable = '' ISSYS_MOD --------------------------------------- --------- shared_pool_size large_pool_size java_pool_size streams_pool_size db_cache_size db_2k_cache_size db_4k_cache_size db_8k_cache_size db_16k_cache_size db_32k_cache_size db_keep_cache_size db_recycle_cache_size _shared_io_pool_size 168 2013 기술백서 White Paper

db_flash_cache_size db_recovery_file_dest_size result_cache_max_size workarea_size_policy max_dump_file_size => 해당 Parameter 값을적절히조절하여 Free Memory 확보후 KEEP 설정 테이블 / 인덱스속성변경 테이블 / 인덱스속성변경 Script ALTER TABLE T1 STORAGE (BUFFER_POOL KEEP); --테이블속성변경 ALTER INDEX T1_PK STORAGE (BUFFER_POOL KEEP); --인덱스속성변경 ALTER TABLE P1 MODIFY PARTITION P1_1 STORAGE (BUFFER_POOL KEEP); --파티션테이블속성변경 ALTER INDEX P1_ID1 MODIFY PARTITION P1_ID1_1 STORAGE (BUFFER_POOL KEEP);--파티션인덱스속성변경 테이블 / 인덱스 Keeping Segment 의 Buffer Pool 이 KEEP 으로설정된테이블과인덱스는 Query 시 KEEP Buffer 에해당세그먼트의블록을로딩하게된다. 그러므로최초세그먼트를 Loading 할때에는 Disk I/O 가발생하게된다. 만일처음실행하는때를포함하여모든 Application 의조회에서 Disk I/O 를제거하고싶다면, 업무가진행되기전에해당세그먼트들을 Full Table Scan 이나 Index Fast Full Scan 으로 KEEP Buffer 에로딩시키면된다. KEEP Buffer 효율성판단 KEEP Buffer 의사용에명확한기준이정해져있는것이아니라운영환경에따라차이가존재한다. 때문에모든운영환경에서같은방법으로효율성을판단하기에는무리가있다. 하지만다음과같은자료들이 KEEP Buffer 의효율성을판단하는데근거가될수있다. KEEP Buffer Size & Hit Ratio SQLScript Part 1 ORACLE 169

SELECT current_size keep_size, seg_size, ROUND( seg_size/current_size*100, 1 ) "Ratio(%)" FROM v$buffer_pool, ( SELECT SUM( bytes ) /1024 /1024 seg_size FROM dba_segments WHERE buffer_pool = 'KEEP' ) WHERE name = 'KEEP' KEEP_SIZE SEG_SIZE Ratio(%) ---------- ---------- ---------- 304 118 38.8 SELECT db_block_gets, consistent_gets, physical_reads, CASE WHEN db_block_gets+consistent_gets <> 0 THEN ROUND(( 1-( physical_reads/( db_block_gets+consistent_gets ) ) ) *100, 2 ) END "Keep_Hit(%)" FROM v$buffer_pool_statistics WHERE name = 'KEEP' DB_BLOCK_GETS CONSISTENT_GETS PHYSICAL_READS Keep_Hit(%) ------------- --------------- -------------- ----------- 0 44474 4435 90.03 만약 KEEP Buffer 를사용하는 Segment 크기의총합이 KEEP Buffer 크기보다작은경우, 해 당 Segment 들의크기가더이상커지지않는다면, 한번 KEEP 영역으로올라간 Segment 의 Cache Hit Ratio 가 100% 에가깝게될것이다. 만일 KEEP Buffer 의크기가해당영역을사용하는 Segment 들의크기보다작다면 KEEP Buffer 영역에서경합이발생하고, 그로인해 Physical I/O 가발생하여 Cache Hit Ratio 가떨어질수있다. 이때 KEEP Buffer 의크기를늘려주거나중요도가떨어지는 Segment 의 KEEP Buffer 사용을막는방안을고려해볼수있다. 반대로 KEEP Buffer 의크기가 Segment 들의 170 2013 기술백서 White Paper

크기보다많이크다면, 사용하지않는메모리공간을차지하고있는것이므로 KEEP Buffer 의 크기를줄이는것을고려해볼수있다. 따라서시스템성능과 Segment 들의중요도에따라효 율적인 KEEP Buffer 의크기조절이필요하다. 다음스크립트로 dba_hist_seg_stat 뷰를조회하여 Segment 조회시발생하는 I/O 발생량에 대한 AWR 정보를확인하여 Segment 별효율성을판단할수있다. Segment I/O SQLScript accept i_begin_time prompt 'Enter begin time[yyyymmddhh24]: ' accept i_end_time prompt 'Enter end time[yyyymmddhh24]: ' variable v_begin_time char(10) variable v_end_time char(10) exec :v_begin_time:=&i_begin_time exec :v_end_time :=&i_end_time SELECT /*+ leading(k) */ s.dbid, decode( SUBSTR( o.object_type, 1, 5 ), 'TABLE', o.object_name, 'INDEX', ( SELECT table_name FROM dba_indexes WHERE index_name = o.object_name AND owner = k.owner ) ) AS table_name, decode( SUBSTR( o.object_type, 1, 5 ), 'INDEX', o.object_name ) AS index_name, s.snap_id, TO_CHAR( w.begin_interval_time, 'yyyymmdd.hh24' ) AS begin_time, s.physical_reads_delta, s.physical_reads_direct_delta, s.physical_reads_delta + s.physical_reads_direct_delta AS total_diskio FROM sys.wrm$_snapshot w, dba_hist_seg_stat s, dba_objects o, ( SELECT owner, segment_name FROM dba_segments Part 1 ORACLE 171

WHERE buffer_pool = 'KEEP' ) k WHERE w.begin_interval_time >= to_timestamp( '2013062510', 'yyyymmddhh24' ) AND w.end_interval_time <= to_timestamp( '2013062518', 'yyyymmddhh24' ) AND w.snap_id = s.snap_id AND w.dbid = s.dbid AND w.instance_number = s.instance_number AND s.obj# = o.object_id AND k.segment_name = o.object_name AND k.owner = o.owner ORDER BY 2, 3, 5 결론 KEEP Buffer 를사용하는데있어가장중요한것이업무의반영일것이다. 자주사용하는 Object 들만상주하는 Buffer Cache 하나만사용하는것이시스템전체의관점에서보면효율적일수도있다. 하지만업무의중요성이나특성을고려한다면다른결과가나올수있다. 적게실행되더라도중요도가높은업무가있을수있고, 수행시간단축이매우중요한업무가있을수있다. 이러한업무에대한특성을반영한운영계획을세우는데있어서, KEEP Buffer 를효율적으로사용할수있다면, 시스템성능향상에큰도움이될것이다. 172 2013 기술백서 White Paper