※ sqlplus / as sysdba 에서 실행한다.
■ DATA DICTIONARY 성능 평가
SELECT sum(gets) "gets",
sum(getmisses) "getmisses" ,
round( (1-(sum(getmisses)/sum(gets)) )*100,2) "Hit Ratio"
FROM gv$rowcache
WHERE gets > 0 ;
☞ 이 값은 Hit Ratio가 95% 이상이면 정상이다. 만약 수치가 높으면 shared_pool_size의 값을 증가 시켜야 한다.
■ LIBRARY CACHE 성능 평가
select to_char(trunc(sum(reloads)/sum(pins)*100, 5),99.99999)||'% (less than 1%)' "Library Cache MISS RATIO" from v$librarycache;
☞ 이 값은 1~2% 이하이면 정상이다. 만약 수치가 높으면 shared_pool_size의 값을 증가 시켜야 한다.
■ 버퍼 캐시 성능 평가
SELECT bg.value "DB Block Gets",
cg.value "Consistent Gets",
pr.value "Physical Reads",
round((1-(pr.value/(bg.value+cg.value)))*100, 2) "Hit Ratio"
FROM v$sysstat pr,
v$sysstat bg,
v$sysstat cg
WHERE pr.name = 'physical reads'
AND bg.name = 'db block gets'
AND cg.name = 'consistent gets';
☞ 이 값은 Hit Ratio가 90% 이상 나와야 정상이며, 70% 이하로 떨어져 있을 경우
db_block_buffers 또는 db_cache_size를 증가시켜야 한다.
■ 소트 성능 평가
select name, value from v$sysstat where name in ('sorts (memory)', 'sorts (disk)');
☞ 메모리와 디스크 양쪽에서 소트에 얼마나 많은 자원을 할당하는지 알아본다.
만약 메모리 소트보다 디스크 소트가 많으면 sort_area_retained_size의
크기를 늘려주어야 한다.
■ 리두 로그 버퍼 성능 평가
SELECT value "Redo log request" FROM v$sysstat WHERE name = 'redo log space requests';
☞ 결과값이 0에 가까워질 때까지 리두로그 버퍼 수를 늘려야 한다.
■ ROLLBACK SEGMENT 성능 평가
column 'rollback segment name' format a25
column miss_ratio format a10
column rssize format 99,999,999
column writes format 99,999,999
column xacts format 999
column status format a8
select name "rollback segment name",
rssize, writes, xacts, status,
trunc(waits/gets*100, 5)||' %' miss_ratio
from v$rollstat, v$rollname
where v$rollstat.usn = v$rollname.usn
order by waits/gets desc;
☞ MISS RATIO가 1~2% 이하 이어야 한다.
1~2%보다 크면 ROLLBACK SEGMENT의 갯수를 늘려주어야 한다.
SHOW PARAMETERS
SHOW PARAMETER process
SHOW PARAMETER spfile
Default: 300
ALTER SYSTEM SET OPEN_CURSORS=300 SCOPE=SPFILE;
Default: 150
ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;
Default: 0
ALTER SYSTEM SET SHARED_POOL_SIZE=200M SCOPE=SPFILE;
Default: 0
ALTER SYSTEM SET LARGE_POOL_SIZE=200M SCOPE=SPFILE;
Default: 0
ALTER SYSTEM SET DB_BLOCK_SIZE=8192 SCOPE=SPFILE;
Default: 0
ALTER SYSTEM SET DB_CACHE_SIZE=200M SCOPE=SPFILE;
Default: 0
ALTER SYSTEM SET SORT_AREA_RETAINED_SIZE=0 SCOPE=SPFILE;
Default: 1G
ALTER SYSTEM SET MEMORY_TARGET=1G SCOPE=SPFILE;
ALTER SYSTEM SET JAVA_POOL_SIZE=0 SCOPE=SPFILE;
ALTER SYSTEM SET STREAMS_POOL_SIZE=0 SCOPE=SPFILE;
SELECT (
(SELECT SUM(value) FROM V$SGA) -
(SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)
) "SGA_TARGET"
FROM DUAL;
ALTER SYSTEM SET SGA_TARGET=512M SCOPE=SPFILE;
ALTER SYSTEM SET SGA_MAX_SIZE=1024M SCOPE=SPFILE;
ALTER SYSTEM SET LARGE_POOL_SIZE=256M SCOPE=SPFILE;