Performance Tools and Monitoring
Performance Tools and Monitoring
Monitoring
By: Karl Arao
edb360
o This tool gives the full configuration details of a database.
esp
o Collects the resource requirements of the database (CPU, memory,
storage, IO performance) which can be used for consolidation, sizing,
and capacity planning.
run_awr
o Set of scripts used for Performance Tuning, Capacity Planning and
Sizing, this tool capture more details about the historical time series
SQL performance and workload statistics.
ash_now
o Captures the past 5 minutes database activity.
ash_history
o Similar to ash_now but historical. It ask for the START and END periods
and shows the performance activity.
sqlmon
o List the currently running SQLs and active sessions
snapper
o A session-level performance measurement tool which is very useful for
ad-hoc performance diagnosis.
ash_wait_chains
o Shows the multi-session wait signature useful for showing a session
waiting for another session or process
gen_awr_report
o Generate AWR report and spool to the SQL Developer directory
C:\Users\<user>\AppData\Roaming\SQL Developer
gen_ash_report
o Generate ASH report and spool to the SQL Developer directory
C:\Users\<user>\AppData\Roaming\SQL Developer
sqlhc
o SQL Health Check tool checks the environment in which a single SQL
Statement runs, Cost-based Optimizer (CBO) statistics, schema object
metadata, configuration parameters
planx
o a simpler version of SQLHC
Pre-req
Download the latest version of SQL Developer at
http://www.oracle.com/technetwork/developer-tools/sqldeveloper/downloads/index.html
run_awr
Download at https://github.com/karlarao/run_awr-quickextract/archive/master.zip
$ unzip run_awr-quickextract-master.zip
$ cd run_awr-quickextract-master
$ sh run_awr
Session troubleshooting
Download at https://github.com/karlarao/scripts/archive/master.zip
sqlmon
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @sqlmon
SQL Developer
ash_now
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @ash_now
SQL Developer
Other commands
-- to get what part of the execution plan the SQL is spending most of its time
@@ashtop
inst_id,session_id,username,program,sql_id,sql_plan_hash_value,plsql_entry_object_id,sql_p
ql_plan_line_id session_type='FOREGROUND' sysdate-5/24/60 sysdate
ash_history
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> exec dbms_workload_repository.create_snapshot;
SQL> @ash_history
CURRENT_TIME
------------------2015-12-08 22:44:13
Enter start YYYY-MM-DD HH24:MI:SS -> 2015-12-08 22:30:00
Enter end YYYY-MM-DD HH24:MI:SS -> 2015-12-08 22:44:13
SQL Developer
snapper
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @snapper ash 5 1 all@*
SQL Developer
Other commands
-- high level ASH workload characterization across instances
@snapper ash 5 1 all@*
-- by SID on instance 1
@snapper "ash=sql_id+sid+event+wait_class+module+service+blocking_session+p2+p3,stats" 5 1
-- by inst_id,sid tuple syntax .. snapper on inst 2, SID 1234
@snapper ash 5 1 (2,1234)
-- comma separate to pass multiple inst_id,SID tuples
@snapper ash 5 1 (2,1234),(4,5678),(3,999)
-- snapper QC_ID run from any instance
@snapper ash 5 1 qc=1234@*
ash_wait_chains
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @ash_wait_chains.sql session_id||'>>'||program||'>>'||event||'>>'||sql_id||'>>'||sql_
p1||'>>'||blocking_session 1=1 sysdate-1/24/60 sysdate
-- Display ASH Wait Chain Signatures script v0.2 BETA by Tanel Poder ( http://blog.tanelpo
%This
SECONDS
AAS
------ ---------- ---------WAIT_CHAIN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------100%
60
1
-> 158>>[email protected] (TNS V1-V3)>>enq: TX - row lock contention>>24afhzrp5w
mode>>1415053318>>245
SQL Developer
Other commands
-- using TIMESTAMP
@<the script> username||':'||program2||event2 session_type='FOREGROUND' "TIMESTAMP'2014-11
11-19 18:00:00'"
gen_awr_report
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @gen_awr_report
Listing latest AWR snapshots ...
SNAP_ID
---------1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
END_INTERVAL_TIME
--------------------------------------------------------------------------08-DEC-15 09.00.28.556 AM
08-DEC-15 10.00.30.134 AM
08-DEC-15 11.00.31.726 AM
08-DEC-15 12.00.33.313 PM
08-DEC-15 01.00.34.890 PM
08-DEC-15 02.00.36.471 PM
08-DEC-15 03.00.38.058 PM
08-DEC-15 04.00.39.644 PM
08-DEC-15 05.00.41.210 PM
08-DEC-15 05.26.43.221 PM
08-DEC-15 05.31.13.244 PM
08-DEC-15 07.00.44.373 PM
08-DEC-15 08.00.45.943 PM
08-DEC-15 09.00.47.533 PM
08-DEC-15 10.00.49.614 PM
08-DEC-15 10.44.07.797 PM
08-DEC-15 10.51.33.849 PM
08-DEC-15 10.52.33.672 PM
09-DEC-15 12.00.52.767 AM
09-DEC-15 01.00.54.343 AM
09-DEC-15 02.00.55.901 AM
09-DEC-15 03.00.57.474 AM
09-DEC-15 04.00.59.054 AM
09-DEC-15 05.00.00.634 AM
09-DEC-15 06.00.02.232 AM
SQL Developer
Hit cancel first to list the SNAP_IDs, then re-run the script
Go to the C:\Users\<user>\AppData\Roaming\SQL Developer to get the report
gen_ash_report
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @gen_ash_report
Enter begin time [2015-12-09 07:11]: 2015-12-09 07:11
Enter
end time [2015-12-09 08:11]: 2015-12-09 08:11
PL/SQL procedure successfully completed.
Spooling into ash_report.html
Done.
SQL Developer
SQL troubleshooting
Download at https://github.com/karlarao/scripts/archive/master.zip
sqlhc
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @sqlhc T 9fx889bgz15h3
planx
Command line
$ cd scripts-master/performance/
$ sqlplus / as sysdba
SQL> @planx Y 9fx889bgz15h3
SQL Developer