如何取得Oracle当前会话的ID

如何取得Oracle当前会话的ID,第1张

查看当前会话的session ID 有如下三种方法:

1 v$mystat视图

SQL> select sid from v$mystat where rownum=1;

SID

----------

1152

2 使用userenv(‘sid’) 直接获取

这种方法只能在oracle 10g以后可以使用。

SQL> select userenv('sid') from dual;

USERENV('SID')

--------------

1152

3 结合 userenv('sessionid') 与 v$session 视图

userenv('sessionid') 返回的是session audit id其对应v$session 的audsid字段。

在session 连接到数据库的时候,会从SYSAUDSES$序列中获取一个audid 分配给session。

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

SID

----------

773

1152

--这里返回了2个值,直接查看userenv('sessionid') 值:

SQL> select userenv('sessionid') from dual;

USERENV('SESSIONID')

--------------------

4294967295

对于internal用户(’/as sysoper’ 和 ‘/as sysdba’)和后台进程,其对应的AUDID 为0

在Oracle 10g中,如果AUDID的值为0,表明是internal 用户,如果AUDID 值是4294967295,那么就表明是用SYS 用户直接连接的。

这里返回三个结果是把所有SYS 用户的session都返回了,所以这种方法有时的准确性并不高。

在PHPINI里面有一项sessionsave_path,就是设置session保存位置的。

session是通过cookie来实现的,当浏览器访问一个页面时,php发现在cookie里面没有sessionid这个值,就会产生一个sessionid出来,同时对应一个服务器里面的session文件。然后通过cookie传给浏览器(通过cookie),下次浏览器再访问页面的时候,就会把这个sessionid给带上(也是cookie),然后php通过这个cookie找到对应的session文件,读取session的值。

也就是说如果用户关了cookie那session就用不了了。

以上就是session的原理,不过一般来说你也不需要了解它。

session_id('你获得的sessionId'); session_start(); var_dump($_SESSION); //你获得的sessionId 对应的session当前服务器可获得的情况

以上就是关于如何取得Oracle当前会话的ID全部的内容,包括:如何取得Oracle当前会话的ID、net 怎么能获取站点所有的sessionId 在全局文件的Session、怎么通过sessionid获取session等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9543849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存