Skip to content

Latest commit

 

History

History

sesspack_0.05_release

--------------------------------------------------------------------------------
--
-- Author:	Tanel Poder
-- Copyright:	(c) http://www.tanelpoder.com
-- 
-- Notes:	This software is provided AS IS and doesn't guarantee anything
-- 		Proofread before you execute it!
--
--------------------------------------------------------------------------------


================================================================================
SESSPACK v0.05 readme
================================================================================

About:

	Sesspack can be best described as session level statspack for Oracle.
	It collects less data than statspack, "only" the session level wait events
	and v$sesstat info and stores it in its repository.

	However Sesspack allows you to select the sampled sessions very flexibly,
	you can sample all sessions in an instance or only few, based on various
	conditions like SID, username, osuser, program, client machine, currently 
	effective module and action etc.

	Sesspack doesn't add extra instrumentation overhead to the database, it 
	just queries v$session_event, v$sesstat and few other views when executed.

	Note that with large number of sessions (1000+) you may want to sample
	sessions selectively to save disk space and reduce snapshot CPU usage

	For further information, see http://www.tanelpoder.com


Installation:

	1) Using SQLPLUS, log on as user who can *grant* access on V$ views (SYS for example)

	2) Create a user if want to have sesspack object in separate schema and grant connect to it

	3) run install_sesspack.sql <username> <password> <connect_string>

	   e.g. @install_sesspack sesspack mypassword prod01

	4) check sesspack_install.log

Usage example:

	Note that the reports require fairly wide linesize (120+)

	1) exec sesspack.snap_orauser('<USERNAME>')
	2) do some work
	3) exec sesspack.snap_orauser('<USERNAME>')
	4) @list
	5) @sr sid,program 1 2

	This will take snapshot 1 and 2 of user <USERNAME>


Reference:

  Taking snapshots:

	sesspack.snap_me			- snaps current session stats
	sesspack.snap_sid			- snaps given SIDs stats
	sesspack.snap_orauser('<orauser>')	- snaps all given ORACLE user's sessions's stats
	sesspack.snap_osuser('<osuser>')	- snaps all given OS user's sessions's stats
	sesspack.snap_program('<program>')	- snaps all given programs session stats
	sesspack.snap_machine('<machine>')	- snaps all given machines session stats 
	sesspack.snap_spid('spid')		- snaps all given SPID session stats 
	sesspack.snap_cpid('cpid')		- snaps all given client PID session stats 
	sesspack.snap_all			- snaps all session stats
	sesspack.snap_bg			- snaps background processes sessions stats
	sesspack.snap_fg			- snaps foreground processes sessions stats

	sesspack.snap_sidlist_internal('select sid from v$sesstat where <your custom conditions>')
						- snaps all SIDs returned by custom SQL

  Reporting performance data:

	list.sql	shows you snapshots with brief descriptions

	sr.sql	<grouping_col> <x> <y>	

			shows you the session event deltas between selected snapshots, grouped by a column

                Columns can be:

				1
				SID
				AUDSID
				SERIAL#
				USERNAME
				PROGRAM
				TERMINAL
				MACHINE
				OSUSER
				PROCESS

		To get a session-level resource usage breakdown, use:

			@sr sid <start> <end>

		To get resource usage summed and rolled up by client program nama, use:

			@sr program <start> <end>

		To get resource usage on sid level but you also want to see other data columns in output, 
		you can combine the columns:

			@sr program,module <start> <end>

		To sum up all measured resource consumption in the snap, use dummy column 1:

			@sr 1 <start> <end>



  Purging old data:

	1) exec sesspack.purge_data;	-- purges all data older than a week
	   or 
           exec sesspack.purge_data(<days_to_keep);
	2) commit;


  Customization:

	For disk space reasons ony the sesspack.snap_me procedure gathers all v$sesstat statistics.
	Other procedures gather session statistics based on 



Roadmap/Notes/bugs/issues:


v0.05
========

	fixes in gathering snaps & sr report
	Schema - large tables compressed IOTs
	performance report allows grouping by any field
	purge capability


v0.04
========
	customizable template-based session stats sampling
	more snap procedures

v0.03b
========
	Using V$SESSION_TIME_MODEL for getting if 10g+

v0.03
========
	Multi-session snapshots should work ok now
	I realized that standard-snapshots can't include all v$sesstat contents in snapshot by default - too much data generated
	This is ok though, as we usually need only CPU time from there anyway.

V0.02
========
	Lots.
	Test first with only single Oracle user session - with multiple simultaneous logged on sessions there's some cartesian join somewhere