暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle RAC中的sys_context返回会话id

askTom 2017-03-10
278

问题描述

嗨,
在RAC oracle环境中,可以说具有相同会话id的多个实例正在运行,那么在不影响性能的情况下从gv $ session获取会话ID的最佳方法是什么?sys_context('userenv','sessionid') 会返回什么?

专家解答

执行计划表明SID可能比AUDSID更好 (这就是sessionid)

SQL> select * from gv$session where sid = 123;

Execution Plan
----------------------------------------------------------
Plan hash value: 1627146547

---------------------------------------------------------------------------------------------
| Id  | Operation                 | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                 |     1 |   372 |     0   (0)| 00:00:01 |
|   1 |  MERGE JOIN CARTESIAN     |                 |     1 |   372 |     0   (0)| 00:00:01 |
|   2 |   NESTED LOOPS            |                 |     1 |   120 |     0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FIXED INDEX| X$KSLWT (ind:1) |     1 |    55 |     0   (0)| 00:00:01 |
|*  4 |    FIXED TABLE FIXED INDEX| X$KSLED (ind:2) |     1 |    65 |     0   (0)| 00:00:01 |
|   5 |   BUFFER SORT             |                 |     1 |   252 |     0   (0)| 00:00:01 |
|*  6 |    FIXED TABLE FIXED INDEX| X$KSUSE (ind:1) |     1 |   252 |     0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("W"."KSLWTSID"=123)
   4 - filter("W"."KSLWTEVT"="E"."INDX")
   6 - filter("S"."INDX"=123 AND BITAND("S"."KSSPAFLG",1)<>0 AND
              BITAND("S"."KSUSEFLG",1)<>0)

SQL> select * from gv$session where audsid = 123123;

Execution Plan
----------------------------------------------------------
Plan hash value: 3425234845

---------------------------------------------------------------------------------------------
| Id  | Operation                 | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                 |     1 |   372 |     0   (0)| 00:00:01 |
|   1 |  NESTED LOOPS             |                 |     1 |   372 |     0   (0)| 00:00:01 |
|   2 |   NESTED LOOPS            |                 |     1 |   307 |     0   (0)| 00:00:01 |
|   3 |    FIXED TABLE FULL       | X$KSLWT         |    31 |  1705 |     0   (0)| 00:00:01 |
|*  4 |    FIXED TABLE FIXED INDEX| X$KSUSE (ind:1) |     1 |   252 |     0   (0)| 00:00:01 |
|*  5 |   FIXED TABLE FIXED INDEX | X$KSLED (ind:2) |     1 |    65 |     0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - filter("S"."INDX"="W"."KSLWTSID" AND "S"."KSUUDSES"=123123 AND
              BITAND("S"."KSSPAFLG",1)<>0 AND BITAND("S"."KSUSEFLG",1)<>0)
   5 - filter("W"."KSLWTEVT"="E"."INDX")
复制


因此,也许SID,INST_ID的组合,但您可能会带来SESSIONID以及 “SERIAL #” 的代理
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论