In most of my previous posts I provided some perl scripts used to collect real-time information from the database based on cumulative views.
Those cumulative views provide a lot of useful information but are useless when real-time information is needed.
So, the idea of those utilities is more or less to take a snapshot each second (default interval) of the cumulative views and compute the differences with the previous snapshot to get real-time information.
I aggregated those perl scripts into a single one (real_time.pl) (Click on the link, and then on the view source button and then copy/paste the source code or download it from my shared directory here) :
- You can choose the number of snapshots to display and the time to wait between snapshots.
- This script is oracle RAC aware: you can work on all the instances, a subset or the local one.
- You have to set oraenv on one instance of the database you want to diagnose first.
- The script has been tested on Linux, Unix and Windows.
Let’s have a look to the main help:
./real_time.pl -help
Usage: ./real_time.pl [-interval] [-count] [-type] [-help]
Default Interval : 1 second.
Default Count : Unlimited
Parameter Value Comment
--------- ------- -------
-type sysstat Real-Time snaps extracted from gv$sysstat
system_event Real-Time snaps extracted from gv$system_event
event_histogram Real-Time snaps extracted from gv$event_histogram
sgastat Real-Time snaps extracted from gv$sgastat
enqueue_statistics Real-Time snaps extracted from gv$enqueue_statistics
librarycache Real-Time snaps extracted from gv$librarycache
segments_stats Real-Time snaps extracted from gv$segstat
sess_event Real-Time snaps extracted from gv$session_event and gv$session
sess_stat Real-Time snaps extracted from gv$sesstat and gv$session
-help Print the main help or related to a type (if not empty)
Description:
-----------
Utility used to display real time informations based on cumulative views
It basically takes a snapshot each second (default interval) of the cumulative view and computes the differences with the previous snapshot
It is oracle RAC aware: you can work on all the instances, a subset or the local one
You have to set oraenv on one instance of the database you want to diagnose first
You can choose the number of snapshots to display and the time to wait between snapshots
Example: ./real_time.pl -type=sysstat -help
Example: ./real_time.pl -type=system_event -help
So, as you can see it allows to deal with some type of snapshots, that is to say:
sysstat Real-Time snaps extracted from gv$sysstat
system_event Real-Time snaps extracted from gv$system_event
event_histogram Real-Time snaps extracted from gv$event_histogram
sgastat Real-Time snaps extracted from gv$sgastat
enqueue_statistics Real-Time snaps extracted from gv$enqueue_statistics
librarycache Real-Time snaps extracted from gv$librarycache
segments_stats Real-Time snaps extracted from gv$segstat
sess_event Real-Time snaps extracted from gv$session_event and gv$session
sess_stat Real-Time snaps extracted from gv$sesstat and gv$session
Each type has its own help associated.
To get more help about a particular type, just call the help with the associated type:
./real_time.pl -type=sysstat -help
Usage: ./real_time.pl -type=sysstat [-interval] [-count] [-inst] [-top] [-statname] [-help]
Default Interval : 1 second.
Default Count : Unlimited
Parameter Comment Default
--------- ------- -------
-INST= ALL - Show all Instance(s) ALL
CURRENT - Show Current Instance
INSTANCE_NAME,... - choose Instance(s) to display
-TOP= Number of rows to display 10
-STATNAME= ALL - Show all STATS (wildcard allowed) ALL
Example: ./real_time.pl -type=sysstat
Example: ./real_time.pl -type=sysstat -inst=BDTO_1,BDTO_2
Example: ./real_time.pl -type=sysstat -statname='bytes sent via SQL*Net to client'
Example: ./real_time.pl -type=sysstat -statname='%bytes%'
Conclusion:
There is no need anymore to use the “individuals” perl scripts provided so far, as they have been grouped into this main utility.
Two perl scripts still remain outside this main utility as they are not related to database cumulative views, that is to say:
- exadata_metrics.pl : This perl script is used to collect exadata cell’s real-time metrics based on cumulative metrics. You can find a practical case in the Exadata real-time metrics extracted from cumulative metrics post.
- os_cpu_per_db.pl : This perl script is used to collect real-time cpu utilization per database . You can find a practical case in the Real-Time CPU utilization per oracle database post.
Please do not hesitate to give your feedback and report any issues you may found.
Update: real_time.pl now contains asmiostat type (see this post)