Вы находитесь на странице: 1из 88

10g New Performance #.

Features
 Metrics
 AWR ( DBA_HIST_ )
 Time Model
 Wait Classes
 Misc
1. V$sqlstats
2. Wait improvements
3. Client_id
4. Services
Copyright 2006 Kyle Hailey
#.2

9i Waits
v$sql
v$system_event
V$system_event
V$sql – V$session_wait
includes stats
V$session_event

V$sesstat
v$sysstat
v$session

Copyright 2006 Kyle Hailey


#.3

10g
Waits
SQL
V$sql

V$session

Stats Sessions

Includes some waits now

Copyright 2006 Kyle Hailey


#.4

Metrics – rates and calculations


DBA_HIST_SQLSTAT

Waits V$eventmetric
SQL V$waitclassm
etric

Metrics

Stats
Sessions V$sessmetric

V$sysmetric

Copyright 2006 Kyle Hailey


#.5

Metrics
What inspired Metrics?
Old statistics were cumulative
Old statistics lacked history

… a new 10g feature to make our lives easier


What is the IO on the system
right now?

Copyright 2006 Kyle Hailey


#.6

First Tedious Step


Select value from v$sysstat
where name=‘physical reads’;

VALUE
---------------
1,533,787
Not much help …Why? Let see …

Copyright 2006 Kyle Hailey


#.7

This tells you … Nothing


GOOD BAD

1,533,787

30 minutes

IO’s

30 minutes

time time

Copyright 2006 Kyle Hailey


#.8

YOU Need to do MATH to find Out

Take value at time A


Take value at time B
Delta = (B-A)
or
Rate = (B-A)/elapsed time

Copyright 2006 Kyle Hailey


#.9

Methods
 Oracle 6 Utlbstat.sql/Utlestat.sql
 Creates tables, inserts, deletes
 Oracle 8 introduced Statspack
 Improvement,but needs to be set up and administered
(by guess who)
 Oracle 10 introduces Metrics (and AWR & OEM)

Copyright 2006 Kyle Hailey


#.10

Performance Metric Deltas


Kinds of Metric Tables
2. Metric – current deltas
3. Metric History – deltas over last hour
Current Deltas Values over last hour
V$EVENTMETRIC V$FILEMETRIC_HISTORY
V$FILEMETRIC V$SYSMETRIC_HISTORY
V$SESSMETRIC V$SERVICEMETRIC_HISTORY
V$SERVICEMETRIC V$WAITCLASSMETRIC_HISTORY
V$SYSMETRIC
V$SYSMETRIC_SUMMARY
V$WAITCLASSMETRIC
Copyright 2006 Kyle Hailey
#.11

Metrics

 Collected at Pre-Set  Current Value for


intervals  Deltas
 15 second  Rates
 60 second  per second
 10 minutes
 per transaction
 Ratios
 30 minutes
 Percentages

dependability at your fingertips

Copyright 2006 Kyle Hailey


#.12

Metric Tables
Wait Events
 V$EVENTMETRIC (60 secs )
 V$WAITCLASSMETRIC (60 secs)

Statistics
 V$SESSMETRIC (15 secs Deltas)
 V$SYSMETRIC (15 and 60 secs deltas)

Files
 V$FILEMETRIC ( 10 minutes)

SQL (the secret is out)


 x$kkssqlsta (30 Minutes) “not a metric” cumulates values up to 30
minutes, then snapshots it to dba_hist_sqlstat

Copyright 2006 Kyle Hailey


#.13

Answer at your fingertips


GOOD BAD

3 IO/sec
X
1,533,787 513 IO/sec

30 minutes

IO’s

30 minutes

time time

Copyright 2006 Kyle Hailey


#.14

Now What’s the IO?


Select VALUE , METRIC_UNIT
from v$sysmetric
where metric_name='Physical Reads Per Sec‘;

VALUE METRIC_UNIT INTSIZE_CSEC


---------- ----------------- ------------
654.6736 Reads Per Second 5959
134.9835 Reads Per Second 1515

Avg IO per sec for the last 15 and 60 secs

Copyright 2006 Kyle Hailey


#.15

v$sysmetric
desc v$sysmetric
BEGIN_TIME
END_TIME
INTSIZE_CSEC – interval value in 1/100sec
GROUP_ID
METRIC_ID
METRIC_NAME
VALUE
METRIC_UNIT

Attention: metric_names are different from v$sysstat

Copyright 2006 Kyle Hailey


#.16
v$sysmetric 15 Secs
Per Sec and Per Transaction
Physical Reads
Buffer Cache Hit Ratio Physical Writes
Memory Sorts Ratio Physical Reads Direct
Execute Without Parse Ratio Redo Generated
Logons
Soft Parse Ratio
User Calls
Database CPU Time Ratio Logical Reads
Library Cache Hit Ratio Redo Writes
Shared Pool Free % Total Table Scans
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

Copyright 2006 Kyle Hailey


v$sysmetric 60 Sec
#.17

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

Copyright 2006 Kyle Hailey


#.18
v$sysmetric 60 Sec
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 .

Copyright 2006 Kyle Hailey


#.19

v$sessmetric
desc
v$sessmetric
• Only 15 second
BEGIN_TIME Delta
END_TIME
INTSIZE_CSEC
SESSION_ID
SESSION_SERIAL_NUM
CPU
PHYSICAL_READS
PGA_MEMORY
HARD_PARSES
SOFT_PARSES
PHYSICAL_READ_PCT
LOGICAL_READ_PCT
Copyright 2006 Kyle Hailey
#.20

Desc v$eventmetric
SQL> desc v$eventmetric
Name Type
---------------------------------- ------
BEGIN_TIME DATE
END_TIME DATE
INTSIZE_CSEC NUMBER
EVENT# NUMBER
EVENT_ID NUMBER
NUM_SESS_WAITING NUMBER
TIME_WAITED NUMBER
WAIT_COUNT NUMBER

Copyright 2006 Kyle Hailey


#.21

Select from v$eventmetric


SQL> select
en.name name,
num_sess_waiting WAITERS,
time_waited,
wait_count
from
v$eventmetric em,
v$event_name en
where
wait_count > 0
and en.event# = em.event#
/

Copyright 2006 Kyle Hailey


#.22
v$eventmetric results

NAME WAITERS TIME_WAITED WAIT_COUNT


------------------------------ ------- ----------- ---------
pmon timer 1 5875 20
process startup 0 13 1
rdbms ipc message 7 41104 168
control file sequential read 0 0 10
control file parallel write 0 2 20
log file parallel write 0 0 1
SQL*Net message to client 0 0 47
SQL*Net more data to client 0 1 4
SQL*Net message from client 4 14721 47
SQL*Net more data from client 0 0 1
queue messages 2 12012 24
Queue Monitor Wait 1 3000 1
Queue Monitor Task Wait 0 0 1

Copyright 2006 Kyle Hailey


#.23

Historical Metrics
We solved what’s Happening now… but

 What if your problem happened 10 minutes


ago?
 How do we get History?
 What happened in the past?

More work, Time and calculations by YOU

Copyright 2006 Kyle Hailey


#.24

Historical Metrics

v$sysstat
physical reads

Low rate
Little IO
High rate
Lots of IO

Copyright 2006 Kyle Hailey


#.25

Metric History Tables


 Last 60 minutes of history, in memory

v$sysstat
physical reads delta
delta
delta

delta

delta

delta

delta

60 secs 60 secs 60 secs 60 secs 60 secs 60 secs 60 secs


Copyright 2006 Kyle Hailey
#.26

Metric History Tables


Last hour of statistics at your fingertips :
Statistics
 V$SYSMETRIC_HISTORY
 60 seconds for an hour
 3 minutes of 15 second

 File IO
 V$FILEMETRIC_HISTORY
 10 minutes for an hour

 Waits
 V$WAITCLASSMETRIC_HISTORY
 60 seconds for an hour

Copyright 2006 Kyle Hailey


#.27

v$sysmetric_history

3 minutes of 15 second deltas

60 minutes of 1 minute deltas

Not saved to disk but summary is

Copyright 2006 Kyle Hailey


#.28

What was IO 30 minutes ago?


Once again the answer is at your fingertips
Select
to_char(end_time,'DD-MON-YY HH24:MI'),
VALUE ,
METRIC_UNIT
from
v$sysmetric_history
where
METRIC_NAME = 'Physical Reads Per Sec' and
END_TIME < ( sysdate - (30/(24*60))) and
END_TIME > ( sysdate - (35/(24*60)))
TO_CHAR(END_TIM VALUE METRIC_UNIT
order by end_time;
--------------- ---------- ----------------
08-JAN-08 11:38 118.65 Reads Per Second
08-JAN-08 11:39 76.6166667 Reads Per Second
08-JAN-08 11:40 3.44770153 Reads Per Second
08-JAN-08 11:41 28.7 Reads Per Second
08-JAN-08 11:42 19.6166667 Reads Per Second
Copyright 2006 Kyle Hailey
#.29

V$FILEMETRIC_HISTORY
select
BEGIN_TIME,
FILE_ID,
PHYSICAL_READS
from
V$FILEMETRIC_HISTORY;
BEGIN_TI FILE_ID PHYSICAL_READS
Physical Reads
-------- ---------- --------------
04:12:16 1 208
04:12:16 2 600 Broken down by

04:02:18 1 600 file


04:02:18 2 189
03:52:15 1 1922
03:52:15 2 2082

Copyright 2006 Kyle Hailey


#.30

Metrics Family of Tables


Stats Waits Files SQL
Raw V$sysstat v$system_event v$fileio v$sqlstat
v$event_histogram
v$system_wait_class

Deltas V$sysmetric v$eventmetric v$filemetric v$kkssqlsta


V$SYSMETRIC v$waitclassmetric
V$SYSMETRIC_SUMMARY
V$SESSMETRIC

V$sysmetric_history v$waitclassmetric_history v$filemetric_history (v$kkssqlsta)


V$sysmetric_summary
1 Hour

7 days DBA_HIST_ DBA_HIST_SQLSTAT


SYSMETRIC_SUMMARY

Copyright 2006 Kyle Hailey


#.31
Session Statistics View
stats waits waitclasses sql

V$ V$sessstat V$session_event ---------------- -----------------


(some stats
possible
from ASH)
Metrics V$sessmetric ----------------- ----------------- -----------------

Metrics ----------------- ----------------- ----------------- -----------------


history

AWR WRH$_SESSMET ----------------- ---------------- -----------------


RIC_HISTORY * (some stats (some stats
(alert only) possible from possible
ASH) from ASH)

Copyright 2006 Kyle Hailey


#.32

Metric Alerts
If Alerts fire on Metrics, then the deltas are kept in
historical table for 7 days by default
Statistics
 DBA_HIST_SYSMETRIC_HISTORY
 DBA_HIST_SESSMETRIC_HISTORY

Waits
 WAITCLASSMETRIC_HISTORY

File IO
 DBA_HIST_FILEMETRIC_HISTORY

Copyright 2006 Kyle Hailey


#.33
Metrics Family of Tables
Stats Waits Files
Raw V$sysstat v$system_event v$fileio
v$event_histogram
v$system_wait_class

Now V$sysmetric v$eventmetric v$filemetric


V$SYSMETRIC v$waitclassmetric
V$SYSMETRIC_SUMMARY
V$SESSMETRIC

V$sysmetric_history v$waitclassmetric_history v$filemetric_history


V$sysmetric_summary
1 Hour

DBA_HIST_ DBA_HIST_ DBA_HIST_


7 days SYSMETRIC_HISTORY WAITCLASSMETRIC_HISTORY FILEMETRIC_HISTORY
Alerts DBA_HIST_
only SESSMETRIC_HISTORY

Copyright 2006 Kyle Hailey


#.34

AWR
Automatic Workload Repository
 Statspack on Steroids
 More efficient than Statspack
 More in memory
 Less latching

 Keeps stats every hour


 Stores by default the last 7 days

Copyright 2006 Kyle Hailey


#.35

Snapshoting
Done automatically out of the box, but can be run by hand:

BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
/

Copyright 2006 Kyle Hailey


DBA_HIST #.36

DBA_HIST_DATABASE_INSTANCE
DBA_HIST_SNAPSHOT
dbms_workload_repository.drop_snapshot_range
DBA_HIST_RESOURCE_LIMIT
DBA_HIST_SHARED_POOL_ADVICE
- DBA_HIST_SNAP_ERROR ?DBA_HIST_SQL_WORKAREA_HSTGRM
- DBA_HIST_BASELINE DBA_HIST_PGA_TARGET_ADVICE
- DBA_HIST_WR_CONTROL ? (work load repository ?) DBA_HIST_INSTANCE_RECOVERY
- DBA_HIST_DATAFILE DBA_HIST_JAVA_POOL_ADVICE
DBA_HIST_FILESTATXS – only file number, no name DBA_HIST_THREAD - logswitches
- DBA_HIST_TEMPFILE -DBA_HIST_STAT_NAME
DBA_HIST_TEMPSTATXS – onl;y file number DBA_HIST_SYSSTAT
+DBA_HIST_SQLSTAT group by parent cursor plus DELTAs was (stats$sql_summary) -DBA_HIST_SYS_TIME_MODEL
DBA_HIST_SQLTEXT -DBA_HIST_OSSTAT_NAME
+DBA_HIST_SQL_SUMMARY – identify litterals (was stat$sql_statistics) -DBA_HIST_OSSTAT
DBA_HIST_SQL_PLAN DBA_HIST_PARAMETER_NAME
-DBA_HIST_SQLBIND DBA_HIST_PARAMETER
-DBA_HIST_SQLBIND_META - WRH$_SQL_BIND_METADATA DBA_HIST_UNDOSTAT
-DBA_HIST_OPTIMIZER_ENV DBA_HIST_ROLLSTAT
-DBA_HIST_EVENT_NAME DBA_HIST_SEG_STAT
DBA_HIST_SYSTEM_EVENT DBA_HIST_SEG_STAT_OBJ – object name
DBA_HIST_BG_EVENT_SUMMARY – sum of backgrounds -DBA_HIST_METRIC_NAME
DBA_HIST_WAITSTAT -DBA_HIST_SYSMETRIC_HISTORY alert
DBA_HIST_ENQUEUE_STAT -DBA_HIST_SYSMETRIC_SUMMARY – max, min, avg standard
-DBA_HIST_LATCH_NAME deviation
DBA_HIST_LATCH -DBA_HIST_SESSMETRIC_HISTORY alert
DBA_HIST_LATCH_CHILDREN -DBA_HIST_FILEMETRIC_HISTORY alert
DBA_HIST_LATCH_PARENT -DBA_HIST_WAITCLASSMET_HISTORY alert
DBA_HIST_LATCH_MISSES_SUMMARY – summed over parent latch DBA_HIST_DLM_MISC
DBA_HIST_LIBRARYCACHE -DBA_HIST_RCVRY_FILE_DEST_STAT
DBA_HIST_DB_CACHE_ADVICE -DBA_HIST_RMAN_PERFORMANCE
DBA_HIST_BUFFER_POOL_STAT -DBA_HIST_ACTIVE_SESS_HISTORY – every 10th point from
DBA_HIST_ROWCACHE_SUMMARY – summed over rowcache entries v$active_session_history
DBA_HIST_SGA -DBA_HIST_TABLESPACE_STAT
DBA_HIST_SGASTAT -DBA_HIST_LOG
DBA_HIST_PGASTAT
New in 10g DBA_HIST_MTTR_TARGET_ADVICE
-DBA_HIST_TBSPC_SPACE_USAGE - ?

Copyright 2006 Kyle Hailey


#.37

Retention and Interval


Defaults:
 Hourly snapshots
 7 days saved
SELECT retention, snap_interval FROM wrm$_wr_control;
RETENTION SNAP_INTERVAL
----------------- ------------------
+00007 00:00:00.0 +00000 01:00:00.0
Minutes
exec dbms_workload_repository.modify_snapshot_settings(14*24*60,30);
RETENTION SNAP_INTERVAL
----------------- -----------------
+00014 00:00:00.0 +00000 00:30:00.0
Copyright 2006 Kyle Hailey
#.38

AWR RPT
@?/rdbms/admin/awrrpt.sql

 Creates Report File


 Similar to STATSPACK report
 More efficient and more data
 HTML or TEXT

Copyright 2006 Kyle Hailey


#.39
AWR Report
 Can also be run

SELECT * FROM TABLE(


dbms_workload_repository.awr_report_text(
(select dbid from v$database),
1,
124, -- begin id
125 -- end id
))

Copyright 2006 Kyle Hailey


#.40

AWR Report
2) General info 2) Advisories 2) Buffer Pool Stats
3) Load Profile 1) Buffer pool 3) Wait Stats
4) Wait Events 2) PGA 1) Buffer Busy
5) OS Stats 3) Shared Pool 2) Enqueues
6) Service Stats 4) SGA 4) Undo Stats
7) Top SQL by sql_id 5) Streams 5) Latch Stats
8) SQL Text 6) Java 6) Segment Stats
9) Instance Statistic 7) Dictionary Stats
10) I/O Stat 8) Library Cache
11) Buffer Pool Stats 9) Memory SGA/PGA
10) Streams
11) Init.ora
Copyright 2006 Kyle Hailey
#.41

Awr 1-13

Copyright 2006 Kyle Hailey


#.42

AWR 14-26

Copyright 2006 Kyle Hailey


#.43
AWR Diff
SELECT * FROM TABLE(
dbms_workload_repository.awr_diff_report_text(
(select dbid from v$database),
1,
120,
121,
(select dbid from v$database),
1,
122,
123)
);
Also : AWR_DIFF_REPORT_HTML

Copyright 2006 Kyle Hailey


#.44

AWR Diff Report in OEM

NOTE: Package
AWR_DIFF_REPORT_HTML
Is different from OEM
Its just a tabular output

Copyright 2006 Kyle Hailey


#.45

Also, ADDM report by Hand


select dbms_advisor.get_task_report(task_name)
from dba_advisor_tasks
where task_id = (
select max(t.task_id)
from dba_advisor_tasks t,
dba_advisor_log l
where t.task_id = l.task_id and
t.advisor_name = 'ADDM' and
l.status = 'COMPLETED');

Set long 100000


.
Maximum is is 2,000,000,000 bytes
Copyright 2006 Kyle Hailey
#.46

Important AWR Tables


 DBA_HIST_SQLSTAT
 SQL deltas
 DBA_HIST_SEG_STAT
 Segment deltas
 DBA_HIST_SYSMETRIC_SUMMARY
 Stats, max, min, avg
 DBA_HIST_ACTIVE_SESS_HISTORY
 ASH
 DBA_HIST_SYSTEM_EVENT
 Waits
dba_hist_sqltext – get sql text from AWR
Copyright 2006 Kyle Hailey
#.47
DBA_HIST_SNAPSHOT
SQL> desc DBA_HIST_SNAPSHOT
Name Type
------------------- -----------------------
SNAP_ID NUMBER
DBID NUMBER
INSTANCE_NUMBER NUMBER
STARTUP_TIME TIMESTAMP(3)
BEGIN_INTERVAL_TIME TIMESTAMP(3)
END_INTERVAL_TIME TIMESTAMP(3)
FLUSH_ELAPSED INTERVAL DAY(5) TO SECOND(1)
SNAP_LEVEL NUMBER
ERROR_COUNT NUMBER

Copyright 2006 Kyle Hailey


#.48
DBA_HIST_SQLSTAT
SNAP_ID FETCHES_DELTA
DBID END_OF_FETCH_COUNT_DELTA
INSTANCE_NUMBER SORTS_DELTA
SQL_ID EXECUTIONS_DELTA
PLAN_HASH_VALUE PX_SERVERS_EXECS_DELTA
OPTIMIZER_COST LOADS_DELTA
INVALIDATIONS_DELTA
OPTIMIZER_MODE
PARSE_CALLS_DELTA
OPTIMIZER_ENV_HASH_VALUE
DISK_READS_DELTA
SHARABLE_MEM BUFFER_GETS_DELTA
LOADED_VERSIONS ROWS_PROCESSED_DELTA
VERSION_COUNT CPU_TIME_DELTA
MODULE ELAPSED_TIME_DELTA
ACTION IOWAIT_DELTA
SQL_PROFILE CLWAIT_DELTA
FORCE_MATCHING_SIGNATURE APWAIT_DELTA
PARSING_SCHEMA_ID CCWAIT_DELTA
DIRECT_WRITES_DELTA
PARSING_SCHEMA_NAME
PLSEXEC_TIME_DELTA
BIND_DATA
JAVEXEC_TIME_DELTA
Copyright 2006 Kyle Hailey
#.49
DBA_HIST_SEG_STAT
SQL> desc DBA_HIST_SEG_STAT PHYSICAL_WRITES_TOTAL
PHYSICAL_WRITES_DELTA
Name
PHYSICAL_READS_DIRECT_TOTAL
-------------------------------
PHYSICAL_READS_DIRECT_DELTA
SNAP_ID
PHYSICAL_WRITES_DIRECT_TOTAL
DBID
PHYSICAL_WRITES_DIRECT_DELTA
INSTANCE_NUMBER
ITL_WAITS_TOTAL
TS#
ITL_WAITS_DELTA
OBJ#
ROW_LOCK_WAITS_TOTAL
DATAOBJ#
ROW_LOCK_WAITS_DELTA
LOGICAL_READS_TOTAL
SPACE_USED_TOTAL
LOGICAL_READS_DELTA
SPACE_USED_DELTA
BUFFER_BUSY_WAITS_TOTAL
SPACE_ALLOCATED_TOTAL
BUFFER_BUSY_WAITS_DELTA
SPACE_ALLOCATED_DELTA
DB_BLOCK_CHANGES_TOTAL
TABLE_SCANS_TOTAL
DB_BLOCK_CHANGES_DELTA
TABLE_SCANS_DELTA
PHYSICAL_READS_TOTAL
Copyright 2006 Kyle Hailey
PHYSICAL_READS_DELTA
#.50
ITL Waits
select begin_interval_time,
o.name, itl_waits_delta itl
from DBA_HIST_SEG_STAT ss,
DBA_HIST_SNAPSHOT sn,
obj$ o
where o.obj# = ss.obj#
and itl_waits_delta > 10
and sn.snap_id=ss.snap_id;
BEGIN NAME ITL
--------------- ---------- -----
06-JAN-08 10:00 ITL 24
06-JAN-08 01:00 ITL 40
06-JAN-08 19:00 T1_I1 2071
Copyright 2006 Kyle Hailey
#.51

DBA_HIST_SYSTEM_EVENT
SQL> desc DBA_HIST_SYSTEM_EVENT
Name Type
----------------------------------
SNAP_ID NUMBER
DBID NUMBER
INSTANCE_NUMBER NUMBER
EVENT_ID NUMBER
EVENT_NAME VARCHAR2(64)
WAIT_CLASS_ID NUMBER
WAIT_CLASS VARCHAR2(64)
TOTAL_WAITS NUMBER
TOTAL_TIMEOUTS NUMBER
TIME_WAITED_MICRO NUMBER

Cumulative Values – can use LAG function

Copyright 2006 Kyle Hailey


#.52

Average Wait Times


select
btime,
(time_ms_end-time_ms_beg)/nullif(count_end-count_beg,0) avg_ms
from (
select
to_char(s.BEGIN_INTERVAL_TIME,'DD-MON-YY HH24:MI') btime,
total_waits count_end,
time_waited_micro/1000 time_ms_end,
Lag (e.time_waited_micro/1000)
(
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) time_ms_beg,
Lag (e.total_waits)
(
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) count_beg
from
DBA_HIST_SYSTEM_EVENT e, BTIME AVG_MS
DBA_HIST_SNAPSHOT s -------------------- ------------
where 08-JAN-08 01:00 1.017
s.snap_id=e.snap_id 08-JAN-08 02:00 .720
and e.event_name= '&1'
08-JAN-08 03:00 .621
order by begin_interval_time
) 08-JAN-08 04:00 1.747
order by btime; 08-JAN-08 05:00 1.046
08-JAN-08 06:00 1.444
Copyright 2006 Kyle Hailey
#.53

ASH RPT
 @?/rdbms/admin/ashrpt
 Detailed report on top SQL, Sessions, Objects etc
 Run over SQL*Net with
select output
from table(dbms_workload_repository.ash_report_text(
(select dbid from v$database),
1,
sysdate – 2/24,
sysdate – 1/24,
0)) ;

 Also ASH_REPORT_HTML

Copyright 2006 Kyle Hailey


#.54

ASH RPT

1) General info 9) Top SQL using literals


2) Top User Events *** 10) Top Sessions ***
3) Top Background Events 11) Top Blocking Sessions
4) Top Event P1/P2/P3 Values 12) Top Sessions running PQs
5) Top Service/Module 13) Top DB Objects
6) Top Client IDs 14) Top DB Files
7) Top SQL Command Types 15) Top Latches
8) Top SQL Statements *** 16) Activity Over Time ***

Copyright 2006 Kyle Hailey


#.55

ASH RPT HTML

Copyright 2006 Kyle Hailey


#.56

Time Model
New concept
• DB Time

Total time for all database calls


• cpu time
• wait time

Copyright 2006 Kyle Hailey


#.57

Time Model
Time Model

SQL
Wait

Metrics

Stats
Sessions

Copyright 2006 Kyle Hailey


#.58

Time Model areas


 Total Time
 CPU
 Elapsed Time
 SQL execution
 Plsql execution (sql execute subtracted out)
 Java execution
 Connection time
 Probablythe most important as it points out
problems with too many logons/sec

Copyright 2006 Kyle Hailey


#.59
Time Model Components
1) background elapsed time
2) background cpu time

1) DB time
2) DB CPU
2) connection management call elapsed time
2) sequence load elapsed time
2) sql execute elapsed time
2) parse time elapsed
3) hard parse elapsed time
4) hard parse (sharing criteria) elapsed time
5) hard parse (bind mismatch) elapsed time
3) failed parse elapsed time
4) failed parse (out of shared memory) elapsed time
2) PL/SQL execution elapsed time
2) inbound PL/SQL rpc elapsed time
2) PL/SQL compilation elapsed time
2) Java execution elapsed time

Copyright 2006 Kyle Hailey


#.60

Total Time

Total Database
Time

Copyright 2006 Kyle Hailey


#.61

Total and CPU


=~ DB Wait
Time

DB CPU
Time

Copyright 2006 Kyle Hailey


#.62

Total and CPU and


Parse Time

DB CPU
DB Wait Time
Time
Parse
Elapsed
Time

Copyright 2006 Kyle Hailey


#.63

Parse Time

Parse
Elapsed
Time

Copyright 2006 Kyle Hailey


#.64

Hard Parse

hard
parse
elapse
d time
Parse
time
elapsed

Copyright 2006 Kyle Hailey


#.65

Hard Parse Sharing Criteria

hard
parse
(sharing
criteria)
hard elapsed
Parse parse time
time elapse
d time
elapsed

Copyright 2006 Kyle Hailey


#.66

Hard Parse Bind Mismatch

hard
parse
(bind
mismat
hard ch)
parse elapsed
hard (sharing time
parse criteria)
Parse elapse elapsed
time d time time
elapsed

Copyright 2006 Kyle Hailey


#.67

Time Model Tables


Current cumulative values
 V$SYS_TIME_MODEL
 V$SESS_TIME_MODEL

AWR Snapshots of cumulative values


 DBA_HIST_SYS_TIME_MODEL

Tables show cumulative values. To find deltas, then


need to run AWR report

Copyright 2006 Kyle Hailey


#.68

Wait Classes
 Administrative (39)  Configuration (20)
 switch logfile  log file size
 rebuild index  Enqueues: ST, HW, ITL
 Latch: redo copy,shared pool
 Application (11)  Idle (56)
 enqueues
sqlnet break/reset
 Network (25)

 Cluster (113)
 Commit (1)  System I/O (19)
 Log file Sync  Scheduler (6)
 Concurrency (12)  User I/O (12)
 Latches: cbc, lbc,


Lib cache locks
Buffer busy wait  Other (485)

Copyright 2006 Kyle Hailey


#.69

Wait Class Tables


v$system_wait_class
 cumulative

v$waitclassmetric
 Current rates
v$waitclassmetric_history
 Hour of rates (60 second intervals)

Copyright 2006 Kyle Hailey


Waits Metrics #.70

Cumulative Current deltas Last Hour Last 7 days


Wait
v$system_wait_class
Classes v$waitclassmetric v$waitclassmetric_history dba_hist_
WAIT_CLASS_ID
BEGIN_TIME BEGIN_TIME waitclassmetric_history
WAIT_CLASS# END_TIME
END_TIME
WAIT_CLASS
INTSIZE_CSEC INTSIZE_CSEC Only gets populated with alerts
TOTAL_WAITS WAIT_CLASS_ID
WAIT_CLASS_ID
TIME_WAITED WAIT_CLASS#
WAIT_CLASS#
NUM_SESS_WAITING NUM_SESS_WAITING
v$event_name TIME_WAITED TIME_WAITED
EVENT# WAIT_COUNT WAIT_COUNT
EVENT_ID
NAME
PARAMETER1
PARAMETER2
PARAMETER3
WAIT_CLASS_ID
WAIT_CLASS#
WAIT_CLASS

Wait Events
v$system_event v$eventmetric dba_hist_system_event
BEGIN_TIME
EVENT END_TIME
INTSIZE_CSEC
(Cumulative)
TOTAL_WAITS
TOTAL_TIMEOUTS EVENT_ID No in memory history
NUM_SESS_WAITING
TIME_WAITED
TIME_WAITED
AVERAGE_WAIT WAIT_COUNT
TIME_WAITED_MICRO
EVENT_ID

Copyright 2006 Kyle Hailey


#.71

Miscellaneous
 V$sqlstats
 Field naming conventions
 Wait Improvements
 Wait histograms
 Waits in v$session and v$sql
 Waits broken out for latches and locks
 Waits show the blocker
 Wait history of last 10 waits

 Services
 Client Id
Copyright 2006 Kyle Hailey
#.72

v$sqlstats
 More efficient than v$sql or v$sqlarea
 Skips many of the latch gets that v$sql does

Copyright 2006 Kyle Hailey


#.73

Event and Stat Fields Names


 Names
 Event
 Statistic
 Waitclass

 Ids
 Event#
 Statistic#
 Waitclass#

 Name Hash
 Event_id
 Statistic_id
 Waitclass_id

Copyright 2006 Kyle Hailey


#.74

Wait Histograms
V$event_histogram
 1ms to 1 hour buckets
 23 buckets
 < 1 ms, < 2 ms, < 4 ms, < 8 ms, ..., < 2^22
ms

Copyright 2006 Kyle Hailey


#.75

Waits in v$session
 V$session exposes all the fields from
v$session_wait
SEQ# NUMBER
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
STATE VARCHAR2(19)

Copyright 2006 Kyle Hailey


#.76
Waits in V$SQL
 SQL_FULLTEXT
 SQL_ID
 FETCHES
 END_OF_FETCH_COUNT
 DIRECT_WRITES
 CONCURRENCY_WAIT_TIME
 APPLICATION_WAIT_TIME
 CLUSTER_WAIT_TIME
 USER_IO_WAIT_TIME
 PLSQL_EXEC_TIME
 JAVA_EXEC_TIME
 CPU_TIME
 ELAPSED_TIME

Copyright 2006 Kyle Hailey


#.77

Wait Types Broken Out


 800 waits
 Latches broken out
 Ex) Latch: library cache latch
 Enqueues broken out
 Ex) Enq: HW - contention

Copyright 2006 Kyle Hailey


#.78

Waits show Blocking Session

V$session. BLOCKING_SESSION ->


can build a wait tree:

Copyright 2006 Kyle Hailey


#.79

Services
 Services is a new way to measure
resource usage and statistics. A session
is associated with a services when the
session connects to the database via
the listener.
 DBMS_SERVICE.CREATE_SERVICE

Copyright 2006 Kyle Hailey


#.80

Setting up Services
dbms_service.CREATE_SERVICE('ora10a',‘A');
dbms_service.START_SERVICE ('ora10a');
-- dbms_service.STOP_SERVICE ('ora10a');
-- dbms_service.DELETE_SERVICE('ora10a');
ORA10a =
(DESCRIPTION = tnsnames.ora
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)
(HOST = kylehpd)(PORT = 1521)) ) Sqlplus un/pw@ora10a
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = A)
) )
lsnrctl services
Service "A" has 1 instance(s).
Instance "v10g", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
Copyright 2006 Kyle Hailey
#.81
Services in OEM

Enable Trace
By Service

View doesn’t work


Copyright 2006 Kyle Hailey
#.82
Client Id
 Setting Client ID
dbms_session.set_identifier(client_id)

 Enabling trace for a client ID


dbms_monitor.client_id_trace_enable
(client_id, TRUE, FALSE)

 Enabling statistics aggregation by client id


dbms_monitor.client_id_stat_enable(client_id)

 Script to Extract Client Trace


trcsess
Copyright 2006 Kyle Hailey
#.83
Session Dedicated
Scott John Sue Mike Randy Tim Mary

Oracle
S1 S2 S3 S4 S4 S5 S6
Sessions
Oracle Database Host

Copyright 2006 Kyle Hailey


#.84
Session Dedicated trace
Scott John Sue Mike Randy Tim Mary

SQL_TRACE=TRUE

Oracle
S1 S2 S3 S4 S4 S5 S6
Sessions
Oracle Database Host

Copyright 2006 Kyle Hailey


#.85
Session Pooling trace
Scott John Sue Mike Randy Tim Mary

APP
Server
1
S1, sql_trace=true

Oracle
S1 S2 S3 S4 S4 S5 S6 S7
Sessions
Oracle Database Host

Copyright 2006 Kyle Hailey


Session Pooling #.86

Scott John Sue Mike Randy Tim Mary

Set client_id =
SCOTT
dbms_monitor.client_id_trace_enable
APP (client_id, TRUE, FALSE);
Server waits, binds
1

Oracle
S1 S2 S3 S4 S4 S5 S6 S7
Sessions
Oracle Database Host

Copyright 2006 Kyle Hailey


#.87

DB_FILE_MULTI_BLOCK_READ_COUNT

 Auto tuned in 10gR2


 Recommended to leave unset in init.ora
 db_file_multiblock_read_count 55
 _db_file_exec_read_count 55
 _db_file_optimizer_read_count 8

Copyright 2006 Kyle Hailey


#.88

UNDO Retention Auto Tuned


 Oracle10G records the times of the longest-running
queries and the amount of undo generated to
automatically tune the UNDO_RETENTION
parameter.
 IF Autoextend on then undo retention set slightly
longer than the longest running query
 If autoextend off then depends on free space
available
 Bug 5387030 – undo retention higher than set

Copyright 2006 Kyle Hailey

Вам также может понравиться