一、概述:


          今天在齐鲁IT联盟群里一哥们问,v$sesion和v$license中sessions_current的区别,情况如下所示

点击(此处)折叠或打开

  1. SQL> select banner from v$version;


  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.4.- 64bit Production
  5. PL/SQL Release 11.2.0.4.- Production
  6. CORE 11.2.0.4.0 Production
  7. TNS for Linux: Version 11.2.0.4.- Production
  8. NLSRTL Version 11.2.0.4.- Production


  9. SQL> select SESSIONS_CURRENT,SESSIONS_HIGHWATER from v$license;


  10. SESSIONS_CURRENT SESSIONS_HIGHWATER
  11. ---------------- ------------------
  12.                3 11


  13. SQL> select count(*) from v$session where status=\\\'ACTIVE\\\'; 


  14.   COUNT(*)
  15. ----------
  16.         24


 问题:怎么查出来这两个差别这么大啊?(此处并非当时数据,相对会话数比较少),其实本人之前并未查看过v$license视图,借此机会了解一下


二:处理过程:
    
首先去官方查看了两个视图的解释,具体如下:
    
视图名字
 描述
v$license
This view contains information about license limits
v$session
 This view lists session information for each current session

好,我们再看其中v$license列的信息


点击(此处)折叠或打开

  1. SESSIONS_MAX NUMBER Maximum number of concurrent user sessions allowed for the instance
  2. SESSIONS_WARNING NUMBER Warning limit for concurrent user sessions for the instance
  3. SESSIONS_CURRENT NUMBER Current number of concurrent user sessions
  4. SESSIONS_HIGHWATER NUMBER Highest number of concurrent user sessions since the instance started
  5. USERS_MAX NUMBER Maximum number of named users allowed for the database
  6. ………………………………

从上面信息我们可以得知,v$license主要用途为查看授权限制及相关信息,我们可以通过它活动历史最大会话数(sessions_highwater),及用户当前会话数(sessions_current)。


OK,下面我们看一下下面的查询结果:

点击(此处)折叠或打开

  1. SQL> select SESSIONS_CURRENT,SESSIONS_HIGHWATER from v$license;


  2. SESSIONS_CURRENT SESSIONS_HIGHWATER
  3. ---------------- ------------------
  4.                4 11


  5. SQL> select count(*),type,status from v$session group by type,status;


  6.   COUNT(*) TYPE STATUS
  7. ---------- ---------- --------
  8.          3 USER INACTIVE
  9.          1 USER ACTIVE
  10.         21 BACKGROUND ACTIVE


通过上面的查询结果,我们可以看出session_current=v$session 用户会话数=USER(TYPE)=ACTIVE+INACTIVE,也就是session_current不包含Oracle系统会话(后台活动)数。




三、总结


   简单几条查询语句,说明了它们的关系,其实动动脑再动动手好多问题都很容易的被解决,那句话真好,态度决定一切,不管何时,希望自己端正好态度,好好加油。


                                
     --文盲筱烨 2015年6月10日 周三晚

10-22 22:29