Tool:
I have written a simple script to display io statistics from database. This script will help in measuring how much IO/MBPS is reaching to Oracle database. It can also help to troubleshoot if there is queuing happening somewhere. For example if SAN is delivering 500 MBPS throughput but if DBA’s are seeing only 350 MBPS on database then there is possibility of queuing happening somewhere at hardware/software level like volumes, file systems etc.
In Solaris/Linux nicstat can be used to see total bytes sent/received via hba/network card. In AIX similar statistics can be viewed using nmon (-n flag).
iostat.sql displays current io statistics
awr_iostat.sql display historical io statistics based on AWR.
RD – Read
WR – Write
IOPS – IO operations per second
1BLK – single block read
MBRC – multi block read count
MBPS – Megabytes per second (throughput)
Cac – Cache reads
DR – Direct
RDTM – Read in temporary tablespace
WRTM – Write in temporary tablespace
Example:
SQL> @iostat 10 10
|--Tot IOPS----|-APPL IOPS----|------TYPE---------|--Total MBPS--|--APPL MBPS---|---------Type MBPS-----------|
--------------------------------------------------------------------------------------------------------------|
|RD |WR |Tot |RD |WR |Tot |RD |RD |WR |WR |RD |WR |Tot |RD |WR |Tot |Cac |DR |DR |Cac |DR |DR |
|IOPS|IOPS|IOPS|IOPS|IOPS|IOPS|1BLK|MBRC|1BLK|MBRC|MBPS|MBPS|MBPS|MBPS|MBPS|MBPS|RD |RD |RDTM|WR |WR |WRTM|
--------------------------------------------------------------------------------------------------------------|
|2656| 1|2657|2656| 0|2656| 0|2656| 1| 0| 125| 0| 125| 125| 0| 125| 0| 0| 125| 0| 0| 0|
|2633| 1|2634|2633| 0|2633| 0|2633| 1| 0| 123| 0| 123| 123| 0| 123| 0| 0| 123| 0| 0| 0|
|2643| 1|2644|2643| 0|2643| 0|2643| 1| 0| 124| 0| 124| 124| 0| 124| 0| 0| 124| 0| 0| 0|
|2647| 1|2648|2647| 0|2647| 0|2647| 1| 0| 124| 0| 124| 124| 0| 124| 0| 0| 124| 0| 0| 0|
|2572| 1|2573|2572| 0|2572| 0|2572| 1| 0| 121| 0| 121| 121| 0| 121| 0| 0| 121| 0| 0| 0|
|2600| 1|2601|2600| 0|2600| 0|2600| 1| 0| 122| 0| 122| 122| 0| 122| 0| 0| 122| 0| 0| 0|
|2697| 1|2698|2697| 0|2697| 0|2697| 1| 0| 126| 0| 126| 126| 0| 126| 0| 0| 126| 0| 0| 0|
|2439| 1|2440|2439| 0|2439| 0|2439| 1| 0| 114| 0| 114| 114| 0| 114| 0| 0| 114| 0| 0| 0|
|2338| 1|2339|2338| 0|2338| 0|2338| 1| 0| 110| 0| 110| 110| 0| 110| 0| 0| 110| 0| 0| 0|
|2181| 1|2182|2181| 0|2181| 0|2181| 1| 0| 102| 0| 102| 102| 0| 102| 0| 0| 102| 0| 0| 0|
Output from nmon on AIX:
I/F Name Recv=KB/s Trans=KB/s
en8 114489.4 835.0
SQL> @awr_iostat.sql
Please enter start_date(mm/dd/yy) :01/05/11
Please enter end_date (mm/dd/yy) :01/06/11
old 2: where begin_interval_time>=to_date('&start_date','mm/dd/yy')
new 2: where begin_interval_time>=to_date('01/05/11','mm/dd/yy')
old 3: and begin_interval_time<=to_date('&end_date','mm/dd/yy')+1
new 3: and begin_interval_time<=to_date('01/06/11','mm/dd/yy')+1
SNAP_ID BEGIN_INTERVAL_TIME
---------- ---------------------------------------------------------------------------
1773 05-JAN-11 12.00.31.153 AM
1774 05-JAN-11 01.00.27.309 AM
1775 05-JAN-11 02.00.29.137 AM
1776 05-JAN-11 03.00.27.934 AM
1777 05-JAN-11 04.00.33.089 AM
1778 05-JAN-11 05.00.37.860 AM
1779 05-JAN-11 06.00.36.449 AM
1780 05-JAN-11 07.00.39.974 AM
1781 05-JAN-11 08.00.40.605 AM
1782 05-JAN-11 09.00.32.146 AM
1783 05-JAN-11 10.00.29.752 AM
1784 05-JAN-11 11.00.24.355 AM
1785 05-JAN-11 12.00.21.982 PM
1786 05-JAN-11 01.00.28.256 PM
1787 05-JAN-11 02.00.40.490 PM
1788 05-JAN-11 03.00.52.797 PM
1789 05-JAN-11 04.00.08.024 PM
1790 05-JAN-11 05.00.17.315 PM
1791 05-JAN-11 06.00.29.626 PM
1792 05-JAN-11 07.00.41.831 PM
1793 05-JAN-11 08.00.57.045 PM
1794 05-JAN-11 09.00.06.255 PM
1795 05-JAN-11 10.00.24.512 PM
1796 05-JAN-11 11.00.42.825 PM
1797 06-JAN-11 12.01.04.130 AM
1798 06-JAN-11 01.00.16.404 AM
1799 06-JAN-11 02.00.34.637 AM
1800 06-JAN-11 03.00.46.922 AM
1801 06-JAN-11 04.01.05.180 AM
1802 06-JAN-11 05.00.20.395 AM
1803 06-JAN-11 06.00.35.606 AM
1804 06-JAN-11 07.00.50.808 AM
1805 06-JAN-11 08.00.03.012 AM
1806 06-JAN-11 09.00.21.245 AM
34 rows selected.
Enter value for start snap_id :1773
Enter value for end snap_id :1806
PL/SQL procedure successfully completed.
-Timestamp-|--Tot IOPS-------|-APPL IOPS-------|------TYPE-------------|--Total MBPS--|--APPL MBPS---|---------Type MBPS----
-----------|----------------------------------------------------------------------------------------------------------------
-----------|RD |WR |Tot |RD |WR |Tot |RD |RD |WR |WR |RD |WR |Tot |RD |WR |Tot |Cac |DR |DR |Cac |DR
-----------|IOPS |IOPS |IOPS |IOPS |IOPS |IOPS |1BLK |MBRC |1BLK |MBRC |MBPS|MBPS|MBPS|MBPS|MBPS|MBPS|RD |RD |RDTM|WR |WR
----------------------------------------------------------------------------------------------------------------------------
01/05 01:00| 2776| 1828| 4604| 2774| 1828| 4602| 1381| 1395| 1| 1827| 103| 85| 188| 103| 85| 188| 18| 0| 85| 0|
01/05 02:00| 2654| 1749| 4403| 2652| 1748| 4400| 1320| 1334| 1| 1748| 98| 81| 179| 98| 81| 179| 17| 0| 81| 0|
01/05 03:00| 2666| 1790| 4456| 2664| 1789| 4453| 1322| 1345| 1| 1789| 101| 83| 184| 101| 83| 184| 18| 0| 83| 0|
01/05 04:00| 2609| 1768| 4377| 2607| 1767| 4374| 1297| 1313| 1| 1766| 97| 82| 179| 97| 82| 179| 15| 0| 82| 0|
01/05 05:00| 4280| 730| 5010| 4277| 730| 5007| 969| 3310| 1| 729| 175| 34| 209| 175| 34| 209| 7| 0| 168| 0|
01/05 06:00| 2933| 163| 3096| 2924| 126| 3050| 383| 2551| 6| 155| 125| 57| 182| 124| 29| 153| 0| 0| 124| 0|
01/05 07:00| 3620| 119| 3739| 3613| 92| 3705| 468| 3152| 5| 112| 154| 41| 195| 154| 21| 175| 0| 0| 154| 0|
01/05 08:00| 2363| 640| 3003| 2355| 612| 2967| 320| 2043| 10| 630| 120| 71| 191| 120| 47| 167| 0| 22| 97| 0|
01/05 09:00| 250| 1205| 1455| 246| 1197| 1443| 4| 246| 2| 1203| 57| 68| 125| 57| 61| 118| 0| 51| 6| 0|
01/05 10:00| 1031| 295| 1326| 1022| 231| 1253| 9| 1022| 7| 272| 48| 77| 125| 48| 50| 98| 0| 0| 48| 0|
01/05 11:00| 622| 802| 1424| 620| 801| 1421| 25| 597| 8| 793| 56| 58| 114| 56| 58| 114| 0| 31| 25| 0|
01/05 12:00| 1368| 1190| 2558| 1366| 1189| 2555| 3| 1365| 1| 1189| 110| 56| 166| 110| 56| 166| 0| 51| 59| 0|
01/05 13:00| 4038| 2| 4040| 4036| 1| 4037| 3| 4036| 1| 1| 189| 0| 189| 189| 0| 189| 0| 0| 189| 0|
01/05 14:00| 4037| 2| 4039| 4034| 1| 4035| 6| 4031| 1| 1| 189| 0| 189| 189| 0| 189| 0| 0| 189| 0|
01/05 15:00| 3969| 43| 4012| 3967| 15| 3982| 3| 3967| 1| 28| 186| 0| 186| 186| 0| 186| 0| 0| 186| 0|
01/05 16:00| 3698| 19| 3717| 3695| 18| 3713| 3| 3695| 1| 18| 237| 1| 238| 237| 1| 238| 0| 71| 166| 0|
01/05 17:00| 3246| 4| 3250| 3244| 3| 3247| 3| 3244| 1| 3| 160| 0| 160| 160| 0| 160| 0| 9| 151| 0|
01/05 18:00| 3450| 1| 3451| 3447| 0| 3447| 3| 3447| 1| 0| 162| 0| 162| 162| 0| 162| 0| 0| 162| 0|
01/05 19:00| 2641| 1| 2642| 2638| 0| 2638| 3| 2638| 1| 0| 124| 0| 124| 124| 0| 124| 0| 0| 124| 0|
01/05 20:00| 3000| 1| 3001| 2998| 0| 2998| 2| 2998| 1| 0| 141| 0| 141| 141| 0| 141| 0| 0| 141| 0|
01/05 21:00| 3625| 1| 3626| 3622| 1| 3623| 4| 3621| 1| 1| 170| 0| 170| 170| 0| 170| 0| 0| 170| 0|
01/05 22:00| 3609| 5| 3614| 3607| 4| 3611| 62| 3547| 2| 3| 174| 0| 174| 174| 0| 174| 9| 0| 165| 0|
01/05 23:00| 3550| 2| 3552| 3548| 1| 3549| 23| 3527| 1| 1| 175| 0| 175| 175| 0| 175| 11| 0| 164| 0|
01/06 00:01| 3287| 4| 3291| 3285| 3| 3288| 24| 3263| 1| 3| 167| 0| 167| 167| 0| 167| 16| 0| 151| 0|
01/06 01:00| 3556| 3| 3559| 3554| 2| 3556| 28| 3529| 1| 2| 179| 0| 179| 179| 0| 179| 15| 0| 164| 0|
01/06 02:00| 3623| 2| 3625| 3621| 1| 3622| 18| 3606| 1| 1| 181| 0| 181| 181| 0| 181| 13| 0| 168| 0|
01/06 03:00| 3709| 3| 3712| 3707| 2| 3709| 25| 3685| 1| 2| 179| 0| 179| 179| 0| 179| 7| 0| 172| 0|
01/06 04:01| 3350| 3| 3353| 3348| 2| 3350| 20| 3331| 1| 2| 172| 0| 172| 172| 0| 172| 18| 0| 154| 0|
01/06 05:00| 3710| 3| 3713| 3707| 3| 3710| 18| 3692| 1| 2| 188| 0| 188| 188| 0| 188| 17| 0| 171| 0|
01/06 06:00| 3898| 1| 3899| 3896| 0| 3896| 3| 3895| 1| 0| 183| 0| 183| 183| 0| 183| 0| 0| 183| 0|
01/06 07:00| 3702| 1| 3703| 3699| 1| 3700| 3| 3699| 1| 1| 174| 0| 174| 174| 0| 174| 0| 0| 173| 0|
01/06 08:00| 3611| 1| 3612| 3609| 0| 3609| 3| 3609| 1| 0| 169| 0| 169| 169| 0| 169| 0| 0| 169| 0|
01/06 09:00| 2681| 1| 2682| 2678| 0| 2678| 2| 2678| 1| 0| 126| 0| 126| 126| 0| 126| 0| 0| 126| 0|
SQL>