File Name
sess_blocking_tree.sql
Description
Displays Oracle databsae session blocking tree.
It support both single instance and RAC
Requirements
User needs SELECT privilege on following views
gv$instance
gv$session
Usage
Run with SQL*Plus or SQLcl
@sess_blocking_tree
-- ----------------------------------------------------------------------------------- -- File Name : sess_blocking_tree.sql -- Author : https://www.dbaplus.ca -- Description : Displays session blocking heirarchy -- Requirements : Access to the following views -- gv$instance -- gv$session -- Usage : @sess_blocking_tree -- Last Modified: 25-Nov-2024 -- ----------------------------------------------------------------------------------- set termout off -- ---------------------------------------------------- -- Save current SET variable -- ---------------------------------------------------- column v_set_save_file new_value V_SET_SAVE_FILE select 'tmp_SQLPlus_ENV_&_USER' v_set_save_file from dual; STORE SET &V_SET_SAVE_FILE replace -- ---------------------------------------------------- -- Save current NLS_DATE_FORMAT -- ---------------------------------------------------- column v_nls_date_format new_value V_NLS_DATE_FORMAT select sys_context('USERENV','NLS_DATE_FORMAT') v_nls_date_format from dual; -- ------------------------------------------------------------------------ -- Show INST_ID column when RAC database has more than one instance running -- ------------------------------------------------------------------------ column v_inst_id new_value V_INST_ID select decode(count(*),1,'','INST_ID,') v_inst_id from gv$instance; -- ------------------------------------------------------------------------ -- SET env variable -- ------------------------------------------------------------------------ set linesize 512 set pagesize 999 set verify off column username format a30 column osuser format a10 column machine format a25 alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; set termout on ----------------------------------------------------------------------------- SELECT level, LPAD(' ', (level-1)*2, ' ') || NVL(s.username, '(oracle)') AS username, s.osuser, &V_INST_ID s.sid, s.serial#, s.lockwait, s.status, s.module, s.machine, s.program, s.logon_Time from gv$session s where level > 1 or exists (select 1 from gv$session where blocking_session = s.sid and blocking_instance=s.inst_id) connect by prior s.sid = s.blocking_session and prior s.inst_id=s.blocking_instance start with s.blocking_session is null; --------------------------------------------- -- Restore SET variable and NLS_DATE_FORMAT --------------------------------------------- set termout off start &V_SET_SAVE_FILE alter session set nls_date_format='&V_NLS_DATE_FORMAT'; column v_set_save_file clear column v_nls_date_format clear column v_inst_id clear set termout on
No comments:
Post a Comment