Copenhagen Schema
Copenhagen Schema
SQL
Metrics Waits
Stats
Sessions
Performance Tuning in
Oracle 10g
Kyle Hailey
9i
Waits
v$sql
v$system_event
V$session_wait V$system_event
V$sql –
includes stats V$session_event
V$sesstat
v$sysstat
v$session
V$session
V$sysstat
10g
Waits
SQL
V$sql
Includes some
waits now
V$session includes waits
Stats Sessions
Metrics – rates and
calculations
X$ -> no v$ -> WRH$_SQLSTAT
Waits V$eventmetric
SQL V$waitclassmetric
Metrics
Stats
Sessions V$sessmetric
V$sysmetric
Time Model
Time Model
SQL
Wait
Metrics
Stats
Sessions
In Memory History
Metrics
1 hour in Memory
15 and 60 seconds
Time
Session Wait
1-128M in Memory
Every second
10g Constructs
OS Statistics (Kodi Uma…)
– Depends on platform
Metrics
– Deltas and derived stats over 15 and 60 second periods
Metric History
– Up to an hour
Time Model
– groups time like waits & cpu into domains , eg Logon on/off , Parse
Services
– (not discussed in this presentation)
ADDM
– Automatic analysis of performance data
10g Performance Data
Statistics
– New stats, DB Time (?)
Metrics*
– Deltas of Stats and Events over 15 and 60 seconds
– Max, min, average, standard deviation over 30 minutes
Wait Model
– Wait events times and counts
– Wait classes
– ASH* – history of session waits
Time Model*
– Database time
– Aggregation of time by operational area such as log on/off, parsing
etc
SQL
– * Added some wait data – ( internally track the cursor statistic
deltas)
Session
– * exposed wait info
* New in 10g
10g Generic Fields Names
Conventions V$
Names
– Event
– Statistic
– Waitclass
Ids
– Event#
– Statistic#
– Waitclass#
Name Hash
– Event_id
– Statistic_id
– Waitclass_id
System Statistics View
Stats Waits waitclasses Time Model sql
V$stat_name V$event_name
Metrics
Metrics V$active_session_history *
Polling at 1 second
history
(V$session_wait_history)
AWR Wrh$_active_session_history
(1 in 10 values from “”) *
Waits
Time Model
SQL
Waits
Metrics
Stats
Sessions
Waits – v$
Names and Classes
– v$event_name
Cumulative
– v$system_event – by event
– v$session_event – by session and event
– * v$system_wait_class – by wait class
– * v$event_histogram – by event and wait time bucket
Metrics - Deltas
– * v$eventmetric – 60 second deltas for all events (799)
– * v$waitclassmetric – 60 seconds deltas for 12 waitclasses
– * v$waitclassmetric_history – last 60 minutes of 1 minute deltas
Details - polling
– v$session_wait – current wait
– * v$session_wait_history – last 10 waits – a bit superfluous
– * v$active_session_history - last 30 minutes polled every second
* new in 10g
Waits New
800 waits
Latches broken out
– Ex) Latch: library cache latch
Enqueues broken out
– Ex) Enq: HW - contention
Waitclasses
Administrative (39) Configuration (20)
– log file size
– switch logfile
– Enqueues: ST, HW, ITL
– rebuild index – Latch: redo copy,shared pool
V$system_event v$eventmetric
BEGIN_TIME
WRH$_SYSTEM_EVENT
EVENT END_TIME
TOTAL_WAITS INTSIZE_CSEC
TOTAL_TIMEOUTS EVENT_ID
TIME_WAITED
NUM_SESS_WAITING No in memory history
TIME_WAITED
AVERAGE_WAIT WAIT_COUNT
TIME_WAITED_MICRO
EVENT_ID
V$session_event
Waits – Session Sampling
ER
current 10 samples Half hour 7 days (disk)
v$session_wait v$session_wait_history v$active_session_history wrh$active_session_history
SID SID SNAP_D
SAMPLE_ID
SEQ# SEQ#
SAMPLE_TIME DBID
EVENT EVENT# INSTANCE_NUMBER
SESSION_ID
P1TEXT EVENT SAMPLE_ID
P1 P1TEXT SESSION_SERIAL#
SAMPLE_TIME
P1RAW P1 USER_ID
P2TEXT SESSION_ID
P2TEXT SQL_ID
P2 P2 SESSION_SERIAL#
SQL_CHILD_NUMBER
P2RAW USER_ID
P3TEXT
P3TEXT SQL_PLAN_HASH_VALUE
P3 SQL_ID
P3 SQL_OPCODE
WAIT_TIME SQL_CHILD_NUMBER
P3RAW
SERVICE_HASH
WAIT_CLASS_ID SQL_PLAN_HASH_VALUE
SESSION_TYPE
WAIT_CLASS# SQL_OPCODE
WAIT_CLASS SESSION_STATE
SERVICE_HASH
WAIT_TIME QC_SESSION_ID
SECONDS_IN_WAIT SESSION_TYPE
QC_INSTANCE_ID
STATE SESSION_STATE
SEQ#
QC_SESSION_ID
EVENT#
v$event_name P1
QC_INSTANCE_ID
SEQ#
EVENT_ID P2
EVENT_ID
EVENT# P3
P1
EVENT_ID WAIT_TIME
P2
NAME TIME_WAITED
P3
PARAMETER1 CURRENT_OBJ#
WAIT_TIME
PARAMETER2 CURRENT_FILE#
TIME_WAITED
PARAMETER3 CURRENT_BLOCK#
CURRENT_OBJ#
WAIT_CLASS_ID PROGRAM
CURRENT_FILE#
WAIT_CLASS# MODULE
CURRENT_BLOCK#
WAIT_CLASS ACTION
PROGRAM
CLIENT_ID
MODULE
Waits in Workload Repository –
AWR
WRH$
– WRH$_EVENT_NAME
– WRH$_SYSTEM_EVENT ( + BL* )
– WRH$_BG_EVENT_SUMMARY
– WRH$_WAITCLASSMETRIC_HISTORY alerts only
– WRH$ACTIVE_SESSION_HISTORY
*( BL : base line)
Waits – DBA view on AWR
DBA_HIST – views onto WRH
– DBA_HIST_WAITCLASSMET_HISTORY
Alerts only
– DBA_HIST_SYSTEM_EVENT
Queries both
WRH$_SYSTEM_EVENT_BL
WRH$_SYSTEM_EVENT
– DBA_HIST_BG_EVENT_SUMMARY
Stats
Time Model
SQL
Waits
Metrics
Stats
Sessions
Stats
V$statname
V$systat
V$sesstat
*v$sysmetric – derived and deltas, 15
and 60 second
*v$sysmetric_history – last hour
*v$sysmetric_summary – max, min, avg, stddev
Snapshots:
* wrh$_sysmetric_history (alert only)
* wrh$systat
* wrh$_ sysmetric_summary
v$sysmetric
Short Duration – 15 secs
Long Duration – 60 secs
Per Transaction
Per Sec
Ratios
Metric short duration
Per Sec and Per Transaction
Buffer Cache Hit Ratio Physical Reads
Memory Sorts Ratio Physical Writes
Execute Without Parse Physical Reads Direct
Ratio Redo Generated
Logons
Soft Parse Ratio
User Calls
Database CPU Time Logical Reads
Ratio
Redo Writes
Library Cache Hit Ratio Total Table Scans
Shared Pool Free % Full Index Scans
Txns Per Logon DB Block Gets
Consistent Read Gets
Per Sec DB Block Changes
Consistent Read Changes
User Transaction Per Sec Executions
Metric long duration
Buffer Cache Hit Ratio Current Logons Count
Memory Sorts Ratio Current Open Cursors Count
Redo Allocation Hit Ratio User Limit %
User Commits Percentage SQL Service Response Time
User Rollbacks Percentage Database Wait Time Ratio
Cursor Cache Hit Ratio Database CPU Time Ratio
Rows Per Sort Row Cache Hit Ratio
Execute Without Parse Ratio Row Cache Miss Ratio
Soft Parse Ratio Library Cache Hit Ratio
User Calls Ratio Library Cache Miss Ratio
Global Cache Average CR Get Time Shared Pool Free %
Global Cache Average Current Get Time PGA Cache Hit %
Global Cache Blocks Corrupted Process Limit %
Global Cache Blocks Lost Session Limit %
Txns Per Logon
sec/txn
Per Second and Transaction
Per Sec Physical Reads Disk Sort
Physical Writes Enqueue Timeouts
User Commits Physical Reads Direct Enqueue Waits
User Rollbacks Physical Writes Direct Enqueue Deadlocks
User Transaction Physical Reads Direct Lobs Enqueue Requests
Physical Writes Direct Lobs DB Block Gets
DBWR Checkpoints
Redo Generated Consistent Read Gets
Background Checkpoints
Logons DB Block Changes
Network Traffic Volume Open Cursors Consistent Read Changes
User Calls CPU Usage
Per Transaction Recursive Calls CR Blocks Created
Logical Reads CR Undo Records Applied
Response Time Redo Writes User Rollback Undo Records Applied
Long Table Scans Leaf Node Splits
Total Table Scans Branch Node Splits
Full Index Scans PX downgraded 1 to 25%
Total Index Scans PX downgraded 25 to 50%
Total Parse Count PX downgraded 50 to 75%
Hard Parse Count PX downgraded 75 to 99%
Parse Failure Count .
Metrics Visually
v$sysmetric_history
v$sysmetric_history MAX_INTERVAL
v$sessmetric
NAME
CLASS
BEGIN_TIME VALUE
BEGIN_TIME HASH
END_TIME
END_TIME
INTSIZE_CSEC
INTSIZE_CSEC
GROUP_ID
SESSION_ID
METRIC_ID
SESSION_SERIAL_NUM
METRIC_NAME
CPU
VALUE
PHYSICAL_READS
METRIC_UNIT
PGA_MEMORY v$sessstat
HARD_PARSES STATISTIC#
v$sysmetric_summary SOFT_PARSES
NAME
BEGIN_TIME CLASS
END_TIME PHYSICAL_READ_PCT VALUE
INTSIZE_CSEC -> intsize
GROUP_ID
v$metricname LOGICAL_READ_PCT
HASH
GROUP_ID
METRIC_ID
GROUP_NAME
METRIC_NAME
METRIC_ID
NUM_INTERVAL
METRIC_NAME
MAXVAL
METRIC_UNIT
MINVAL
AVERAGE
STANDARD_DEVIATION
METRIC_UNIT
Time Model
Time Model
SQL
Waits
Metrics
Stats
Sessions
Time Model
*V$SYS_TIME_MODEL
*V$SESS_TIME_MODEL
WRH$_SYS_TIME_MODEL
WRH$_SYS_TIME_MODEL_BL
DBA_HIST_SYS_TIME_MODEL
Time Model
V$SYS_TIME_MODEL V$SESS_TIME_MODEL
STAT_ID STAT_ID
STAT_NAME STAT_NAME
VALUE VALUE
Time Model Details
SQL> select STAT_NAME, value from V$SYS_TIME_MODEL;
DB time 3.9837E+10
DB CPU 2.4055E+10
background cpu time 2.1808E+10
sequence load elapsed time 15939410
parse time elapsed 451760577
hard parse elapsed time 178851736
sql execute elapsed time 3.6900E+10
connection management call elapsed time 1045589383
failed parse elapsed time 848439
hard parse (sharing criteria) elapsed time 3347865
hard parse (bind mismatch) elapsed time 1515268
PL/SQL execution elapsed time 418089534
inbound PL/SQL rpc elapsed time 0
PL/SQL compilation elapsed time 37666077
Java execution elapsed time 0
bind/define call elapsed time 0
Time Model Detail Session
SQL> select STAT_NAME, value from V$SESS_TIME_MODEL where sid=1;
DB time 143
DB CPU 290000
background cpu time 0
sequence load elapsed time 0
parse time elapsed 0
hard parse elapsed time 0
sql execute elapsed time 0
global cache cr block receive time 0
global cache current block receive time 0
global cache get time 0
connection management call elapsed time 0
failed parse elapsed time 0
hard parse (sharing criteria) elapsed time 0
hard parse (bind mismatch) elapsed time 0
PL/SQL execution elapsed time 0
inbound PL/SQL rpc elapsed time 0
PL/SQL compilation elapsed time 0
Java execution elapsed time 0
bind/define call elapsed time 0
cluster wait time 0
concurrency wait time 0
application wait time 0
user I/O wait time 0
SQL
Time Model
SQL
Waits
Metrics
Stats
Sessions
V$SQL
SQL_FULLTEXT
SQL_ID
FETCHES
END_OF_FETCH_COUNT
DIRECT_WRITES
APPLICATION_WAIT_TIME
CONCURRENCY_WAIT_TIME
CLUSTER_WAIT_TIME
USER_IO_WAIT_TIME
PLSQL_EXEC_TIME
JAVA_EXEC_TIME
CPU_TIME
ELAPSED_TIME
AWR SQL
WRH$_SQLSTAT
WRH$_SQLSTAT_BL
WRH$_SQLTEXT
Metrics
Time Model
SQL
Waits
Metrics
Stats
Sessions
Metrics
Performance Advantage
– Less CPU than v$sysstat, v$system_event
– (not scanning the big strucs #sessions x
#stats or #events, no conversions )
Precomputed deltas
– 15, 60 seconds
Precomputed derived values
– Per tnx, per sec, ratios
Metrics
V$METRICGROUP
V$METRICNAME
V$METRIC
V$SYSMETRIC V$METRIC_HISTORY
V$SESSMETRIC
V$FILEMETRIC
V$EVENTMETRIC Combined view onto the other
V$WAITCLASSMETRIC metric tables
V$SVCMETRIC
V$SYSMETRIC_HISTORY
V$FILEMETRIC_HISTORY
V$WAITCLASSMETRIC_HISTORY
V$SVCMETRIC_HISTORY
V$SYSMETRIC_SUMMARY
Metric groups and names
v$metricgroup v$metricname
GROUP_ID GROUP_ID
NAME GROUP_NAME
INTERVAL_SIZE METRIC_ID
MAX_INTERVAL METRIC_NAME
METRIC_UNIT
Metric Group
2 is a superset of 3
1* select * from v$metricgroup 4 is a superset of 5
v$metric
BEGIN_TIME
END_TIME
INTSIZE_CSEC
GROUP_ID
ENTITY_ID
ENTITY_SEQUENCE
METRIC_ID
METRIC_NAME
VALUE
METRIC_UNIT
Session
Time Model
SQL
Waits
Metrics
Stats
Sessions
Session
Added ( exposed ) v$session_wait in v$session
EVENT# NUMBER
EVENT VARCHAR2(64)
P1TEXT VARCHAR2(64)
P1 NUMBER
P1RAW RAW(4)
P2TEXT VARCHAR2(64)
P2 NUMBER
P2RAW RAW(4)
P3TEXT VARCHAR2(64)
P3 NUMBER
P3RAW RAW(4)
WAIT_CLASS_ID NUMBER
WAIT_CLASS# NUMBER
WAIT_CLASS VARCHAR2(64)
WAIT_TIME NUMBER
SECONDS_IN_WAIT NUMBER
ADDM
dba_advisor_findings TASK_NAME, TASK_ID is indexed
and
dba_advisor_recommendations
TASK_ID,FINDING_ID
No range scans on x$ tables, so full scan x$kewash and then use equality in query on x$ash
X$ Desc x$ash
desc x$ash
SQL> desc x$kewash ADDR RAW(4)
ADDR RAW(4) INDX NUMBER
INST_ID NUMBER
INDX NUMBER SAMPLE_ADDR NUMBER
INST_ID NUMBER SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
SAMPLE_ID NUMBER SESSION_ID NUMBER
SAMPLE_TIME TIMESTAMP(3) SESSION_SERIAL# NUMBER
USER_ID NUMBER
SAMPLE_ADDR NUMBER SQL_ID VARCHAR2(13)
SAMPLE_LENGTH NUMBER SQL_CHILD_NUMBER NUMBER
SQL_PLAN_HASH_VALUE NUMBER
ROW_COUNT NUMBER SERVICE_HASH NUMBER
SESSION_TYPE NUMBER
SQL_OPCODE NUMBER
QC_SESSION_ID NUMBER
QC_INSTANCE_ID NUMBER
CURRENT_OBJ# NUMBER
CURRENT_FILE# NUMBER
CURRENT_BLOCK# NUMBER
SEQ# NUMBER
EVENT# NUMBER
P1 NUMBER
P2 NUMBER
P3 NUMBER
WAIT_TIME NUMBER
TIME_WAITED NUMBER
PROGRAM VARCHAR2(48)
MODULE VARCHAR2(48)
ACTION VARCHAR2(32)
CLIENT_ID VARCHAR2(64)
Sql metrics: x$kewrtsqlstat
x$kewrtsqlstat
Schema URL
http://svrman.us.oracle.com/SchemaView
/view_all.html