Documente Academic
Documente Profesional
Documente Cultură
www.SageLogix.com
Agenda
Configuring STATSPACK optimally About the STATSPACK repository Analysis using the STATSPACK repository
www.SageLogix.com
Configuring STATSPACK
Whats missing from the standard installation script spcreate.sql in $ORACLE_HOME/rdbms/admin?
Purging Configuration of data sampling levels and thresholds
www.SageLogix.com
Configuring STATSPACK
Configuration of data sampling levels and thresholds
Snap Level Thresholds
www.SageLogix.com
Snap Level
Level 0 (i.e. any value < 5)
Database performance statistics only Level 0 plus SQL execution info Default level of data gathering for all versions of STATSPACK
Recommended level for Oracle8i and below..
Level 5
Level 10
Level 5, 6, and 7 plus detailed parent/child latch statistics
10,000 1 Mbyte
20
www.SageLogix.com
1,000 10,000
100 100 100
Same Same
Same Same 1
1,000
www.SageLogix.com
Same
www.SageLogix.com
Using STATSPACK
But using STATSPACK isnt all about the reports provided by Oracle
The single main report requires some advance knowledge of a time period in which problems are occurring
Keep in mind that there is an amazing repository of information that can used for broad general analysis as well as specific targeted investigations
Think of some interesting questions that arise during a troubleshooting session
What changed between then and now? Is the current behavior an anomaly or normal for this environment? How much of resource XXX are we using? How much have we used over time?
www.SageLogix.com
Using STATSPACK
In general, STATSPACK data will not provide a specific answer to a specific solution
It is too high-level, too aggregated
So..
Use STATSPACK data to:
Generalize the problem(s) Eliminate irrelevancies (!!!!) View trends from a high level
STATSPACK repository
Number of tables has expanded with each version
About 30 tables in Oracle8i About 40 tables in Oracle9i About 55 tables in Oracle10g
Not counting control tables used by STATSPACK itself
Each of these tables can be considered a FACT table in a subject area of a dimensional data model
Lone dimension is STATS$SNAPSHOT
time dimension
Each of the fact tables in the repository are keyed by SNAP_ID, which can be translated to SNAP_TIME by joining to STATS$SNAPSHOT
SNAP_ID, DBID, INSTANCE_NUMBER
www.SageLogix.com
4359
3,321,333
But this type of data prevents reporting and analysis across many snapshots
Cannot simply summarize
The cumulative data is not additive
www.SageLogix.com
www.SageLogix.com
) Creates the concept of a current row in relationship to preceding rows A set of related rows is created with the PARTITION BY, ORDER BY, and windowing clauses
www.SageLogix.com
sp_systime_9i.sql
Written to mimic the top-level logic of the YAPP report
http://www.oraperf.com/ Response-time = Service-time + Wait-time
The intent of the report is to show, day-by-day or hour-byhour, where the database instance is spending the most time
www.SageLogix.com
sp_systime_9i.sql
Daily breakdown (top 10 time consumers)
Service, Non-Idle
Idle, Seconds % of Day or Wait Name Spent Total ------ -------- ----------------------------------- ------------------- ------22-AUG Service SQL execution 28,842.92 67.39 Service Recursive SQL execution 4,480.52 10.47 Wait db file sequential read 3,598.26 8.41 Wait db file parallel write 2,441.00 5.70 Wait direct path read 1,096.21 2.56 Wait db file scattered read 1,019.07 2.38 Service Parsing SQL 382.46 0.89 Wait log file parallel write 343.28 0.80 Wait log file sync 179.09 0.42 Wait control file parallel write 111.12 0.26
www.SageLogix.com
sp_systime_9i.sql
Hourly breakdown (top 3 time-consumers)
Service, Non-Idle
Idle, Seconds % of Day Hour or Wait Name Spent Total ------ ------ -------- ----------------------------------- ------------------- ------28-AUG 17:00 Service SQL execution 270.65 84.62 Wait log file sync 10.87 3.40 Service Parsing SQL 7.16 2.24 18:00 Service SQL execution 189.92 82.56 Wait log file sync 9.79 4.26 Wait db file sequential read 5.70 2.48 19:00 Service SQL execution 106.07 81.84 Wait log file sync 4.85 3.74 Wait db file sequential read 4.46 3.44
See listing
www.SageLogix.com
top_stmt4_9i.sql
Latest in a line of stored procedures to produce a top N SQL statements report
Can be sorted by:
logical I/Os + (100 * physical I/Os) elapsed time logical I/Os physical I/Os
Each of these can be cumulative for the time period sampled or per execution
www.SageLogix.com
top_stmt4_9i.sql
Beginning Snap Time: 11/29/04 11:00:03 Page 1 Ending Snap Time : 12/01/04 10:00:02 Nbr of Snapshots: 48 Date of Report : 12/01/04 10:55:30 Total Logical Reads: 580,110,532 Total Physical Reads: 2,816,050 . Module: " ? @ihe3 (TNS V1-V3)" . SQL Statement Text (Hash Value=1397201706) -----------------------------------------0 SELECT level, series_id, parent_id, series_name, type, 1 constraint_flag, facilitator_page, series_text_3, display_order 2 _num, master_series_id, series_keyword, instructor_id FROM c 3 m_series_instance WHERE reg_code = :reg_code AND type = 4 :block_type AND status = 'active' START WITH pa 5 rent_id = 0 CONNECT BY parent_id = PRIOR series_id . : Disk Buffer Cache Hit DR Per BG Per CPU Per Ela Per : Reads Gets Ratio Runs Run Run Run Run : ---------- --------- ---- ------ ------ ------ -----: 2,040,353 253,437,801 99.19% 3,071 664 82,526 1.47 8.06 : (72.454%) (43.688%)
www.SageLogix.com
top_stmt4_9i.sql
. SQL execution plan from "11/29/04 11:00:03" (snap #481) -----------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| -----------------------------------------------------------------------------------------------|* 0 | SELECT STATEMENT | | | | | |* 1 | FILTER | | | | | |* 2 | CONNECT BY WITH FILTERING | | | | | |* 3 | NESTED LOOPS | | | | | |* 4 | INDEX RANGE SCAN | CM_SERIES_INSTANCE_IDX4 | 69 | 207 | 1 (0)| |* 5 | TABLE ACCESS BY USER ROWID | CM_SERIES_INSTANCE | | | | |* 6 | NESTED LOOPS | | | | | |* 7 | BUFFER SORT | | 69 | 8418 | | |* 8 | CONNECT BY PUMP | | | | | |* 9 | TABLE ACCESS BY INDEX ROWID| CM_SERIES_INSTANCE | 69 | 8418 | 2 (50)| |* 10 | INDEX RANGE SCAN | CM_SERIES_INSTANCE_IDX4 | 69 | | 1 (0)| ------------------------------------------------------------------------------------------------
See listing
www.SageLogix.com
Additional scripts
Generic reporting enablement
sp_delta_views.sql
Based on STATS$PARAMETER
sp_parm_changes.sql
Based on STATS$SYSSTAT
sptrends.sql
Based on STATS$SYSTEM_EVENT
sp_evtrends.sql
Based on STATS$LATCH_MISSES
sp_latch_misses.sql
www.SageLogix.com
General methods
Start with sp_systime report for initial high-level analysis on a day-by-day basis, with hour-by-hour detail
Whatever consumes the most time, follow up with other analysis scripts
If SQL execution, Recursive SQL execution, db file read events are significant, find top N SQL using TOP_STMT4 report If latch free, drill down with sp_latch_misses.sql If buffer busy waits, drill down with sp_buffer_busy_waits.sql If row lock waits, drill down with sp_row_lock_waits.sql If RAC (GC) waits, drill down with sp_gc_waits.sql If ITL waits, drill down with sp_itl_waits.sql If redo * wait-events, check out sp_avg_redo_write_time.sql For trending on other wait events, use sp_evtrends.sql script For trends on statistics, use sptrends.sql script
www.SageLogix.com
Q&A
Questions?
Tim@SageLogix.com Website: http://www.SageLogix.com/ Scripts and presentation can be downloaded from http://www.EvDBT.com/papers.htm http://www.EvDBT.com/tools.htm Else, email me :-)
www.SageLogix.com