RDBMS/Oracle

undo tablespace

KSerin 2021. 1. 28. 16:12
728x90

■ 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 할당에 지연이 발생할 경우 
 이슈가 해결될 때 까지 서비스 지연을 유발하기 때문에 
 온라입 업무 시간 수행은 최대한 지양해야 합니다. 

728x90

'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