04 newfeatures

88
#.1 Copyright 2006 Kyle Hailey 10g New Performance Features 1. Metrics 2. AWR ( DBA_HIST_ ) 3. Time Model 4. Wait Classes 5. Misc 1. V$sqlstats 2. Wait improvements 3. Client_id 4. Services

Transcript of 04 newfeatures

Page 1: 04 newfeatures

#.1

Copyright 2006 Kyle Hailey

10g New Performance Features

1. Metrics

2. AWR ( DBA_HIST_ )

3. Time Model

4. Wait Classes

5. Misc1. V$sqlstats

2. Wait improvements

3. Client_id

4. Services

Page 2: 04 newfeatures

#.2

Copyright 2006 Kyle Hailey

9i

v$sysstat

Waits

v$system_eventv$sql

v$session

V$session_wait

V$session_event

V$system_event

V$sesstat

V$sql –includes stats

Page 3: 04 newfeatures

#.3

Copyright 2006 Kyle Hailey

10g

Stats

Waits SQL

Sessions

V$sql

V$session

Includes some waits now

Page 4: 04 newfeatures

#.4

Copyright 2006 Kyle Hailey

Metrics

Metrics – rates and calculations

Stats

Waits SQL

Sessions V$sessmetric

V$sysmetric

DBA_HIST_SQLSTAT

V$eventmetric

V$waitclassmetric

Page 5: 04 newfeatures

#.5

Copyright 2006 Kyle Hailey

Metrics

What inspired Metrics?Old statistics were cumulativeOld statistics lacked history

What is the IO on the system right now?

… a new 10g feature to make our lives easier

Page 6: 04 newfeatures

#.6

Copyright 2006 Kyle Hailey

First Tedious Step

Not much help …Why? Let see …

Select value from v$sysstat

where name=‘physical reads’;

VALUE

---------------

1,533,787

Page 7: 04 newfeatures

#.7

Copyright 2006 Kyle Hailey

This tells you … Nothing

1,533,787

IO’s

time

30 minutes

30 minutes

time

GOOD BAD

Page 8: 04 newfeatures

#.8

Copyright 2006 Kyle Hailey

YOU Need to do MATH to find Out

Take value at time A Take value at time BDelta = (B-A)

orRate = (B-A)/elapsed time

Page 9: 04 newfeatures

#.9

Copyright 2006 Kyle Hailey

Methods

Oracle 6 Utlbstat.sql/Utlestat.sqlCreates 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)

Page 10: 04 newfeatures

#.10

Copyright 2006 Kyle Hailey

Performance Metric Deltas

Kinds of Metric Tables

1. Metric – current deltas

2. Metric History – deltas over last hour

V$EVENTMETRIC

V$FILEMETRIC

V$SESSMETRIC

V$SERVICEMETRIC

V$SYSMETRIC

V$SYSMETRIC_SUMMARY

V$WAITCLASSMETRIC

V$FILEMETRIC_HISTORY

V$SYSMETRIC_HISTORY

V$SERVICEMETRIC_HISTORY

V$WAITCLASSMETRIC_HISTORY

Current DeltasCurrent Deltas Values over last hourValues over last hour

Page 11: 04 newfeatures

#.11

Copyright 2006 Kyle Hailey

Metrics

Collected at Pre-Set intervals15 second60 second10 minutes30 minutes

dependability at your fingertips

Current Value for DeltasRates

per second per transaction

Ratios Percentages

Page 12: 04 newfeatures

#.12

Copyright 2006 Kyle Hailey

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

Page 13: 04 newfeatures

#.13

Copyright 2006 Kyle Hailey

Answer at your fingertips

3 IO/sec

IO’s

time

30 minutes

30 minutes

time

GOOD BAD

513 IO/sec

1,533,787X

Page 14: 04 newfeatures

#.14

Copyright 2006 Kyle Hailey

Now What’s the IO?

VALUE METRIC_UNIT INTSIZE_CSECVALUE METRIC_UNIT INTSIZE_CSEC

---------- ----------------- ---------------------- ----------------- ------------

654.6736 Reads Per Second 5959654.6736 Reads Per Second 5959 134.9835 Reads Per Second 1515134.9835 Reads Per Second 1515

Select VALUE , METRIC_UNIT

from v$sysmetric

where metric_name='Physical Reads Per Sec‘;

Avg IO per sec for the last 15 and 60 secsAvg IO per sec for the last 15 and 60 secs

Page 15: 04 newfeatures

#.15

Copyright 2006 Kyle Hailey

v$sysmetricdesc 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

Page 16: 04 newfeatures

#.16

Copyright 2006 Kyle Hailey

v$sysmetric 15 Secs

Buffer Cache Hit Ratio

Memory Sorts Ratio

Execute Without Parse Ratio

Soft Parse Ratio

Database CPU Time Ratio

Library Cache Hit Ratio

Shared Pool Free %

Txns Per Logon

Physical Reads

Physical Writes

Physical Reads Direct

Redo Generated

Logons

User Calls

Logical Reads

Redo Writes

Total Table Scans

Full Index Scans

DB Block Gets

Consistent Read Gets

DB Block Changes

Consistent Read Changes

ExecutionsUser Transaction Per Sec

Per Sec and Per Transaction

Per Sec

Page 17: 04 newfeatures

#.17

Copyright 2006 Kyle Hailey

v$sysmetric 60 Sec Buffer Cache Hit Ratio

Memory Sorts Ratio

Redo Allocation Hit Ratio

User Commits Percentage

User Rollbacks Percentage

Cursor Cache Hit Ratio

Rows Per Sort

Execute Without Parse Ratio

Soft Parse Ratio

User Calls Ratio

Global Cache Average CR Get Time

Global Cache Average Current Get Time

Global Cache Blocks Corrupted

Global Cache Blocks Lost

Current Logons Count

Current Open Cursors Count

User Limit %

SQL Service Response Time

Database Wait Time Ratio

Database CPU Time Ratio

Row Cache Hit Ratio

Row Cache Miss Ratio

Library Cache Hit Ratio

Library Cache Miss Ratio

Shared Pool Free %

PGA Cache Hit %

Process Limit %

Session Limit %

Txns Per Logon

Page 18: 04 newfeatures

#.18

Copyright 2006 Kyle Hailey

v$sysmetric 60 Sec Physical Reads

Physical Writes

Physical Reads Direct

Physical Writes Direct

Physical Reads Direct Lobs

Physical Writes Direct Lobs

Redo Generated

Logons

Open Cursors

User Calls

Recursive Calls

Logical Reads

Redo Writes

Long Table Scans

Total Table Scans

Full Index Scans

Total Index Scans

Total Parse Count

Hard Parse Count

Parse Failure Count

User Commits

User Rollbacks

User Transaction

DBWR Checkpoints

Background Checkpoints

Network Traffic Volume

Response Time

Disk Sort

Enqueue Timeouts

Enqueue Waits

Enqueue Deadlocks

Enqueue Requests

DB Block Gets

Consistent Read Gets

DB Block Changes

Consistent Read Changes

CPU Usage

CR Blocks Created

CR Undo Records Applied

User Rollback Undo Records Applied

Leaf Node Splits

Branch Node Splits

PX downgraded 1 to 25%

PX downgraded 25 to 50%

PX downgraded 50 to 75%

PX downgraded 75 to 99%

.

Per Second and Transaction

Per Sec

Per Transaction

Page 19: 04 newfeatures

#.19

Copyright 2006 Kyle Hailey

v$sessmetricdesc v$sessmetric

BEGIN_TIME

END_TIME

INTSIZE_CSEC

SESSION_ID

SESSION_SERIAL_NUM

CPU

PHYSICAL_READS

PGA_MEMORY

HARD_PARSES

SOFT_PARSES

PHYSICAL_READ_PCT

LOGICAL_READ_PCT

• Only 15 second Delta

Page 20: 04 newfeatures

#.20

Copyright 2006 Kyle Hailey

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

Page 21: 04 newfeatures

#.21

Copyright 2006 Kyle Hailey

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# /

Page 22: 04 newfeatures

#.22

Copyright 2006 Kyle Hailey

v$eventmetric results

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

Page 23: 04 newfeatures

#.23

Copyright 2006 Kyle Hailey

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

Page 24: 04 newfeatures

#.24

Copyright 2006 Kyle Hailey

Historical Metrics

High rate

Lots of IO

Low rate

Little IO

v$sysstat

physical reads

Page 25: 04 newfeatures

#.25

Copyright 2006 Kyle Hailey

Metric History Tables Last 60 minutes of history, in memory

v$sysstat

physical reads

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

delta

delta

delta

delta

deltadeltadelta

Page 26: 04 newfeatures

#.26

Copyright 2006 Kyle Hailey

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

Page 27: 04 newfeatures

#.27

Copyright 2006 Kyle Hailey

v$sysmetric_history

Not saved to disk but summary is

60 minutes of 1 minute deltas

3 minutes of 15 second deltas

Page 28: 04 newfeatures

#.28

Copyright 2006 Kyle Hailey

What was IO 30 minutes ago?

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)))

order by end_time;

Once again the answer is at your fingertips

TO_CHAR(END_TIM VALUE METRIC_UNITTO_CHAR(END_TIM VALUE METRIC_UNIT

--------------- ---------- ------------------------------- ---------- ----------------

08-JAN-08 11:38 118.65 Reads Per Second08-JAN-08 11:38 118.65 Reads Per Second08-JAN-08 11:39 76.6166667 Reads Per Second08-JAN-08 11:39 76.6166667 Reads Per Second08-JAN-08 11:40 3.44770153 Reads Per Second08-JAN-08 11:40 3.44770153 Reads Per Second08-JAN-08 11:41 28.7 Reads Per Second08-JAN-08 11:41 28.7 Reads Per Second08-JAN-08 11:42 19.6166667 Reads Per Second08-JAN-08 11:42 19.6166667 Reads Per Second

Page 29: 04 newfeatures

#.29

Copyright 2006 Kyle Hailey

V$FILEMETRIC_HISTORYselect

BEGIN_TIME,FILE_ID, PHYSICAL_READS

from V$FILEMETRIC_HISTORY;

BEGIN_TI FILE_ID PHYSICAL_READS

-------- ---------- --------------

04:12:16 1 20804:12:16 2 600

04:02:18 1 60004:02:18 2 189

03:52:15 1 192203:52:15 2 2082…

Physical Reads Physical Reads

Broken down byBroken down by

filefile

Page 30: 04 newfeatures

#.30

Copyright 2006 Kyle Hailey

Metrics Family of Tables

Stats Waits Files SQL

Raw V$sysstat v$system_event

v$event_histogram

v$system_wait_class

v$fileio v$sqlstat

Deltas V$sysmetric

V$SYSMETRIC

V$SYSMETRIC_SUMMARY

V$SESSMETRIC

v$eventmetric

v$waitclassmetric

v$filemetric v$kkssqlsta

1 Hour

V$sysmetric_history V$sysmetric_summary

v$waitclassmetric_history v$filemetric_history (v$kkssqlsta)

7 days DBA_HIST_

SYSMETRIC_SUMMARY

DBA_HIST_SQLSTAT

Page 31: 04 newfeatures

#.31

Copyright 2006 Kyle Hailey

Session Statistics Viewstats waits waitclasses sql

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

(some stats possible from ASH)

Metrics V$sessmetric ----------------- ----------------- -----------------

Metrics

history

----------------- ----------------- ----------------- -----------------

AWR WRH$_SESSMETRIC_HISTORY *(alert only)

-----------------

(some stats possible from ASH)

---------------- -----------------

(some stats possible from ASH)

Page 32: 04 newfeatures

#.32

Copyright 2006 Kyle Hailey

Metric AlertsIf 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

Page 33: 04 newfeatures

#.33

Copyright 2006 Kyle Hailey

Metrics Family of TablesStats Waits Files

Raw V$sysstat v$system_event

v$event_histogram

v$system_wait_class

v$fileio

Now V$sysmetric

V$SYSMETRIC

V$SYSMETRIC_SUMMARY

V$SESSMETRIC

v$eventmetric

v$waitclassmetric

v$filemetric

1 Hour

V$sysmetric_history V$sysmetric_summary

v$waitclassmetric_history v$filemetric_history

7 days

Alerts

only

DBA_HIST_

SYSMETRIC_HISTORY DBA_HIST_

SESSMETRIC_HISTORY

DBA_HIST_

WAITCLASSMETRIC_HISTORY

DBA_HIST_

FILEMETRIC_HISTORY

Page 34: 04 newfeatures

#.34

Copyright 2006 Kyle Hailey

AWRAutomatic Workload Repository Statspack on Steroids More efficient than Statspack

More in memoryLess latching

Keeps stats every hour Stores by default the last 7 days

Page 35: 04 newfeatures

#.35

Copyright 2006 Kyle Hailey

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

BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();END;

/

Page 36: 04 newfeatures

#.36

Copyright 2006 Kyle Hailey

DBA_HISTDBA_HIST_DATABASE_INSTANCEDBA_HIST_SNAPSHOT- DBA_HIST_SNAP_ERROR- DBA_HIST_BASELINE- DBA_HIST_WR_CONTROL ? (work load repository ?)- DBA_HIST_DATAFILEDBA_HIST_FILESTATXS – only file number, no name- DBA_HIST_TEMPFILEDBA_HIST_TEMPSTATXS – onl;y file number+DBA_HIST_SQLSTAT group by parent cursor plus DELTAs was (stats$sql_summary)DBA_HIST_SQLTEXT+DBA_HIST_SQL_SUMMARY – identify litterals (was stat$sql_statistics)DBA_HIST_SQL_PLAN-DBA_HIST_SQLBIND-DBA_HIST_SQLBIND_META - WRH$_SQL_BIND_METADATA-DBA_HIST_OPTIMIZER_ENV-DBA_HIST_EVENT_NAMEDBA_HIST_SYSTEM_EVENTDBA_HIST_BG_EVENT_SUMMARY – sum of backgroundsDBA_HIST_WAITSTATDBA_HIST_ENQUEUE_STAT-DBA_HIST_LATCH_NAMEDBA_HIST_LATCHDBA_HIST_LATCH_CHILDRENDBA_HIST_LATCH_PARENTDBA_HIST_LATCH_MISSES_SUMMARY – summed over parent latchDBA_HIST_LIBRARYCACHEDBA_HIST_DB_CACHE_ADVICEDBA_HIST_BUFFER_POOL_STATDBA_HIST_ROWCACHE_SUMMARY – summed over rowcache entriesDBA_HIST_SGADBA_HIST_SGASTATDBA_HIST_PGASTAT

DBA_HIST_RESOURCE_LIMITDBA_HIST_SHARED_POOL_ADVICE?DBA_HIST_SQL_WORKAREA_HSTGRMDBA_HIST_PGA_TARGET_ADVICEDBA_HIST_INSTANCE_RECOVERYDBA_HIST_JAVA_POOL_ADVICEDBA_HIST_THREAD - logswitches-DBA_HIST_STAT_NAMEDBA_HIST_SYSSTAT-DBA_HIST_SYS_TIME_MODEL-DBA_HIST_OSSTAT_NAME-DBA_HIST_OSSTATDBA_HIST_PARAMETER_NAMEDBA_HIST_PARAMETERDBA_HIST_UNDOSTATDBA_HIST_ROLLSTATDBA_HIST_SEG_STATDBA_HIST_SEG_STAT_OBJ – object name-DBA_HIST_METRIC_NAME-DBA_HIST_SYSMETRIC_HISTORY alert-DBA_HIST_SYSMETRIC_SUMMARY – max, min, avg standard deviation-DBA_HIST_SESSMETRIC_HISTORY alert-DBA_HIST_FILEMETRIC_HISTORY alert-DBA_HIST_WAITCLASSMET_HISTORY alertDBA_HIST_DLM_MISC-DBA_HIST_RCVRY_FILE_DEST_STAT-DBA_HIST_RMAN_PERFORMANCE-DBA_HIST_ACTIVE_SESS_HISTORY – every 10th point from v$active_session_history-DBA_HIST_TABLESPACE_STAT-DBA_HIST_LOGDBA_HIST_MTTR_TARGET_ADVICE-DBA_HIST_TBSPC_SPACE_USAGE - ?New in 10g

dbms_workload_repository.drop_snapshot_rangedbms_workload_repository.drop_snapshot_range

Page 37: 04 newfeatures

#.37

Copyright 2006 Kyle Hailey

Retention and IntervalDefaults: Hourly snapshots 7 days saved

SELECT retention, snap_interval FROM wrm$_wr_control;SELECT retention, snap_interval FROM wrm$_wr_control;

RETENTION SNAP_INTERVALRETENTION SNAP_INTERVAL

----------------- ----------------------------------- ------------------

+00007 00:00:00.0 +00000 01:00:00.0+00007 00:00:00.0 +00000 01:00:00.0

exec dbms_workload_repository.modify_snapshot_settings(14*24*60,30);exec dbms_workload_repository.modify_snapshot_settings(14*24*60,30);

RETENTION SNAP_INTERVALRETENTION SNAP_INTERVAL

----------------- ---------------------------------- -----------------

+00014 00:00:00.0 +00000 00:30:00.0+00014 00:00:00.0 +00000 00:30:00.0

MinutesMinutes

Page 38: 04 newfeatures

#.38

Copyright 2006 Kyle Hailey

AWR RPT

Creates Report File Similar to STATSPACK report More efficient and more data HTML or TEXT

@?/rdbms/admin/awrrpt.sql

Page 39: 04 newfeatures

#.39

Copyright 2006 Kyle Hailey

AWR Report Can also be run

SELECT * FROM TABLE(SELECT * FROM TABLE(dbms_workload_repository.awr_report_text(dbms_workload_repository.awr_report_text(

(select dbid from v$database),(select dbid from v$database),1,1,124, -- begin id124, -- begin id

125 -- end id 125 -- end id ))))

Page 40: 04 newfeatures

#.40

Copyright 2006 Kyle Hailey

AWR Report

1) General info

2) Load Profile

3) Wait Events

4) OS Stats

5) Service Stats

6) Top SQL by sql_id

7) SQL Text

8) Instance Statistic

9) I/O Stat

10) Buffer Pool Stats

1) General info

2) Load Profile

3) Wait Events

4) OS Stats

5) Service Stats

6) Top SQL by sql_id

7) SQL Text

8) Instance Statistic

9) I/O Stat

10) Buffer Pool Stats

11) Advisories

1) Buffer pool

2) PGA

3) Shared Pool

4) SGA

5) Streams

6) Java

11) Advisories

1) Buffer pool

2) PGA

3) Shared Pool

4) SGA

5) Streams

6) Java

12) Buffer Pool Stats

13) Wait Stats

1) Buffer Busy

2) Enqueues

14) Undo Stats

15) Latch Stats

16) Segment Stats

17) Dictionary Stats

18) Library Cache

19) Memory SGA/PGA

20) Streams

21) Init.ora

12) Buffer Pool Stats

13) Wait Stats

1) Buffer Busy

2) Enqueues

14) Undo Stats

15) Latch Stats

16) Segment Stats

17) Dictionary Stats

18) Library Cache

19) Memory SGA/PGA

20) Streams

21) Init.ora

Page 41: 04 newfeatures

#.41

Copyright 2006 Kyle Hailey

Awr 1-13

Page 42: 04 newfeatures

#.42

Copyright 2006 Kyle Hailey

AWR 14-26

Page 43: 04 newfeatures

#.43

Copyright 2006 Kyle Hailey

AWR DiffSELECT * FROM TABLE(SELECT * FROM TABLE( dbms_workload_repository.awr_diff_report_text(dbms_workload_repository.awr_diff_report_text( (select dbid from v$database),(select dbid from v$database), 1,1, 120,120, 121,121, (select dbid from v$database),(select dbid from v$database), 1 ,1 , 122,122, 123)123)););

Also : AWR_DIFF_REPORT_HTML

Page 44: 04 newfeatures

#.44

Copyright 2006 Kyle Hailey

AWR Diff Report in OEM

NOTE: Package

AWR_DIFF_REPORT_HTML

Is different from OEM

Its just a tabular output

Page 45: 04 newfeatures

#.45

Copyright 2006 Kyle Hailey

Also, ADDM report by Hand

select dbms_advisor.get_task_report(task_name)select dbms_advisor.get_task_report(task_name)

from dba_advisor_tasksfrom dba_advisor_taskswhere task_id = (where task_id = (select max(t.task_id)select max(t.task_id)from dba_advisor_tasks t,from dba_advisor_tasks t, dba_advisor_log ldba_advisor_log lwhere t.task_id = l.task_id andwhere t.task_id = l.task_id and t.advisor_name = 'ADDM' andt.advisor_name = 'ADDM' and l.status = 'COMPLETED');l.status = 'COMPLETED');

Set long 100000Maximum is is 2,000,000,000 bytes.

Page 46: 04 newfeatures

#.46

Copyright 2006 Kyle Hailey

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 ASHASH

DBA_HIST_SYSTEM_EVENT DBA_HIST_SYSTEM_EVENT WaitsWaits

dba_hist_sqltext – get sql text from AWR dba_hist_sqltext – get sql text from AWR

Page 47: 04 newfeatures

#.47

Copyright 2006 Kyle Hailey

DBA_HIST_SNAPSHOTDBA_HIST_SNAPSHOT

SQL> desc SQL> desc DBA_HIST_SNAPSHOTDBA_HIST_SNAPSHOTName TypeName Type

------------------- ------------------------------------------ -----------------------

SNAP_ID NUMBERSNAP_ID NUMBER

DBID NUMBERDBID NUMBER

INSTANCE_NUMBER NUMBERINSTANCE_NUMBER NUMBER

STARTUP_TIME TIMESTAMP(3)STARTUP_TIME TIMESTAMP(3)

BEGIN_INTERVAL_TIME TIMESTAMP(3)BEGIN_INTERVAL_TIME TIMESTAMP(3)

END_INTERVAL_TIME TIMESTAMP(3)END_INTERVAL_TIME TIMESTAMP(3)

FLUSH_ELAPSED INTERVAL DAY(5) TO SECOND(1)FLUSH_ELAPSED INTERVAL DAY(5) TO SECOND(1)

SNAP_LEVEL NUMBERSNAP_LEVEL NUMBER

ERROR_COUNT NUMBERERROR_COUNT NUMBER

Page 48: 04 newfeatures

#.48

Copyright 2006 Kyle Hailey

DBA_HIST_SQLSTAT

SNAP_IDSNAP_ID

DBIDDBIDINSTANCE_NUMBERINSTANCE_NUMBERSQL_IDSQL_IDPLAN_HASH_VALUEPLAN_HASH_VALUEOPTIMIZER_COSTOPTIMIZER_COSTOPTIMIZER_MODEOPTIMIZER_MODEOPTIMIZER_ENV_HASH_VALUEOPTIMIZER_ENV_HASH_VALUESHARABLE_MEMSHARABLE_MEMLOADED_VERSIONSLOADED_VERSIONSVERSION_COUNTVERSION_COUNTMODULEMODULEACTIONACTIONSQL_PROFILESQL_PROFILEFORCE_MATCHING_SIGNATUREFORCE_MATCHING_SIGNATUREPARSING_SCHEMA_IDPARSING_SCHEMA_IDPARSING_SCHEMA_NAMEPARSING_SCHEMA_NAMEBIND_DATABIND_DATA

FETCHES_DELTAFETCHES_DELTAEND_OF_FETCH_COUNT_DELTAEND_OF_FETCH_COUNT_DELTASORTS_DELTASORTS_DELTAEXECUTIONS_DELTAEXECUTIONS_DELTAPX_SERVERS_EXECS_DELTAPX_SERVERS_EXECS_DELTALOADS_DELTALOADS_DELTAINVALIDATIONS_DELTAINVALIDATIONS_DELTAPARSE_CALLS_DELTAPARSE_CALLS_DELTADISK_READS_DELTADISK_READS_DELTABUFFER_GETS_DELTABUFFER_GETS_DELTAROWS_PROCESSED_DELTAROWS_PROCESSED_DELTACPU_TIME_DELTACPU_TIME_DELTAELAPSED_TIME_DELTAELAPSED_TIME_DELTAIOWAIT_DELTAIOWAIT_DELTACLWAIT_DELTACLWAIT_DELTAAPWAIT_DELTAAPWAIT_DELTACCWAIT_DELTACCWAIT_DELTADIRECT_WRITES_DELTADIRECT_WRITES_DELTAPLSEXEC_TIME_DELTAPLSEXEC_TIME_DELTAJAVEXEC_TIME_DELTAJAVEXEC_TIME_DELTA

Page 49: 04 newfeatures

#.49

Copyright 2006 Kyle Hailey

DBA_HIST_SEG_STATSQL> desc DBA_HIST_SEG_STAT SQL> desc DBA_HIST_SEG_STAT

Name Name

--------------------------------------------------------------

SNAP_ID SNAP_ID

DBID DBID

INSTANCE_NUMBER INSTANCE_NUMBER

TS# TS#

OBJ# OBJ#

DATAOBJ# DATAOBJ#

LOGICAL_READS_TOTAL LOGICAL_READS_TOTAL

LOGICAL_READS_DELTA LOGICAL_READS_DELTA

BUFFER_BUSY_WAITS_TOTAL BUFFER_BUSY_WAITS_TOTAL

BUFFER_BUSY_WAITS_DELTA BUFFER_BUSY_WAITS_DELTA

DB_BLOCK_CHANGES_TOTAL DB_BLOCK_CHANGES_TOTAL

DB_BLOCK_CHANGES_DELTA DB_BLOCK_CHANGES_DELTA

PHYSICAL_READS_TOTAL PHYSICAL_READS_TOTAL

PHYSICAL_READS_DELTA PHYSICAL_READS_DELTA

PHYSICAL_WRITES_TOTAL PHYSICAL_WRITES_TOTAL

PHYSICAL_WRITES_DELTA PHYSICAL_WRITES_DELTA

PHYSICAL_READS_DIRECT_TOTALPHYSICAL_READS_DIRECT_TOTAL

PHYSICAL_READS_DIRECT_DELTA PHYSICAL_READS_DIRECT_DELTA

PHYSICAL_WRITES_DIRECT_TOTALPHYSICAL_WRITES_DIRECT_TOTAL

PHYSICAL_WRITES_DIRECT_DELTA PHYSICAL_WRITES_DIRECT_DELTA

ITL_WAITS_TOTAL ITL_WAITS_TOTAL

ITL_WAITS_DELTA ITL_WAITS_DELTA

ROW_LOCK_WAITS_TOTAL ROW_LOCK_WAITS_TOTAL

ROW_LOCK_WAITS_DELTA ROW_LOCK_WAITS_DELTA

SPACE_USED_TOTAL SPACE_USED_TOTAL

SPACE_USED_DELTA SPACE_USED_DELTA

SPACE_ALLOCATED_TOTAL SPACE_ALLOCATED_TOTAL

SPACE_ALLOCATED_DELTA SPACE_ALLOCATED_DELTA

TABLE_SCANS_TOTAL TABLE_SCANS_TOTAL

TABLE_SCANS_DELTA TABLE_SCANS_DELTA

Page 50: 04 newfeatures

#.50

Copyright 2006 Kyle Hailey

ITL Waits select begin_interval_time,select begin_interval_time,

o.name, itl_waits_delta itlo.name, itl_waits_delta itl

from DBA_HIST_SEG_STAT ss,from DBA_HIST_SEG_STAT ss,

DBA_HIST_SNAPSHOT sn,DBA_HIST_SNAPSHOT sn,

obj$ oobj$ o

where o.obj# = ss.obj#where o.obj# = ss.obj#

and itl_waits_delta > 10and itl_waits_delta > 10

and sn.snap_id=ss.snap_id;and sn.snap_id=ss.snap_id;

BEGIN NAME ITLBEGIN NAME ITL

--------------- ---------- -------------------- ---------- -----

06-JAN-08 10:00 ITL 2406-JAN-08 10:00 ITL 2406-JAN-08 01:00 ITL 4006-JAN-08 01:00 ITL 4006-JAN-08 19:00 T1_I1 207106-JAN-08 19:00 T1_I1 2071

Page 51: 04 newfeatures

#.51

Copyright 2006 Kyle Hailey

DBA_HIST_SYSTEM_EVENT

Cumulative Values – can use LAG function

SQL> desc DBA_HIST_SYSTEM_EVENTSQL> desc DBA_HIST_SYSTEM_EVENT Name TypeName Type -------------------------------------------------------------------- SNAP_ID NUMBERSNAP_ID NUMBER DBID NUMBERDBID NUMBER INSTANCE_NUMBER NUMBERINSTANCE_NUMBER NUMBER EVENT_ID NUMBEREVENT_ID NUMBER EVENT_NAME VARCHAR2(64)EVENT_NAME VARCHAR2(64) WAIT_CLASS_ID NUMBERWAIT_CLASS_ID NUMBER WAIT_CLASS VARCHAR2(64)WAIT_CLASS VARCHAR2(64) TOTAL_WAITS NUMBERTOTAL_WAITS NUMBER TOTAL_TIMEOUTS NUMBERTOTAL_TIMEOUTS NUMBER TIME_WAITED_MICRO NUMBERTIME_WAITED_MICRO NUMBER

Page 52: 04 newfeatures

#.52

Copyright 2006 Kyle Hailey

Average Wait Timesselect

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,

LagLag ( (e.time_waited_micro/1000)

OVER( PARTITION BY e.event_name ORDER BY s.snap_id) time_ms_beg,

LagLag ( (e.total_waits)

OVER( PARTITION BY e.event_name ORDER BY s.snap_id) count_beg

from

DBA_HIST_SYSTEM_EVENT e,

DBA_HIST_SNAPSHOT s

where

s.snap_id=e.snap_id and e.event_name= '&1'

order by begin_interval_time

)

order by btime;

BTIME AVG_MSBTIME AVG_MS-------------------- -------------------------------- ------------08-JAN-08 01:00 1.01708-JAN-08 01:00 1.017

08-JAN-08 02:00 .72008-JAN-08 02:00 .720

08-JAN-08 03:00 .62108-JAN-08 03:00 .621

08-JAN-08 04:00 1.74708-JAN-08 04:00 1.747

08-JAN-08 05:00 1.04608-JAN-08 05:00 1.046

08-JAN-08 06:00 1.44408-JAN-08 06:00 1.444

Page 53: 04 newfeatures

#.53

Copyright 2006 Kyle Hailey

ASH RPT @?/rdbms/admin/ashrpt Detailed report on top SQL, Sessions, Objects etc Run over SQL*Net with

Also ASH_REPORT_HTML

select output select output

from table(dbms_workload_repository.ash_report_text( from table(dbms_workload_repository.ash_report_text( (select dbid from v$database),(select dbid from v$database),

1,1, sysdate – 2/24, sysdate – 2/24, sysdate – 1/24,sysdate – 1/24, 0)) ;0)) ;

Page 54: 04 newfeatures

#.54

Copyright 2006 Kyle Hailey

ASH RPT

1) General info

2) Top User Events ***

3) Top Background Events

4) Top Event P1/P2/P3 Values

5) Top Service/Module

6) Top Client IDs

7) Top SQL Command Types

8) Top SQL Statements ***

1) General info

2) Top User Events ***

3) Top Background Events

4) Top Event P1/P2/P3 Values

5) Top Service/Module

6) Top Client IDs

7) Top SQL Command Types

8) Top SQL Statements ***

9) Top SQL using literals

10) Top Sessions ***

11) Top Blocking Sessions

12) Top Sessions running PQs 

13) Top DB Objects

14) Top DB Files

15) Top Latches

16) Activity Over Time ***

9) Top SQL using literals

10) Top Sessions ***

11) Top Blocking Sessions

12) Top Sessions running PQs 

13) Top DB Objects

14) Top DB Files

15) Top Latches

16) Activity Over Time ***

Page 55: 04 newfeatures

#.55

Copyright 2006 Kyle Hailey

ASH RPT HTML

Page 56: 04 newfeatures

#.56

Copyright 2006 Kyle Hailey

Time ModelNew concept• DB Time

Total time for all database calls• cpu time • wait time

Page 57: 04 newfeatures

#.57

Copyright 2006 Kyle Hailey

Metrics

Time Model

Time Model

Stats

Wait SQL

Sessions

Page 58: 04 newfeatures

#.58

Copyright 2006 Kyle Hailey

Time Model areas Total Time CPU Elapsed Time SQL execution Plsql execution (sql execute subtracted out) Java execution Connection time

Probably the most important as it points out problems with too many logons/sec

Page 59: 04 newfeatures

#.59

Copyright 2006 Kyle Hailey

Time Model Components1) 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

Page 60: 04 newfeatures

#.60

Copyright 2006 Kyle Hailey

Total Time

Total Database Time

Page 61: 04 newfeatures

#.61

Copyright 2006 Kyle Hailey

Total and CPU

DB CPU Time

=~ DB Wait Time

Page 62: 04 newfeatures

#.62

Copyright 2006 Kyle Hailey

Total and CPU and Parse Time

DB CPU Time

DB Wait

Time

Parse Elapsed

Time

Page 63: 04 newfeatures

#.63

Copyright 2006 Kyle Hailey

Parse Time

Parse Elapsed

Time

Page 64: 04 newfeatures

#.64

Copyright 2006 Kyle Hailey

Hard Parse

Parse

time

elapsed

hard parse elapsed time

Page 65: 04 newfeatures

#.65

Copyright 2006 Kyle Hailey

Hard Parse Sharing Criteria

Parse

time

elapsed

hard parse elapsed time

hard parse

(sharing criteria) elapsed

time

Page 66: 04 newfeatures

#.66

Copyright 2006 Kyle Hailey

Hard Parse Bind Mismatch

Parse

time

elapsed

hard parse elapsed time

hard parse

(sharing criteria) elapsed

time

hard parse (bind

mismatch)

elapsed time

Page 67: 04 newfeatures

#.67

Copyright 2006 Kyle Hailey

Time Model TablesCurrent 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 Tables show cumulative values. To find deltas, then need to run AWR reportneed to run AWR report

Page 68: 04 newfeatures

#.68

Copyright 2006 Kyle Hailey

Wait Classes Administrative (39)

switch logfile rebuild index

Application (11) enqueues sqlnet break/reset

Cluster (113)

Commit (1) Log file Sync

Concurrency (12) Latches: cbc, lbc, Lib cache locks Buffer busy wait

Configuration (20) log file size Enqueues: ST, HW, ITL Latch: redo copy,shared pool

Idle (56)

Network (25)

System I/O (19)

Scheduler (6)

User I/O (12)

Other (485)

Page 69: 04 newfeatures

#.69

Copyright 2006 Kyle Hailey

Wait Class Tables

v$system_wait_class cumulative

v$waitclassmetric Current rates

v$waitclassmetric_history Hour of rates (60 second intervals)

Page 70: 04 newfeatures

#.70

Copyright 2006 Kyle Hailey

v$waitclassmetricBEGIN_TIME

END_TIME

INTSIZE_CSEC

WAIT_CLASS_ID

WAIT_CLASS#

NUM_SESS_WAITING

TIME_WAITED

WAIT_COUNT

Waits Metrics

v$waitclassmetric_history BEGIN_TIME

END_TIME

INTSIZE_CSEC

WAIT_CLASS_ID

WAIT_CLASS#

NUM_SESS_WAITING

TIME_WAITED

WAIT_COUNT

v$eventmetric BEGIN_TIME END_TIME INTSIZE_CSEC EVENT_ID NUM_SESS_WAITING TIME_WAITED WAIT_COUNT

v$event_name EVENT#

EVENT_ID

NAME

PARAMETER1

PARAMETER2

PARAMETER3

WAIT_CLASS_ID

WAIT_CLASS#

WAIT_CLASS

v$system_wait_classWAIT_CLASS_ID

WAIT_CLASS#

WAIT_CLASS

TOTAL_WAITS

TIME_WAITED

v$system_eventEVENT

TOTAL_WAITS

TOTAL_TIMEOUTS

TIME_WAITED

AVERAGE_WAIT

TIME_WAITED_MICRO

EVENT_ID

No in memory history

dba_hist_system_event

(Cumulative)

dba_hist_waitclassmetric_history

Only gets populated with alerts

Wait Classes

Wait Events

Cumulative Current deltas Last Hour Last 7 days

Page 71: 04 newfeatures

#.71

Copyright 2006 Kyle Hailey

Miscellaneous V$sqlstats Field naming conventions Wait Improvements

Wait histogramsWaits in v$session and v$sqlWaits broken out for latches and locksWaits show the blockerWait history of last 10 waits

Services Client Id

Page 72: 04 newfeatures

#.72

Copyright 2006 Kyle Hailey

v$sqlstats

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

Page 73: 04 newfeatures

#.73

Copyright 2006 Kyle Hailey

Event and Stat Fields Names

Names Event Statistic Waitclass

Ids Event# Statistic# Waitclass#

Name Hash Event_id Statistic_id Waitclass_id

Page 74: 04 newfeatures

#.74

Copyright 2006 Kyle Hailey

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

Page 75: 04 newfeatures

#.75

Copyright 2006 Kyle Hailey

Waits in v$session

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)

V$session exposes all the fields from v$session_wait

Page 76: 04 newfeatures

#.76

Copyright 2006 Kyle Hailey

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

Page 77: 04 newfeatures

#.77

Copyright 2006 Kyle Hailey

Wait Types Broken Out

800 waits Latches broken out

Ex) Latch: library cache latch

Enqueues broken outEx) Enq: HW - contention

Page 78: 04 newfeatures

#.78

Copyright 2006 Kyle Hailey

Waits show Blocking Session

V$session. BLOCKING_SESSION -> can build a wait tree:

Page 79: 04 newfeatures

#.79

Copyright 2006 Kyle Hailey

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

Page 80: 04 newfeatures

#.80

Copyright 2006 Kyle Hailey

Setting up Services

ORA10a =ORA10a = (DESCRIPTION =(DESCRIPTION = (ADDRESS_LIST =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(ADDRESS = (PROTOCOL = TCP) (HOST = kylehpd)(PORT = 1521)) )(HOST = kylehpd)(PORT = 1521)) ) (CONNECT_DATA =(CONNECT_DATA = (SERVER = DEDICATED)(SERVER = DEDICATED) (SERVICE_NAME = A)(SERVICE_NAME = A) ) )) )

dbms_service.CREATE_SERVICE('ora10a',‘A');dbms_service.CREATE_SERVICE('ora10a',‘A');dbms_service.START_SERVICE ('ora10a');dbms_service.START_SERVICE ('ora10a');-- dbms_service.STOP_SERVICE ('ora10a');-- dbms_service.STOP_SERVICE ('ora10a');-- dbms_service.DELETE_SERVICE('ora10a');-- dbms_service.DELETE_SERVICE('ora10a');

Service "A" has 1 instance(s).Service "A" has 1 instance(s). Instance "v10g", status READY, has 1 handler(s) for this service...Instance "v10g", status READY, has 1 handler(s) for this service... Handler(s):Handler(s): "DEDICATED" established:0 refused:0 state:ready"DEDICATED" established:0 refused:0 state:ready

tnsnames.oratnsnames.ora

lsnrctl serviceslsnrctl services

Sqlplus un/pw@ora10aSqlplus un/pw@ora10a

Page 81: 04 newfeatures

#.81

Copyright 2006 Kyle Hailey

Services in OEM

Enable Trace Enable Trace

By ServiceBy Service

View doesn’t workView doesn’t work

Page 82: 04 newfeatures

#.82

Copyright 2006 Kyle Hailey

Client Id

trcsess

Setting Client ID

Enabling trace for a client ID

Enabling statistics aggregation by client id

Script to Extract Client Trace

dbms_session.set_identifier(client_id)

dbms_monitor.client_id_trace_enable (client_id, TRUE, FALSE)

dbms_monitor.client_id_stat_enable(client_id)

Page 83: 04 newfeatures

#.83

Copyright 2006 Kyle Hailey

Session Dedicated

Oracle Database Host

Oracle

SessionsS1 S2 S3 S4 S4 S5 S6

Scott John Sue Mike Randy Tim Mary

Page 84: 04 newfeatures

#.84

Copyright 2006 Kyle Hailey

Session Dedicated trace

Oracle Database Host

Oracle

SessionsS1 S2 S3 S4 S4 S5 S6

Scott John Sue Mike Randy Tim Mary

SQL_TRACE=TRUE

Page 85: 04 newfeatures

#.85

Copyright 2006 Kyle Hailey

Session Pooling trace

Oracle Database Host

APP Server

1

Oracle

SessionsS1 S2 S3 S4 S4 S5 S6 S7

Scott John Sue Mike Randy Tim Mary

S1, sql_trace=true

Page 86: 04 newfeatures

#.86

Copyright 2006 Kyle Hailey

Session Pooling

Oracle Database Host

APP Server

1

Oracle

SessionsS1 S2 S3 S4 S4 S5 S6 S7

Scott John Sue Mike Randy Tim Mary

Set client_id = SCOTT

dbms_monitor.client_id_trace_enable (client_id, TRUE, FALSE); waits, binds

Page 87: 04 newfeatures

#.87

Copyright 2006 Kyle Hailey

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

Page 88: 04 newfeatures

#.88

Copyright 2006 Kyle Hailey

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