04 newfeatures
Transcript of 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
#.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
#.3
Copyright 2006 Kyle Hailey
10g
Stats
Waits SQL
Sessions
V$sql
V$session
Includes some waits now
#.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
#.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
#.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
#.7
Copyright 2006 Kyle Hailey
This tells you … Nothing
1,533,787
IO’s
time
30 minutes
30 minutes
time
GOOD BAD
#.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
#.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)
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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# /
#.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
#.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
#.24
Copyright 2006 Kyle Hailey
Historical Metrics
High rate
Lots of IO
Low rate
Little IO
v$sysstat
physical reads
#.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
#.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
#.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
#.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
#.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
#.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
#.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)
#.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
#.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
#.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
#.35
Copyright 2006 Kyle Hailey
SnapshotingDone automatically out of the box, but can be run by hand:
BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();END;
/
#.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
#.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
#.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
#.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 ))))
#.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
#.41
Copyright 2006 Kyle Hailey
Awr 1-13
#.42
Copyright 2006 Kyle Hailey
AWR 14-26
#.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
#.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
#.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.
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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)) ;
#.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 ***
#.55
Copyright 2006 Kyle Hailey
ASH RPT HTML
#.56
Copyright 2006 Kyle Hailey
Time ModelNew concept• DB Time
Total time for all database calls• cpu time • wait time
#.57
Copyright 2006 Kyle Hailey
Metrics
Time Model
Time Model
Stats
Wait SQL
Sessions
#.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
#.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
#.60
Copyright 2006 Kyle Hailey
Total Time
Total Database Time
#.61
Copyright 2006 Kyle Hailey
Total and CPU
DB CPU Time
=~ DB Wait Time
#.62
Copyright 2006 Kyle Hailey
Total and CPU and Parse Time
DB CPU Time
DB Wait
Time
Parse Elapsed
Time
#.63
Copyright 2006 Kyle Hailey
Parse Time
Parse Elapsed
Time
#.64
Copyright 2006 Kyle Hailey
Hard Parse
Parse
time
elapsed
hard parse elapsed time
#.65
Copyright 2006 Kyle Hailey
Hard Parse Sharing Criteria
Parse
time
elapsed
hard parse elapsed time
hard parse
(sharing criteria) elapsed
time
#.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
#.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
#.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)
#.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)
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.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
#.78
Copyright 2006 Kyle Hailey
Waits show Blocking Session
V$session. BLOCKING_SESSION -> can build a wait tree:
#.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
#.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
#.81
Copyright 2006 Kyle Hailey
Services in OEM
Enable Trace Enable Trace
By ServiceBy Service
View doesn’t workView doesn’t work
#.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)
#.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
#.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
#.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
#.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
#.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
#.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