Oacle 현재 세 션 (프로 세 스) 세 션 id (sid) 가 져 오기


댓 글:http://www.idb-stock.net/idb/2011/06/23/184.html
 
session id 는 일부 감사, 통계 분석 에서 매우 유용 하 다. 본 고 는 흔히 볼 수 있 는 Oacle session id 를 얻 는 방법 을 소개 한다.
1. v $mystat 보기에 서 oracle 현재 세 션 의 session id (sid) 를 가 져 옵 니 다.
view plain
copy to clipboard
print
?
select sid
  • from v$mystat

  • where rownum = 1;
    select sid
      from v$mystat
     where rownum = 1;
    

    2. userenv 함수 로 Oacle 현재 세 션 의 session id (sid) 를 가 져 옵 니 다.
    view plain
    copy to clipboard
    print
    ?
    select sid
  • from v$session

  • where audsid=userenv('sessionid');
    select sid
    from v$session
    where audsid=userenv('sessionid');
    

    특히 userenv ('sessionid') 는 sys 로 로그 인 한 사용자 에 게 제한 이 있 습 니 다. 호스트 에서 sys 로 로그 인 한 모든 사용자 의 audid 가 0 인 것 을 볼 수 있 습 니 다.
    $ sqlplus "/as sysdba"
    
    SQL*Plus: Release 9.2.0.7.0 - Production on Thu Jun 23 16:50:13 2011
    
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    
    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.7.0 - Production
    
    SQL> show user
    USER is "SYS"
    SQL> select t.SID,
      2         t.AUDSID,
      3         t.USERNAME
      4    from v$session t
      5   where t.USERNAME = 'SYS'
      6      or t.USERNAME is null
      7  ;
    
           SID     AUDSID USERNAME
    ---------- ---------- ------------------------------
             1          0
             2          0
             3          0
             4          0
             5          0
             6          0
             7          0
             8          0
            27          0 SYS
    
    9 rows selected.
    
    SQL> select userenv('sessionid') from dual;
    
    USERENV('SESSIONID')
    --------------------
                       0
    

    3. oracle 10g userenv ('sid') 로 session id (sid) 가 져 오기:
    view plain
    copy to clipboard
    print
    ?
    -- oracle 10g 이후 사용 가능
  • select userenv('sid') from dual;
  • --oracle 10g      
    select userenv('sid') from dual;
    

    4. dbms 사용session.unique_session_id 현재 세 션 의 session id (sid) 가 져 오기:
    dbms_session.unique_session_id 는 모두 20 비트 로 되 돌아 갑 니 다. 그 중에서 4 위 는 session id 이 고 5 ~ 8 위 는 serial \ # 입 니 다. 구체 적 인 예 는 Oacle 각 사용자 의 사무 수 를 통계 하 는 것 을 참고 하 십시오.
    view plain
    copy to clipboard
    print
    ?
    select
  • to_number(substrb(dbms_session.unique_session_id,1,4),'xxxx') sid,

  • to_number(substrb(dbms_session.unique_session_id,5,4),'xxxx') audsid
  • from dual;
  • select
    to_number(substrb(dbms_session.unique_session_id,1,4),'xxxx') sid,
    to_number(substrb(dbms_session.unique_session_id,5,4),'xxxx') audsid
    from dual;
    
    SQL> select
      2  to_number(substrb(dbms_session.unique_session_id,1,4),'xxxx') sid,
      3  to_number(substrb(dbms_session.unique_session_id,5,4),'xxxx') audsid
      4  from dual;
    
           SID     AUDSID
    ---------- ----------
            27       7651
    
    SQL>
    

    좋은 웹페이지 즐겨찾기