#!/usr/bin/ksh
# whatsession ()
#------------------------------------------------------------------------------#
#    Module Name:  whatsession  (c) 2012                                       #
#                                                                              #
#    Purpose:      Report on the v$SESSION.                                    #
#                                                                              #
#    Maintenance                                                               #
#    Date          Author        Description                                   #
#    -----------   ------------  --------------------------------------------  #
#    12-May-2009   M.Barone      Module design/creation                        #
#------------------------------------------------------------------------------#
{
        DIRNAM=$(dirname $0)
        ORASID=$(echo $CONTEXT_NAME | cut -f1 -d'_')
        HNAME=$(uname -n)
 
        clear
        #----------------------------------------------------------------------#
        #  TEST:  Number ($#) of arguments passed to this function?            #
        #----------------------------------------------------------------------#
        if      [ $# = 0 ]
        then
            clear
            echo
            echo  " #--------------------------------------------------------#"
            echo  " # whatsession:               Oracle Session Information  #"
            echo  " #--------------------------------------------------------#"
            echo
 
            echo  " Connecting as SYSDBA"
            sleep 2
 
            clear
        else
            SEARCH=$1
            clear
        fi
 
        ORANAM=${ORASID}
 
#------------------------------------------------------------------------------#
#  SQL*Plus ("Here-Document")                                                  #
#------------------------------------------------------------------------------#
sqlplus  -s  /nolog  <<-END_FILE
 
        CONNECT  /  as  SYSDBA
 
        clear   BREAKS
        clear   BUFFER
        clear   COLUMNS
        clear   COMPUTES
        clear   SCREEN
        clear   SQL
        clear   TIMING
 
        set     feedback        on
        set     flush           on
        set     heading         on
        set     pause           off
        set     space           1
        set     termout         on
        set     verify          on
        set     linesize        80
        set     pagesize        999
 
        SPOOL /tmp/whatsession_$$.txt
 
        COLUMN datevalue NOPRINT NEW_VALUE DATEVAR
        COLUMN timevalue NOPRINT NEW_VALUE TIMEVAR
        COLUMN osuser   FORMAT A09      Heading 'OS User'
        COLUMN username FORMAT A10      Heading 'User|Name'
        COLUMN spid     FORMAT A06      Heading 'UNIX|Proc|ID'
        COLUMN audsid   FORMAT 999999999 Heading 'AppsTier|AUDSid'
        COLUMN sid      FORMAT 99999    Heading 'Oracle|System|SID'
        COLUMN serial#  FORMAT 99999    Heading 'Oracle|Serial|Number'
        COLUMN program  FORMAT A18      Heading 'Program'  WORD_WRAPPED
        COLUMN status   FORMAT A08      Heading 'Status'
 
        TTITLE LEFT DATEVAR -
        RIGHT 'Page:' FORMAT 999 SQL.pno -
        CENTER '$(uname -n) ${ORACLE_SID} DBA Report'   skip 1 -
        LEFT TIMEVAR -
        CENTER 'Oracle Current Session(s)'              skip 1 -
        CENTER 'whatsession'                            skip 2
 
        SELECT  TO_CHAR(sysdate, 'DD-MON-YY') datevalue,
                TO_CHAR(sysdate, 'HH24:MI-SS') timevalue,
                SES.osuser,
                SES.username,
                PRO.spid,
                SES.sid,
                SES.audsid,
                SES.serial#,
                SES.program,
                SES.status
        FROM    sys.V\$SESSION SES,
                sys.V\$PROCESS PRO
        WHERE SES.PADDR = PRO.ADDR (+)
        ORDER  BY  SES.osuser, SES.username, SES.sid;
 
EXIT;
 
END_FILE
 
print
print "Please see /tmp/whatsession_$$.txt"
print
}

