关于SYS.AUDSES$的一点总结
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2009/04/about_sys_audses.html
链接: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 —
关键字: 基础知识


站内搜索