inflearn logo
강의

講義

知識共有

Oracle パフォーマンス分析とインスタンスチューニングの核心ガイド

Oracle メモリ構造および SGA 概要

undo space 수식에 대해

351

pudding

投稿した質問数 12

0

강의와 오라클 펀더멘탈을 병행하여 공부중인데
UNDO TABLE SPACE 부분에서 크기조정 관련 수식이 나오는데 해당 수식 자세한 해설 부탁드려도 될까요? 너무 어려워서요 ㅜㅜ
UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)

oracle DBMS/RDBMS

回答 4

0

pudding

자세한 답변 너무 감사합니다~ 이해 잘됐어요

0

dooleyz3525

undo_retention 은 read consistency를 위해서 undo 데이터를 보관하고자 운영자가 설정하는 시간입니다. 

가령 배치 프로그램 같이 큰 DML 등이 수행될 때 read consistency를 위해서 오랜 기간 undo 데이터를 보관이 필요할 수 있습니다.

Default는 900초(15분) 이지만, 보통은 30분 ~ 한시간 정도 설정해 놓습니다만, 배치 프로그램이 오랫동안 DML을 수행할 경우 몇시간 이상도 설정합니다.

undo_retention을 오래 잡으면 당연히 undo segment용 tablespace도 커야 합니다. 

이를 계산할 때 1초당 증가하는 undo segment 크기를 기반으로 하면 됩니다.

1초당 증가하는 undo segment 는 1초당 발생하는 undo block수 x 1 block의 크기(보통은 8k) 입니다.

그리고 1 초당 증가하는 undo segment가 undo_retention 만큼 유지되려면 여기에 undo_retention 설정 초 수를 곱해 주면 됩니다. 

1초당 발생하는 undo block 수: (SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS FROM v$undostat)

1 block의 크기: SELECT value AS DBS  FROM v$parameter WHERE name = 'db_block_size'

undo_retention 설정값: SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'

그리고 적정한 수준의 여유 크기를 더해 주면 됩니다.

0

pudding

UNDO 테이블스페이스의 크기를 조정하려면 세 가지 데이터가 필요합니다. 두 가지 데이터

는 초기화 파일에서 얻을 수 있으며 UNDO_RETENTION과 DB_BLOCK_SIZE입니다. 공식

의 세번째 부분에는 데이터베이스에 대한 질의가 필요합니다. 초당 생성되는 실행 취소 블

록의 수는 V$UNDOSTAT에서 얻을 수 있습니다. 다음 공식은 생성되는 전체 블록의 수를 계

산하여 모니터되는 시간(초)으로 나눕니다.

SQL> SELECT (SUM(undoblks) / SUM) ((end_time - begin_time) *

86400)FROM v$undostat;

END_TIME 및 BEGIN_TIME 열의 데이터 유형은 DATE입니다. 데이터 유형 DATE 간에 뺄

셈을 수행하면 결과가 날짜로 표시됩니다. 날짜를 초로 변환하려면 하루를 초로 계산한

86400을 곱합니다.

질의의 결과로 초당 실행 취소 블록 수가 반환됩니다. 이 값은 DB_BLOCK_SIZE에 정의된

데이터베이스 블록과 같은 크기인 실행 취소 블록의 크기로 곱해야 합니다. 다음 질의는 필

요한 바

UR : undo_retention (초)

UPS : 초당 생성되는 실행 취소 데이터 블록 수

DBS : 확장 영역 및 파일 크기에 따라 달라지는 오버헤드 (db_block_size)

SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"

2 FROM (SELECT value AS UR

3 FROM v$parameter

4 WHERE name = 'undo_retention'),

5 (SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS

6 FROM v$undostat),

7 (SELECT value AS DBS

8 FROM v$parameter

9 WHERE name = 'db_block_size');

Bytes

----------

19106213

오라클 fundmental1_vol1에서 발췌했어요

0

dooleyz3525

안녕하십니까,

저 수식이 나타내는 개별 변수가 무엇인지요? 

해당 수식과 관련한 오라클 펀더멘탈(책 인가요? )의 설명 부분을 자세히 기술 부탁드립니다.

Toad for Oracle Trial 버전을 지원하지 않는것으로 보입니다.

0

63

1

table full scan과 index_ffs 성능비교

0

126

2

HDD가 아닌 SSD인 경우는 dBMS I/O가 어떻게 동작하나요?

0

125

2

HOST CPU 자료를 받으려면?

0

142

3

Buffer Cache를 통한 데이터 Access 에서 DBA 정보를 어떻게 알아내는지 궁금합니다.

0

155

2

random i/o와 full scan 문제 질문

0

166

3

hugepage_settings.sh 파일 실행시 커널 버전

0

210

2

강의중 윈도우 경고음?이 너무 크게 들릴때가 있습니다.

0

149

3

19ee 설치 관련

0

166

2

클라우드 굳이 안해도 되나요??

0

253

2

full scan 시 OS I/O 질문있습니다.

0

241

1

19c ee rpm 파일 설치 문의

0

228

1

direct path read/write temp 관련 질문

0

245

1

swingbench 에러좀 확인부탁드려요

0

339

2

회원가입 시 Customer type 구분

0

242

2

수료증 발급문의

0

232

1

swingbench 2.6 다운이 안받아져요

0

275

1

오라클 long data type 지원

0

438

1

sqldeveloper를 앞에서 썼다고 하셧는데...

0

216

1

soe_10g_01.dbf생성중 오류

0

222

1

TOAD 연결 질문드립니다.

0

345

1

oracl21c로 설치해도 되나요?

0

275

1

Hard Parsing의 자원 사용

1

513

2

Sequential Acess는 HDD상에서도 Block을 Sequential하게 읽나요?

1

365

2