2026-03-12 20:23:15
This commit is contained in:
199
idev/perf_performance_snapshot.sql
Normal file
199
idev/perf_performance_snapshot.sql
Normal file
@@ -0,0 +1,199 @@
|
||||
-- +----------------------------------------------------------------------------+
|
||||
-- | Jeffrey M. Hunter |
|
||||
-- | jhunter@idevelopment.info |
|
||||
-- | www.idevelopment.info |
|
||||
-- |----------------------------------------------------------------------------|
|
||||
-- | Copyright (c) 1998-2011 Jeffrey M. Hunter. All rights reserved. |
|
||||
-- |----------------------------------------------------------------------------|
|
||||
-- | DATABASE : Oracle |
|
||||
-- | FILE : perf_performance_snapshot.sql |
|
||||
-- | CLASS : Tuning |
|
||||
-- | PURPOSE : This script will generate a small performance overview report |
|
||||
-- | checking all key database performance indicators. |
|
||||
-- | NOTE : As with any code, ensure to test this script in a development |
|
||||
-- | environment before attempting to run it in production. |
|
||||
-- +----------------------------------------------------------------------------+
|
||||
|
||||
SET LINESIZE 145
|
||||
SET PAGESIZE 9999
|
||||
SET VERIFY off
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Database Startup Date/Time |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
instance "Instance Name"
|
||||
, open_time "Open Date/Time"
|
||||
FROM
|
||||
v$thread
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Buffer Cache Hit Ratio |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
TRUNC( ( 1 - ( SUM(decode(name,'physical reads',value,0)) /
|
||||
( SUM(DECODE(name,'db block gets',value,0))
|
||||
+
|
||||
(SUM(DECODE(name,'consistent gets',value,0)))
|
||||
)
|
||||
)
|
||||
) * 100
|
||||
) "Buffer Hit Ratio"
|
||||
FROM v$sysstat
|
||||
/
|
||||
|
||||
SELECT
|
||||
a.value + b.value "Logical reads"
|
||||
, c.value "Physical Reads"
|
||||
, d.value "Physical Writes"
|
||||
, ROUND (100 * ( (a.value+b.value)-c.value) / (a.value+b.value)
|
||||
) "Buffer Hit Ratio"
|
||||
, ROUND(c.value * 100 / (a.value + b.value)) "% Missed"
|
||||
FROM
|
||||
v$sysstat a
|
||||
, v$sysstat b
|
||||
, v$sysstat c
|
||||
, v$sysstat d
|
||||
WHERE
|
||||
a.statistic#=37
|
||||
AND b.statistic#=38
|
||||
AND c.statistic#=39
|
||||
AND d.statistic#=40
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Data Dictionary Hit Ratio |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
SUM(gets) "Data Dict. Gets"
|
||||
, SUM(getmisses) "Data Dict. Cache Misses"
|
||||
, ROUND((1-(sum(getmisses)/SUM(gets)))*100) "Data Dict Cache Hit Ratio"
|
||||
, ROUND(SUM(getmisses)*100/SUM(gets)) "% Missed"
|
||||
FROM
|
||||
v$rowcache
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Library Cache Miss Ratio |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
SUM(pins) "Executions"
|
||||
, SUM(reloads) "Cache Misses"
|
||||
, ROUND((1-(SUM(reloads)/SUM(pins)))*100) "Library Cache Hit Ratio"
|
||||
, ROUND(SUM(reloads)*100/SUM(pins)) "% Missed"
|
||||
FROM
|
||||
v$librarycache
|
||||
/
|
||||
|
||||
SELECT
|
||||
namespace "Namespace"
|
||||
, TRUNC(gethitratio*100) "Hit Ratio"
|
||||
, TRUNC(pinhitratio*100) "Pin Hit Ratio"
|
||||
, reloads "Reloads"
|
||||
, invalidations "Invalidations"
|
||||
FROM
|
||||
v$librarycache
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Redo Log Buffer |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
SUBSTR(name,1,30) "Name"
|
||||
, TO_CHAR(value, '999,999') "Bytes"
|
||||
FROM
|
||||
v$sysstat
|
||||
WHERE
|
||||
name ='redo log space requests'
|
||||
/
|
||||
|
||||
SELECT
|
||||
name "Name"
|
||||
, TO_CHAR(bytes, '999,999,999,999') "Bytes"
|
||||
FROM
|
||||
v$sgastat
|
||||
WHERE
|
||||
name ='free memory'
|
||||
/
|
||||
|
||||
SELECT
|
||||
TO_CHAR(SUM(executions), '999,999,999,999,999,999') "Tot SQL since startup"
|
||||
, TO_CHAR(SUM(users_executing), '999,999,999,999,999') "SQL executing now"
|
||||
FROM
|
||||
v$sqlarea
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +--------------------------------------------------------+
|
||||
PROMPT | If miss_ratio or immediate_miss_ratio > 1 then latch |
|
||||
PROMPT | contention exists, decrease LOG_SMALL_ENTRY_MAX_SIZE |
|
||||
PROMPT +--------------------------------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
SUBSTR(ln.name,1,30) "Name"
|
||||
, (misses/(gets+.001)) * 100 "Miss Ratio"
|
||||
, (immediate_misses/(immediate_gets+.001)) * 100 "Immd. Miss Ratio"
|
||||
FROM
|
||||
v$latch l
|
||||
, v$latchname ln
|
||||
WHERE
|
||||
l.latch# = ln.latch#
|
||||
AND ( (( misses / (gets+.001)) * 100 > .1 )
|
||||
OR
|
||||
(( immediate_misses / (immediate_gets+.001)) * 100 > .1)
|
||||
)
|
||||
ORDER BY
|
||||
ln.name
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +--------------------------------------------------------+
|
||||
PROMPT | If these are < 1% of Total Number of requests for data |
|
||||
PROMPT | then extra rollback segments are needed. |
|
||||
PROMPT +--------------------------------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT
|
||||
class "Class"
|
||||
, count "Count"
|
||||
FROM
|
||||
v$waitstat
|
||||
WHERE
|
||||
class IN ( 'free list'
|
||||
, 'system undo header'
|
||||
, 'system undo block'
|
||||
, 'undo header'
|
||||
, 'undo block')
|
||||
GROUP BY
|
||||
class
|
||||
, count
|
||||
/
|
||||
|
||||
PROMPT
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT | Total Number of Requests for Data |
|
||||
PROMPT +-----------------------------------+
|
||||
PROMPT
|
||||
|
||||
SELECT TO_CHAR(SUM(value), '999,999,999,999,999') "Total Requests"
|
||||
FROM v$sysstat
|
||||
WHERE name IN ('db block gets','consistent gets')
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user