All versions no grants: select TO_NUMBER(SUBSTR(dbms_session.unique_session_id,1,4),'XXXX') from dual; 10g and up select SYS_CONTEXT( 'USERENV', 'SID' ) from dual; select USERENV('SID') from dual; All versions but need to grant select on v$mystat: select sid from v$mystat where rownum = 1 ; ========================================== does a session have an open transaction select s.sid from v$transaction t, v$session s where s.taddr=t.addr; or select DBMS_TRANSACTION.LOCAL_TRANSACTION_ID from dual;