OS환경 : Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 19.16.0.0
방법 : 오라클 19c db_files 파라미터 과다 설정시 pga 사용량 비교
오라클 db를 구성할 떄 datafile 의 최대 갯수를 설정하기 위해 db_files을 설정해줌
하지만 이 값을 너무 크게 설정하면 불필요하게 메모리가 낭비됨
db_files의 값을 20으로 설정했을때와 20,000으로 설정했을때 각각 세션당 기본 pga를 얼마나 사용하는지 확인해봄
db_files 파라미터 값 확인
1
2
3
4
5
|
SQL> show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 20
|
세션 재접속후 현재 세션의 pga 할당량 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
SQL>
col name for a30
SELECT m.name , t.value
FROM v$sesstat t,
v$statname m
WHERE t.statistic# = m.statistic#
AND m.name like '%session%memory%'
AND t.sid = ( SELECT distinct sid FROM v$mystat)
order by 1;
NAME VALUE
------------------------------ ----------
session pga memory 1291552
session pga memory max 1684768
session uga memory 430456
session uga memory max 788840
|
db_files 파라미터 20000으로 변경
1
2
3
|
SQL> alter system set db_files = 20000 scope=spfile;
System altered.
|
재기동
1
2
3
4
5
6
7
8
9
10
11
|
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 5368708168 bytes
Fixed Size 8907848 bytes
Variable Size 1258291200 bytes
Database Buffers 4093640704 bytes
Redo Buffers 7868416 bytes
Database mounted.
Database opened.
|
db_files 파라미터 값 확인
1
2
3
4
5
|
SQL> show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 20000
|
db_files 파라미터 값이 정상적으로 변경됨
세션 재접속후 현재 세션의 pga 할당량 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
SQL>
col name for a30
SELECT m.name , t.value
FROM v$sesstat t,
v$statname m
WHERE t.statistic# = m.statistic#
AND m.name like '%session%memory%'
AND t.sid = ( SELECT distinct sid FROM v$mystat)
order by 1;
NAME VALUE
------------------------------ ----------
session pga memory 4938104
session pga memory max 5396856
session uga memory 430456
session uga memory max 854328
|
비교
max 값 기준으로 pga는 3.2배 증가함
결론 :
이렇게 db_files 값을 불필요하게 높게 설정하면 세션당 pga를 많이 소모하기 때문에
세션이 많아지면 많아짐에 따라 더 부하가 생길것으로 예측됨
필요한 만큼만 적절한 값을 설정하는게 중요함
pga 를 더 소모하는 이유는 제대로 설명된 공식 문서는 찾지 못했지만
db_files를 늘림에 따라 오라클이 시스템 구조 및 메타데이터 관리를 위해 더 많은 메모리를 소모하는게 아닌가 싶음
*추가1
문서에 의하면 db_files 가 너무 높은 경우 불필요한 메모리를 소모할수 있다 라고 나와있음
If the value of DB_FILES is too high, memory is unnecessarily consumed.
*추가2
148466.1 문서에 의하면 db_files 가 pga 사용량에 영향을 미친다는 작은 내용도 있음
Oracle parameters that affect the sizes of PGA are:
- open_links
- db_files
- sort_area_retained_size
- sort_area_size
- hash_area_size
두가지 문서 모두 정확한 이유는 설명하지 않고 있음
참조 : 148466.1
'ORACLE > Admin' 카테고리의 다른 글
오라클 19c 파티션 테이블 멀티 truncate 테스트 (0) | 2023.03.06 |
---|---|
오라클 19c Memoptimize pool 테스트(memoptimize for read) (0) | 2023.02.14 |
오라클 19c invisible index 테스트 (0) | 2023.02.09 |
오라클 11gR2 dbca silent mode 설치시 dbca에 나오는지 확인 (0) | 2023.02.02 |
오라클 19c ORA-04031 에러를 발생시키는 방법 (0) | 2023.01.25 |