■ UNDO tablespace 크기 설정
#UNDO tablespace 크기를 설정하기 윈해서는 다음 3가지 값이 필요합니다.
1) UNDO_RETENTION
2) DB_BLOCK_SIZE
3) 초당 생성되는 undo block 수
#위 3가지 값을 이용하여 Optimal 한 값을 확인할 수 있습니다.
select round(((ur*(ups*dbs))+(dbs*24))/1024/1024,1) as mb
from (select value as ur from v$parameter where name = 'undo_retention')
,(select value as dbs from v$parameter where name = 'db_block_size')
,(select (sum(undoblks)/sum(((end_time - begin_time)*86400))) as ups
from v$undostat);
■ UNDO 부족시 발생 이슈
transaction(이하 tx) 에서 사용할 undo 가 부족할 경우, 사용 가능한 undo 를 할닫받을 때 까지 enq:US - contention 을 대기하게 됩니다
enq:US - contention 에 의한 대기는
주로 평시 대비 많은 undo 를 사용하는 Heavy tx 작업이 수행되었을 경우
Heavy 로드 작업 이후 Oltp tx 에서 주로 발생합니다.
(Heavy tx 에 사용된 undo block에 대해 undo_retention 을 적용하기 때문에 그 이후 수행되는 업무들이 대기를 겪는 것입니다.)
■ UNDO 부족(경합발생)시 해결 방법 및 권고
worktime에 발생한 enq: US - contention 은 undo_retention 설정값을 줄여주거나
undo tablespace 를 늘려줌으로써 조치가 가능합니다.
불특정하게 수행되는 해비 tx에 의해 UNDO 할당에 지연이 발생할 경우
이슈가 해결될 때 까지 서비스 지연을 유발하기 때문에
온라입 업무 시간 수행은 최대한 지양해야 합니다.
'RDBMS > Oracle' 카테고리의 다른 글
RAC DB 시작/종료(startup/stop (0) | 2021.01.28 |
---|---|
temp tablespace (0) | 2021.01.28 |
Oracle DBA SQL (0) | 2021.01.28 |
아카이브 로그(Archive log) 관련 SQL (0) | 2021.01.14 |
문자셋(character set) 확인 (0) | 2020.12.18 |