当前位置: DBARoad > 基础知识 > 文章正文

关于SYS.AUDSES$的一点总结

                    作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
                    链接:http://www.dbaroad.me/archives/2009/04/about_sys_audses.html

V$SESSION中的AUDSID是会话连接到Oracle数据库的识别标志之一。我们可以在当前会话中使用USERENV(’SESSIONID’)来获得自己的AUDSID,而AUDSID,其实是从SYS.AUDSES$这个SEQUENCE中获取的。

SQL> show user
USER is "ROCKEY"
SQL> select userenv('sessionid') from dual;
 
USERENV('SESSIONID')
--------------------
                 530
 
###########################################
 
SQL> show user
USER is "SYS"
SQL> select sid,serial#,audsid from v$session where username='ROCKEY';
 
       SID    SERIAL#     AUDSID
---------- ---------- ----------
        11      14998        530
 
SQL> select sys.audses$.nextval from dual;
 
   NEXTVAL
----------
       531

然而不是所有的会话都有获得AUDSID,后台进程以及以SYSDBA等连接的用户,AUDSID都为0:

SQL> SELECT AUDSID,USERNAME,TYPE,PROGRAM
  2  FROM V$SESSION WHERE AUDSID=0;
 
    AUDSID USERNAME        TYPE       PROGRAM
---------- --------------- ---------- -------------------------
         0                 BACKGROUND oracle@erdb-p01 (PMON)
         0                 BACKGROUND oracle@erdb-p01 (DBW0)
         0                 BACKGROUND oracle@erdb-p01 (DBW1)
         0                 BACKGROUND oracle@erdb-p01 (LGWR)
         0                 BACKGROUND oracle@erdb-p01 (CKPT)
         0                 BACKGROUND oracle@erdb-p01 (SMON)
         0                 BACKGROUND oracle@erdb-p01 (RECO)
         0                 USER       oracle@erdb-p01 (CJQ0)
         0                 BACKGROUND oracle@erdb-p01 (ARC0)
         0                 BACKGROUND oracle@erdb-p01 (ARC1)
         0 SYS             USER       sqlplus@erdb-p01 (TNS V1-
                                      V3)
 
 
11 rows selected.

在RAC环境中,如果短时间内有频繁的连接,有时会因为SYS.AUDSES$的CACHE_SIZE太小,而导致数据库HANG住的情况。而这一BUG在10.2.0.3中被修正。10.2.0.3以前,SYS.AUDSES$的CACHE_SIZE默认为20,而在10.2.0.3以后,则修改为10000:

SQL> select * from v$version where rownum < 2;
 
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
 
SQL> select sequence_owner,sequence_name,cache_size
  2  from dba_sequences
  3  where sequence_name='AUDSES$';
 
SEQUENCE_OWNER                 SEQUENCE_NAME                  CACHE_SIZE
------------------------------ ------------------------------ ----------
SYS                            AUDSES$                                20
 
SQL> select * from v$version where rownum < 2;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
 
SQL> select sequence_owner,sequence_name,cache_size
  2  from dba_sequences
  3  where sequence_name='AUDSES$';
 
SEQUENCE_OWNER                 SEQUENCE_NAME                  CACHE_SIZE
------------------------------ ------------------------------ ----------
SYS                            AUDSES$                             10000

— The End —

关键字:
喜欢DBARoad的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露


  • 订阅


      抓虾
      google reader
      my yahoo
      bloglines
      鲜果
      有道

站内搜索



返回首页 | 关于我 | 联系我 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |