SET LINES 150

SET PAGES 1000

SET VERIFY OFF

SET FEEDBACK OFF

SET HEADING ON

SET TRIMSPOOL ON

SET LONG 10000

SET LONGCHUNKSIZE 10000


PROMPT ===================================================

PROMPT       Oracle RAC Session Monitor - Full Version

PROMPT ===================================================


-- Step 1: Input Method

PROMPT Choose input method:

PROMPT Enter 'U' for Username or 'S' for SID/SERIAL#

ACCEPT input_method CHAR DEFAULT 'U'


-- Variables Initialization

DEFINE sid = ''

DEFINE serial = ''

DEFINE instid = 1

DEFINE username = ''

DEFINE sqlid = ''


PROMPT


-- Step 2: If Username mode, accept username and list sessions

PROMPT Enter Username (leave blank if using SID/SERIAL#):

ACCEPT username CHAR


COLUMN inst_id_col NEW_VALUE instid

COLUMN sid_col NEW_VALUE sid

COLUMN serial_col NEW_VALUE serial


SELECT inst_id, sid, serial#, status, program, module, sql_id, event

FROM gv$session

WHERE username = UPPER('&username')

ORDER BY inst_id, sid;


PROMPT


-- Step 3: Accept SID, SERIAL#, and INST_ID

PROMPT Enter SID:

ACCEPT sid NUMBER


PROMPT Enter SERIAL#:

ACCEPT serial NUMBER


PROMPT Enter INST_ID (default 1):

ACCEPT instid NUMBER DEFAULT 1


-- Validation

BEGIN

  IF '&sid' IS NULL OR LENGTH(TRIM('&sid')) = 0 THEN

    DBMS_OUTPUT.PUT_LINE('No SID entered. Exiting.');

    RAISE_APPLICATION_ERROR(-20001, 'Exiting script.');

  END IF;

  IF '&serial' IS NULL OR LENGTH(TRIM('&serial')) = 0 THEN

    DBMS_OUTPUT.PUT_LINE('No SERIAL# entered. Exiting.');

    RAISE_APPLICATION_ERROR(-20002, 'Exiting script.');

  END IF;

END;

/


-- Step 4: Get SQL_ID(s) for session

COLUMN sql_id_col NEW_VALUE sqlid

SELECT DISTINCT sql_id

FROM gv$session

WHERE sid = &sid AND serial# = &serial AND inst_id = &instid

  AND sql_id IS NOT NULL;


PROMPT SQL_ID(s) found for session &sid.&serial on instance &instid:

SEL


Popular posts from this blog