ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【Oracle-数据库维护】-Oracle中USERENV和SYS_CONTEXT总结

【Oracle-数据库维护】-Oracle中USERENV和SYS_CONTEXT总结

原创 Linux操作系统 作者:sDon 时间:2010-11-26 18:48:34 0 删除 编辑
Oracle中USERENV和SYS_CONTEXT用来返回当前session的信息,其中,userenv是为了保持向下兼容的遗留函数,推荐使用sys_context函数调用userenv命名空间来获取相关信息。

1.USERENV因为是兼容的遗留函数,在10G中使用可能存在数据不唯一的问题
如:
SQL> SELECT LOGON_TIME, OSUSER, MACHINE, PROGRAM
2   FROM V$SESSION WHERE AUDSID = USERENV( 'SESSIONID' );
#可能存在多个返回值,
#如果使用sys帐号登录,每个SESSIONID将会一样,不太明白
2.SESSIONID受到AUDSES$'队列中的MAX_VALUE控制,SESSIONID在小于MAX_VALUE的cycle中循环
sys@8i> select * from user_sequences where sequence_name = 'AUDSES$';

SEQUENCE_N  MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
---------- ---------- ---------- ------------ - - ---------- -----------
AUDSES$             1 2000000000            1 Y N         20    10535706

sys@8i> select userenv('sessionid') from dual;

USERENV('SESSIONID')
--------------------
            10535689

3.因为重复问题,我们一般使用sys_context进行session环境查询
select  sys_contxt('userenv','sid' from dual
#
4.当然,如果你仅需要查看sid,也可以借助v$mystat视图
SQL> select * from v$mystat where rownum <=1;
 
       SID STATISTIC#      VALUE
---------- ---------- ----------
       307          0          1

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/645199/viewspace-680411/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-20

  • 博文量
    39
  • 访问量
    262879