database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9328 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9328
Rollback Segment 의 크기와 갯수
작성자
정재익(advance)
작성일
2002-01-07 02:15
조회수
5,255

ROLLBACK segment 의 크기와 갯수

 

Transaction 에 rollback segment 를 할당하는 Oracle 내부 메카니즘은 다음과 같다.   

 

새로운 transaction 이 rollback segment 를 요청하면, 각 rollback segment 을 이용하고 있는 active transaction 갯수를 확인하여 가장 적은 갯수의 active transaction 을 가진 rollback segment 를 할당하여 준다.    

다음은 rollback segment 의 적절한 갯수와 storage parameter 에 대한 결정 방법이다.  

   

1) rollback segment 의 갯수  

   

Minimum number of rollback segment

= CEIL (TRANSACTION / TRANSACTIONS_PER_ROLLBACK_SEGMENT)  

 

참고

만약 이 값이 4 이하이면, default 로 4 개의 rollback segment 를 사용한다.  

CEIL은 무조건 올림이고, TRANSACTION, TRANSACTIONS_PER_ROLLBACK_SEGMENT는 sqldba lmode=y(or svrmgrl) 에서 show parameter 로 확인한다.

 

위의 갯수는 단지 초기 추정값이므로, 다음과 같이 rollback segment 에 대한 contention 을 조회하여 이 값을 조정할 수 있다.  

   

sqlplus system/manager  

   

select rn.name, (rs.waits/rs.gets) rbs_header_wait_ratio  

from v$rollstat rs, v$rollname rn  

where rs.usn = rn.usn  

order by 1;  

   

위의 쿼리에 의해 조회된 rbs_header_wait_ratio 가 0.01 보다 크면, rollback segment 갯수를 추가한다.  

   

2) rollback segment 의 optimal size 선택 방법  

   

위에 소개한 방법에 의하여, rollback segment 의 갯수를 정한 후에, 다음과 같은 test 를 통하여 storage parameter 를 결정한다.  

   

Oracle7 에서는 이미 할당된 rollback segment 의 extent 를 반납(deallocate) 하지 않는다. 따라서, active 한 transaction 이 사용하지 않는 rollback segment 의 extent 를 재 사용하려면, optimal 이라는 parameter 를 rollback segment 의 storage 절에 setting 한다.  

 

참조: Optimal size 는 Ora-1555 "snapshot too old" 가 발생하는 작업 환경에서는 setting 하지 않도록 한다. 자세한 내용은 Ora-1555 에 대한 bulletin 을 참조. 일주일 정도 peak time에 rollback segment 들의 평균 크기를 구한다.  

   

select initial_extent + next_extent*(extents -1) "RBS SIZE(byte)", extents  

from dba_segments  

where segment_type ='ROLLBACK';  

   

이 크기의 평균 값(byte)을 rollback segment 들의 optimal size 로 사용 할 수 있다.  

   

3) rollback segment 의 extentS 수  

   

통계적으로 rollback segment 의 평균 extents 는 20 정도가 좋다. extent 를 일으킨 횟수가 너무 적으면, rollback segment 가 빈번하게 grow 또는 shrink 하고, 반대로 extent 를 일으킨 횟수가 너무 많으면, rollback segment 가 shrink 해야 하는지를 확인하는 작업으로 Oracle resource를 낭비하게 된다.

   

다음은 평균 extent 횟수가 20 이고, 위의 2) 에서 구한 평균 rollback segment 들의 optimal 크기가 2 M 인 rollback segment 를 생성하는 예이다. (rdbms 7.1 이상 가능)  

   

(minextents 를 20 으로 한 이유는 평균 extents수가 20 이므로, rollback segment 를 생성할 때, 이 영역을 미리 확보하겠다는 의미이다. 또한 optimal 은 minextents 로 확보한 값과 같거나 큰 값이어야 한다. 즉, minextents 이하로 shrink 할 수 없다.)  

   

create rollback segment r01  

tablespace rbs  

storage (initial 100 k  

next 100 k  

minextents 20  

maxextents 121  

optimal 2 m) ;  

   

끝으로, 대용량의 data 를 다루는 transaction을 위해 tablespace 를 분리하고 initial extent 와 next extent 가 큰 rollback segment 를 생성해 두고 쓰는 방법을 권해 드림

[Top]
No.
제목
작성자
작성일
조회
9331오라클 tip 몇가지
정재익
2002-01-07
8302
9330오라클 설치후 각각의 디렉토리에 대한 설명
정재익
2002-01-07
5514
9329DYNAMIC SQL 이란?
정재익
2002-01-07
7850
9328Rollback Segment 의 크기와 갯수
정재익
2002-01-07
5255
9327사용되지 않은 공간을 DEALLOCATE
정재익
2002-01-07
4660
9326CONNECT internal 시 패스워드를 물어 오는 문제 해결
정재익
2002-01-07
4944
9324ORA-1547 에러 발생의 원인
정재익
2002-01-07
4458
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다