← Performance
Oracle · Performance
How to run all Oracle memory advisors in one script
Print current memory parameters plus DB cache, MEMORY_TARGET, PGA, and SGA target advice — all spooled to one file.
Tested on11g12c18c19c21c23ai26ai
One-stop advisor report: prints current memory parameter values, then queries V$DB_CACHE_ADVICE, V$MEMORY_TARGET_ADVICE, V$PGA_TARGET_ADVICE, V$SGA_TARGET_ADVICE, and the maximum shared pool from V$SGA_RESIZE_OPS. Spools everything to advisormem.txt.
SPOOL advisormem.txt
PROMPT checkmem
SET PAGESIZE 60
SET LINESIZE 300
COLUMN name FORMAT a30
COLUMN value FORMAT a70
SELECT name, value
FROM v$parameter
WHERE name IN ('memory_max_target', 'memory_target',
'sga_max_size', 'sga_target',
'db_cache_size',
'shared_pool_reserved_size', 'shared_pool_size',
'large_pool_size',
'pga_aggregate_target');
PROMPT dbcache
COLUMN size_for_estimate FORMAT 999,999,999,999 HEADING 'Cache Size (MB)'
COLUMN buffers_for_estimate FORMAT 999,999,999 HEADING 'Buffers'
COLUMN estd_physical_read_factor FORMAT 999.90 HEADING 'Estd Phys|Read Factor'
COLUMN estd_physical_reads FORMAT 999,999,999,999 HEADING 'Estd Phys| Reads'
SELECT size_for_estimate,
buffers_for_estimate,
estd_physical_read_factor,
estd_physical_reads
FROM v$db_cache_advice
WHERE name = 'DEFAULT'
AND block_size = (SELECT value FROM v$parameter WHERE name = 'db_block_size')
AND advice_status = 'ON';
PROMPT memtarget
SELECT * FROM v$memory_target_advice ORDER BY memory_size;
PROMPT pgatarget
SELECT ROUND(pga_target_for_estimate / 1024 / 1024) AS target_mb,
estd_pga_cache_hit_percentage AS cache_hit_perc,
estd_overalloc_count
FROM v$pga_target_advice;
PROMPT sgatarget
SELECT * FROM v$sga_target_advice ORDER BY sga_size;
PROMPT sharedpool
SELECT ROUND(MAX(final_size) / 1024 / 1024) AS final_size_mb
FROM v$sga_resize_ops
WHERE component = 'shared pool';
SPOOL OFFperformancememoryadvisorsspool