查看当前会话的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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)