Oracle DB 19C ADMINISTRATION SERIES
Oracle DB 19C ADMINISTRATION SERIES
Database Installation:
SGA and PGA Formula
ORACLE DATABASE
ADMINISTRATION SERIES
LinkedIn: www.linkedln.com/in/stephen-njoroge
2
SGA and PGA Setting
General Formula
Total Memory for Oracle ( ~75%) of Physical RAM
M=0.75×T
SGA+PGA=M
Component % of M Ratio
SGA 75% 3:1
PGA 25% 1:3
Formula:
SGA=0.77×M
PGA=0.25×M
Component % of M Ratio
SGA 40% 2:5
PGA 60% 3:5
Formula:
SGA=0.40×M
PGA=0.60×M
Mixed Workload
Component % of M Ratio
SGA 60 3:5
PGA 40 2:5
Formula:
SGA=0.40×M
PGA=0.60×M
T = 50 GB
M = 0.75 × 50 = 37.5 GB
Scenario:
OLTP Instances (Ratio ~ 3:1)
SGA=0.75×37.5=28.125 GB
PGA=0.25×37.5=9.375 GB
SGA=0.40×37.5=15 GB
PGA=0.60×37.5=22.5 GB
Mixed Workload Instances (Ratio ~ 2:1)
SGA=0.66×37.5=24.75 GB,
PGA=0.34×37.5=12.75 GB
Reference Table
Tip
#!/bin/bash
# Convert to MB
TOTAL_MB=$((TOTAL_RAM * 1024))
ORACLE_MB=$((TOTAL_MB * 75 / 100))
case "$WORKLOAD" in
"OLTP"|"oltp")
SGA_MB=$((ORACLE_MB * 75 / 100))
PGA_MB=$((ORACLE_MB - SGA_MB))
;;
"OLAP"|"olap")
SGA_MB=$((ORACLE_MB * 45 / 100))
PGA_MB=$((ORACLE_MB - SGA_MB))
;;
"MIXED"|"mixed")
SGA_MB=$((ORACLE_MB * 66 / 100))
PGA_MB=$((ORACLE_MB - SGA_MB))
;;
*)
echo "Invalid workload type. Use OLTP, OLAP, or
MIXED."
ORACLE DATABASE ADMINISTRATON STEPHEN NJOROGE
7
SGA and PGA Setting
exit 1
;;
esac
echo
echo "Estimated Oracle Memory: $((ORACLE_MB / 1024))
GB"
echo " - SGA Target : $SGA_MB MB"
echo " - PGA Target : $PGA_MB MB"
echo
echo "You can apply these settings using SQL:"
echo "------------------------------------------"
echo "ALTER SYSTEM SET sga_target = ${SGA_MB}M SCOPE =
SPFILE;"
echo "ALTER SYSTEM SET pga_aggregate_target =
${PGA_MB}M SCOPE = SPFILE;"
echo "ALTER SYSTEM SET sga_max_size = ${SGA_MB}M SCOPE
= SPFILE;"
SQL Version
DEFINE total_ram_gb = 50
DEFINE workload = 'OLTP' -- Options: OLTP, OLAP, MIXED
DECLARE
total_ram_mb NUMBER := &total_ram_gb * 1024;
usable_mem_mb NUMBER := total_ram_mb * 0.75;
sga_target_mb NUMBER;
pga_target_mb NUMBER;
BEGIN
CASE UPPER('&workload')
WHEN 'OLTP' THEN
sga_target_mb := usable_mem_mb * 0.75;
WHEN 'OLAP' THEN
sga_target_mb := usable_mem_mb * 0.45;
WHEN 'MIXED' THEN
sga_target_mb := usable_mem_mb * 0.66;
ELSE
raise_application_error(-20001, 'Invalid
workload type');
END CASE;
DBMS_OUTPUT.PUT_LINE('SGA_TARGET = ' ||
ROUND(sga_target_mb) || 'M');
ORACLE DATABASE ADMINISTRATON STEPHEN NJOROGE
9
SGA and PGA Setting
DBMS_OUTPUT.PUT_LINE('PGA_AGGREGATE_TARGET = ' ||
ROUND(pga_target_mb) || 'M');
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('Run these commands:');
DBMS_OUTPUT.PUT_LINE('ALTER SYSTEM SET sga_target =
' || ROUND(sga_target_mb) || 'M SCOPE = SPFILE;');
DBMS_OUTPUT.PUT_LINE('ALTER SYSTEM SET
pga_aggregate_target = ' || ROUND(pga_target_mb) || 'M
SCOPE = SPFILE;');
END;
/