Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Oracle Database wikipedia , lookup
Concurrency control wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Database model wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Relational model wikipedia , lookup
Clusterpoint wikipedia , lookup
Average Active Sessions (AAS) The Golden Metric ? Database Performance How quick can you find Bottleneck in DB If DB is idle Current DB Load what is DB Load ? What do you use? Statspack/AWR what the *!####!*!*? is the database doing ?! V$active_session_history Alerts 5/22/2017 what do you alert on ? 2 Statspack / AWR 1000 lines of data / 30 pages What do you look at ? Top 5 Timed Events? #.3 188 minutes CPU Elapsed 15 minutes 48 Processors or 74% idle Top 5 Timed Events ~~~~~~~~~~~~~~~~~~ % Total Event Waits Time (s) Ela Time ------------------------ ------------ ----------- -------CPU time 11,330 81.95 log file sync 163,725 1,012 7.32 enqueue 4,486 615 4.45 latch free 28,786 236 1.71 db file sequential read 1,420,355 149 1.08 ----------------------------------------- Jonathan Lewis - http://www.jlcomp.demon.co.uk/statspack_01.html 5/22/2017 3 In this Session #.4 1. AAS Single Metric Shows DB Performance 2. Yardstick Max CPU CPU Count To measure AAS against 3. Subcomponents 5/22/2017 CPU Waits Time series 4 Goal of this Presentation Simplify the data and empower the DBA Cut out unnecessary Hone in on essential 5/22/2017 5 What’s the DB Doing?! It’s 2am … your manager calls Whip out the stethoscope: AAS what the *!####!*!*? is the database doing ?! 5/22/2017 6 Welcome to … The Cult of AAS Once you’ve been initiated … there is no going back For those of you who are already members, welcome back #.7 #.8 AAS Calculation AAS = DB TIME / Elapsed Time DB Time (DBT) = sum over all sessions of time spent in a call. A call could be executing SQL background work DBWR writing blocks LGWR writing redo Average Active Sessions #.9 Centi-seconds per second In the dark ages waits were often as Centi-secs per sec Sometimes called secs/sec Usually didn’t include CPU time, which is essential Average Active Sessions (AAS) OEM 10g Graphs ASH Report Session Load I 5/22/2017 often refer to it this way Copyright 2006 Kyle Hailey 9 AAS #.10 Average load of sessions on the database Average over 15 secs in OEM 10g Period varies in other tools measured in number of sessions Active Sessions Only Active sessions put load the database Inactive Sessions don’t put load ( Except for memory usage ) The Golden Metric Powerful Multidimensional Indispensable 5/22/2017 10 AAS Sources #.11 1. Manually from v$sysstat (9i ) v$system_event 2. Statspack Need several calculations 3. AWR One calculation 4. OEM 10g Directly 5/22/2017 displayed 11 #.12 1. Manually DB Time (DBT) = sum active session time DB TIME (10g) = select value from v$sysstat ‘DBtime’; time’ where name = ‘DB Select sum(time_waited) from v$system_event DB TIME (9i) = where event not in ( ... idle events …); + Select value from v$sysstat where name = ‘CPU used by this session’; 2. Statspack AAS #.13 Look for Elapsed Time Top 5 Timed Events 5/22/2017 Start at line 52 of about 1300! 13 AWR/Statspack: Cheat Sheet Install Connect as SYSDBA @?/rdbms/admin/spcreate.sql Run Exec statspack.snap; Generate Reports @?/rdbms/admin/spreport.sql #.14 2. Statspack AAS #.15 Elapsed Time STATSPACK report for DB Name DB Id Instance Inst Num Release RAC Host ------- ----------- -------- -------- ---------- --- ------LABSF03 1420044432 labsf03 1 10.1.0.2.0 NO labsfr Snap Id Snap Time Sessions Curs/Sess --------- ------------------ -------- --------Begin Snap: 1 03-Apr-06 12:34:06 18 5.6 End Snap: 2 03-Apr-06 12:34:36 18 4.8 Elapsed: 1.00 (mins) Look at Top 5 Timed Events Top 5 Timed Events ~~~~~~~~~~~~~~~~~~ Event --------------------buffer busy waits CPU time free buffer waits write complete waits log buffer space 5/22/2017 Waits --------2,748 1,588 10 306 Time (s) --------250 32 15 8 5 % Total Call Time ------78.72 10.16 4.63 2.51 1.51 15 2. Statspack AAS #.16 Top 5 Timed Events DBTIME= CPU + WAITS CPU = 32 WAITS = 250+15+8+5 = 278 secs DBTIME=320 Event Time (s) --------------------buffer busy waits 250 CPU time 32 free buffer waits 15 write complete waits 8 log buffer space 5 Elapsed Time = 60 secs 320 secs / 60 secs AAS = 5.1 5/22/2017 16 3. AWR Report #.17 AAS = DB Time/Elapsed Time 23.56/59.66 = 0.39 AAS= 0.39 5/22/2017 17 4. OEM 10g #.18 •OEM 10g AAS = ~0.75 5/22/2017 18 Got AAS, Now What ? #.19 We Need one more item: CPU Count # of CPUs available on System Shared with other applications Need to track CPU used on the system as well On dual & quad cores, lower the CPU count Represents max active sessions that can do work 5/22/2017 19 CPU Count #.20 # of CPUs available in Statspack 10g AWR report OEM 10g Statspack 9i # of CPUs missing # of CPUs SQLPLUS> show parameters cpu_count NAME VALUE ------------------ ---------cpu_count 2 5/22/2017 20 AAS Formulas #.21 Use CPU count as yardstick: <1 Database is not blocked AAS ~= 0 Database basically idle Problems are in the APP not DB Ideal world – one database solution track CPU at OS AAS < # of CPUs CPU available Database is probably not blocked Are any single sessions 100% active? AAS > # of CPUs Could have performance problems AAS > 1 still want to know if a single user is 100% active AAS >> # of CPUS There is a bottleneck 5/22/2017 21 Available CPU vs AAS #.22 AAS = 5.1 # of CPU = 2 AAS far above available CPU => problem AAS = 0.39 # of CPU = 2 AAS < 1 , database is fine 5/22/2017 22 Going Farther with AAS #.23 AAS can tell you a lot But it’s components tell you much more To go farther need the components of AAS 1.CPU 2.Wait 3.Value over time Only OEM 10g has all 3 (Statspack and AWR are aggregated over the snapshot period) 5/22/2017 23 EM DB Home Page #.24 OEM 10g Perf Pages #.25 DB Home AAS Point in Time Performance AAS over Time AAS Components : OEM 10g #.26 OEM 10g Performance Page Real CPU available: Max CPU - non instance CPU 5/22/2017 Available CPU AAS: CPU + WAIT 26 #.27 OEM 10g Relax Get to Work! Looks OK But … 5/22/2017 27 Limited Analysis #.28 What if you find a problem ? Example “easy” waits buffer waits Of the 800 waits most need free log buffer space log file switch (archiving needed) SQL and/or P1,P2,P3 log file switch (checkpoint incomplete) log file switch completion to solve What if there is a wait bottleneck ? What SQL Example “hard” waits Which sessions Buffer busy wait Row cache lock Values of P1, P2 and P3 Latch free row lock contention Statspack and AWR fail Latch: cache buffers chains 5/22/2017 28 #.29 Alternative AAS Calculations AAS = DB TIME / Elapsed Time But there is another way … AAS based on ASH #.30 ASH - Active Session History v$active_session_history AAS = count(*) / elapsed_seconds A statistical approximation, but surprisingly close ASH data source empowers drilldowns Top Sql Top Waits Details p1,p2,p3 and more 5/22/2017 30 AAS from ASH #.31 1. ASHRPT Based entirely on v$active_session_history @?/rdbms/admin/ashrpt Exec ASH_REPORT_TEXT/HTML 2. OEM select 10g * from table (dbms_workload_repository.ash_report_text( Top Activity page (select dbid from v$database), Displays it directly 1, Enables Drilldowns sysdate – 1/24, 3. Custom queries on sysdate )) ; v$active_session_history 5/22/2017 31 1. ASHRPT #.32 ASH Report For TESTDB/testdb DB Name DB Id Instance Inst Num Release RAC Host ------------ ----------- ------------ -------- ----------- --- -----------TESTDB 2371570538 testdb 1 10.2.0.1.0 NO sdbe604a CPUs SGA Size Buffer Cache Shared Pool ASH Buffer Size ---- ------------------ ------------------ ------------------ -----------------2 1,000M (100%) 468M (46.8%) 112M (11.2%) 4.0M (0.4%) Analysis Begin Time: 21-Apr-06 12:00:01 Analysis End Time: 21-Apr-06 12:05:01 Elapsed Time: 5.0 (mins) Sample Count: 3,716 Average Active Sessions: 12.39 Avg. Active Session per CPU: 6.19 Report Target: None specified Top User Events DB/Inst: TESTDB/testdb (Apr 21 12:00 to 12:05) Avg Active Event Event Class % Activity Sessions ----------------------------------- --------------- ---------- ---------CPU + Wait for CPU CPU 67.98 8.42 enq: TX - row lock contention Application 23.98 2.97 buffer busy waits Concurrency 4.66 0.58 latch: cache buffers chains Concurrency 2.26 0.28 5/22/2017 32 #.33 1. 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 *** 5/22/2017 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 *** 33 #.34 1. ASHRPT over Time Waits over Time Not in AAS Difficult but better than nothing Compare to … 5/22/2017 34 2. OEM 10g : Top Activity #.35 •Top Activity •Based on ASH •Enables Drilldowns •Top SQL •Top Session •Drill into a session • Stats • Raw waits • Open cursors • General info •Drill into a SQL • Stats and text • Users executing • Explain plan • Tuning options 5/22/2017 35 3. Custom Scripts #.36 Hate Graphics ? Query v$active_session_history directly Join to dba_hist_active_sess_history for week of data act.sql Like top 5 timed events Aveact.sql Charts with text AAS by hour (15 minute, minute , etc) Aveactn.sql Ditto, with top 2 wait events per bucket Following Scripts Available on http://perfvision.com/ashscripts.php 5/22/2017 36 3. Custom Scripts @act Analysis Begin Time : Analysis End Time : Start time, mins ago: Request Duration : Collections : Data Values : Elapsed Time: 15 mins #.37 2007-07-24 11:04:48 2007-07-24 11:19:45 15 15 528 3327 WAIT_EVENT CNT % Active Ave_Act_Sess -------------------------------------- ---------- -----------latch free 10 .3 .02 log buffer space 13 .39 .02 buffer busy waits 14 .42 .03 db file scattered read 15 .45 .03 library cache pin 78 2.34 .15 log file sync 213 6.40 .40 ON CPU 726 21.82 1.38 enqueue 855 25.70 1.62 db file sequential read 1399 42.05 2.65 -----------sum 6.30 5/22/2017 37 #.38 3. Custom Scripts @aveact TM NPTS AVEACT GRAPH ---------------- ------ ------- ---------------------06-AUG 13:00:00 270 .33 +2 06-AUG 14:00:00 1040 2.24 ++--------2--06-AUG 15:00:00 623 6.67 ++++------2---------06-AUG 16:00:00 1088 2.59 ++--------2---06-AUG 17:00:00 1104 1.26 ++----2 06-AUG 18:00:00 1093 1.38 +++---2 06-AUG 19:00:00 1012 1.74 ++------- 2 06-AUG 20:00:00 1131 .99 +---2 06-AUG 21:00:00 1111 1.22 ++----2 06-AUG 22:00:00 1010 1.66 ++------ 2 06-AUG 23:00:00 1120 1.08 +---2 07-AUG 00:00:00 1024 .83 +--2 07-AUG 01:00:00 1006 1.74 ++------- 2 07-AUG 02:00:00 1090 2.47 ++--------2---07-AUG 03:00:00 687 6.59 +++-------2---------07-AUG 04:00:00 1004 1.95 ++++++--- 2 07-AUG 05:00:00 1104 3.08 +++++-----2-----07-AUG 06:00:00 1122 1.91 +++++++-- 2 5/22/2017 CPU WAITS ---- ----29 59 341 1984 438 3718 335 2486 349 1043 663 842 373 1388 304 820 344 1012 414 1259 298 913 273 576 319 1428 347 2345 382 4142 1299 659 1170 2226 1582 558 38 3. Custom Scripts #.39 @aveactn TO_CHAR(STA AAS AAS1 FIRST AAS2 SECOND GRAPH ----------- ------- ----- --------------- ----- --------------06 13:00:00 .30 .11 db file sequent .10 CPU 06 14:00:00 2.24 .87 direct path wri .49 log file sync 06 15:00:00 6.67 2.07 direct path wri 1.93 log file sync 06 16:00:00 2.59 1.01 direct path wri .57 log file sync 06 17:00:00 1.26 .63 log file sync .32 CPU 06 18:00:00 1.38 .61 CPU .45 log file sync 06 19:00:00 1.86 .97 log file sync .39 CPU 06 20:00:00 .99 .38 log file sync .27 CPU 06 21:00:00 1.22 .57 log file sync .31 CPU 06 22:00:00 1.66 .81 log file sync .41 CPU 06 23:00:00 1.08 .49 log file sync .27 CPU 07 00:00:00 .83 .37 log file sync .27 CPU 07 01:00:00 1.74 .96 log file sync .31 CPU 07 02:00:00 2.48 1.21 direct path wri .52 log file sync 07 03:00:00 6.59 2.63 direct path wri 1.58 log file sync 07 04:00:00 1.95 1.29 CPU .27 log file sync 07 05:00:00 3.08 1.05 CPU .83 enqueue 5/22/2017 -----------------------2 ++--------2--++++------2---------++--------2---++----2 +++---2 ++------- 2 +---2 ++----2 ++------ 2 +---2 +--2 ++------- 2 ++--------2---+++-------2---------++++++--- 2 +++++-----2------ 39 Samples VS Counters #.40 Samples v$active_session_history Slight Lags v$system_event 5/22/2017 Counters 40 CPU in ASH vs Stats 5/22/2017 #.41 41 In Review: Two Sources #.42 1. v$system_event & v$sysstat Indirect Accurate Lags (especially CPU) Limits analysis 2. v$active_session_history 5/22/2017 Direct Real time Approximation ***Allows drilldowns*** 42 The Power ASH gives AAS DB Home Performance events statistics Top Activity ASH #.43 ASH in OEM Top Activity gives more information #.44 #.45 Top Activity : Based on ASH missing Thanks To ASH #.46 Top Activity : ASH Dimensions AAS – %Session Time Issue Shown in % DB Time Missing % Session Time #.47 #.48 Top Activity: ASH Sessions Many Users Active On Performance Page, no way to tell how many users But Top Activity Page fixes that Top Activity: ASH Sessions Two Users Active #.49 OEM 10g Perf Pages DB Home Performance Top Activity SQL Session #.50 OEM 10g Perf Pages Top Activity SQL Session #.51 Session : ASH Activity #.52 SQL : ASH Activity #.53 #.54 Getting the Most out of AAS Need to know the System’s Profile What your application is like? Data Warehouse OLTP Typical load Once you get to know it you can see anomalies Is AAS near 0 when it should be higher Is that Data Warehouse query running normal Do you know what it looks like? Is there an unusual bottleneck Knowing your DB Profile #.55 #.56 When to tune? General rules of Thumb Waits >> CPU CPU > Max CPU #.57 Waits > CPU CPU > Max CPU #.58 #.59 Idle Database Value of proving the database is Idle It’s the Databases Fault How many times do you hear that? Database Idle No load on database Database “performance” is fine Under utilized Problem lies elsewhere Saved me time and stress many times #.60 Idle Database – Perf Page Idle Database – Top Activity #.61 Harnessing AAS Statspack/AWR report Lacking Statspack free and any version AWR automatically installed in10g Both Needs numerical massaging Lacking detailed SQL and Session info OEM 10g Clearest, easiest, most powerful Overview Breakdown – Top SQL and Session Or Service, Module, Action, Objects, Files Drill downs Load chart - AAS SQL Session Plus ADDM – Automatic Database Diagnostics Monitor SQL Advisor – SQL tuning advice #.62 OEM 10g Perf Pages DB Home Performance Top Activity Session SQL #.63 #.64 In summary AAS is simple and Powerful AAS’s components are even more powerful CPU WAIT Value over Time Use # of CPUs as a yardstick Know your application load profile to see anomalies Monitor AAS with OEM 10g