Agenda
Performance Diagnosis
What is ASH?
Using ASH data
What is SQL Trace?
Comparison of ASH and SQL trace/tkprof
Conclusions
Performance Diagnosis
Many different scopes
Database/Instance
Service/module/action
Session
What is ASH?
DB Time
Browse and
Read
Reviews
Add
item to
cart
Checkout
using
one-click
Browse and
Read
Reviews
Add
item to
cart
Checkout
using
one-click
DB Time
Time
SID
Module
SQL ID
State
Event
db file sequential
read
7:38:26
213
Book by author
qa324jffritcf
WAITING
7:42:35
213
Get review id
aferv5desfzs5
CPU
7:50:59
213
Add to cart
hk32pekfcbdfr
WAITING
7:52:33
213
One click
abngldf95f4de
WAITING
ASH: Dimensions
y Session
y Waits
y SQL
Sql_id, Opcode,Plan_hash
y PLSQL
y Objects
y Application
V$ACTIVE_SESSION_HISTORY
DBA_HIST_ACTIVE_SESS_HISTORY
ADDM
ASH report
EM Diagnostic Pack
COUNT(*)
PCTLOAD
456
32.95
7umwqvcy7tusf
123
8.89
01vunx6d35khz
119
8.6
bdyq2uph07cmp
102
7.37
9y4f9n5hr23yr
73
5.27
0bnc9a5kkf4wn
57
4.12
bv1gns48hgxpk
57
4.12
gq82c5361nxbq
57
4.12
djzkbxr7cm122
57
4.12
b2bakhq4w7rbv
57
4.12
8jydryyvdwcqp
57
4.12
69x6zf5myht7s
57
4.12
2ccawhzy8b7ua
57
4.12
4z5z7xb2g04m6
55
3.97
Event 10046
SQL_TRACE
Dbms_session
Dbms_support
Dbms_monitor (default includes waits)
Sort=exeela,fchela,prsela
Equivalent of DB time tuning
Print=10,20,30
Rather than 150 page output
But
Must be able to identify session(s)
Must have correct parameters for trace file size,
access
Requires host access to read file
Overhead is intrusive
Not easy to drilldown because of trace file structure
Shared server and PQ tracing is problematic
Cursors must be closed to get plan data
Session
Wait
SQL
Object
Application
Name
Null?
----------------------------------------- -------SAMPLE_ID
SAMPLE_TIME
SESSION_ID
SESSION_SERIAL#
USER_ID
SESSION_TYPE
SESSION_STATE
QC_SESSION_ID
QC_INSTANCE_ID
EVENT
EVENT_ID
EVENT#
SEQ#
P1
P2
P3
SQL_ID
SQL_CHILD_NUMBER
SQL_PLAN_HASH_VALUE
SQL_OPCODE
CURRENT_OBJ#
CURRENT_FILE#
CURRENT_BLOCK#
PROGRAM
MODULE
ACTION
CLIENT_ID
SERVICE_HASH
WAIT_TIME
TIME_WAITED
Type
---------------------------NUMBER
TIMESTAMP(3)
NUMBER
NUMBER
NUMBER
VARCHAR2(10)
VARCHAR2(7)
NUMBER
NUMBER
VARCHAR2(64)
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
VARCHAR2(13)
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
VARCHAR2(48)
VARCHAR2(48)
VARCHAR2(32)
VARCHAR2(64)
NUMBER
NUMBER
NUMBER
Session
Wait
Name
Null?
----------------------------------------- -------SAMPLE_ID
SAMPLE_TIME
SESSION_ID
SESSION_SERIAL#
USER_ID
SESSION_TYPE
SESSION_STATE
QC_SESSION_ID
QC_INSTANCE_ID
EVENT
EVENT_ID
EVENT#
SEQ#
P1TEXT
P1
P2TEXT
P2
P3TEXT
P3
WAIT_CLASS
WAIT_CLASS_ID
WAIT_TIME
TIME_WAITED
BLOCKING_SESSION
BLOCKING_SESSION_STATUS
BLOCKING_SESSION_SERIAL#
Type
---------------------------NUMBER
TIMESTAMP(3)
NUMBER
NUMBER
NUMBER
VARCHAR2(10)
VARCHAR2(7)
NUMBER
NUMBER
VARCHAR2(64)
NUMBER
NUMBER
NUMBER
VARCHAR2(64)
New!
NUMBER
VARCHAR2(64)
New!
NUMBER
VARCHAR2(64)
New!
NUMBER
VARCHAR2(64)
New!
NUMBER
NUMBER
NUMBER
NUMBER
New!
VARCHAR2(11)
New!
NUMBER
New!
Application
Name
Null?
----------------------------------------- -------SQL_ID
SQL_CHILD_NUMBER
SQL_PLAN_HASH_VALUE
FORCE_MATCHING_SIGNATURE
SQL_OPCODE
XID
CURRENT_OBJ#
CURRENT_FILE#
CURRENT_BLOCK#
PROGRAM
MODULE
ACTION
CLIENT_ID
SERVICE_HASH
Type
---------------------------VARCHAR2(13)
NUMBER
NUMBER
NUMBER
New!
NUMBER
RAW(8)
New!
NUMBER
NUMBER
NUMBER
VARCHAR2(48)
VARCHAR2(48)
VARCHAR2(32)
VARCHAR2(64)
NUMBER
ASH vs SQLtrace/tkprof
ASH
SQLtrace
Parse/Exec/Fetch breakdown
No
Yes
Yes
Yes
Counts/occurrence data
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Always on
Yes
No
No
Yes
No
Yes
SQL execution ID
Is this same execution as last sample?
11g ASH
SQLtrace
Parse/Exec/Fetch breakdown
No
Yes
Yes
Yes
Yes
Yes
Counts/occurrence data
No
Partial
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Always on
Yes
Yes
No
No
Partial
Yes
No
No
Yes
Worked Example
From Oracle internal email system
Picked a session with periodic highload
Compare tkprof and ASH report data
D E M O N S T R A T I O N
EM Diagnostic Pack
y
y
y
y
ASH advantages
y
y
y
y
Conclusion
ASH provides most of the data that we use from
SQL Trace/tkprof
ASH data always available
Using ASH means never having to say Im
Sorry. Can you just run it again please?
Use any dimension, not just session
Using ASH greatly reduces the number of times
that you need to resort to SQL Trace
Location
Date
Time
Location
Wednesday,
Nov. 14
9:45
a.m.
Moscone
South: 309
Wednesday,
Nov. 14
11:15
a.m.
Moscone
South: 309
Thursday,
Nov. 15
10:00
a.m.
Moscone West:
2001 - L2
Thursday,
Nov. 15
10:00
a.m.
Moscone
South: 309
Thursday,
Nov. 15
11:30
a.m.
Moscone
South: 309